parent
6e511109ec
commit
e8d2881a72
4 changed files with 65 additions and 3 deletions
@ -0,0 +1,52 @@ |
|||||||
|
package types |
||||||
|
|
||||||
|
import ( |
||||||
|
"bytes" |
||||||
|
"sort" |
||||||
|
"testing" |
||||||
|
) |
||||||
|
|
||||||
|
// rdbTypeSet 0
|
||||||
|
// rdbTypeSetIntset 11
|
||||||
|
// rdbTypeSetListpack 20
|
||||||
|
|
||||||
|
func testOne(t *testing.T, typeByte byte, setData string, values []string) { |
||||||
|
if typeByte != setData[0] { |
||||||
|
t.Errorf("typeByte not match. typeByte=[%d]", typeByte) |
||||||
|
} |
||||||
|
o := new(SetObject) |
||||||
|
o.LoadFromBuffer(bytes.NewReader([]byte(setData[1:])), "key", typeByte) |
||||||
|
if len(o.elements) != len(values) { |
||||||
|
t.Errorf("elements not match. len(o.elements)=[%d], len(values)=[%d]", len(o.elements), len(values)) |
||||||
|
} |
||||||
|
count := len(o.elements) |
||||||
|
sort.Strings(o.elements) |
||||||
|
sort.Strings(values) |
||||||
|
// check set
|
||||||
|
for i := 0; i < count; i++ { |
||||||
|
if o.elements[i] != values[i] { |
||||||
|
t.Errorf("elements not match. o.elements[i]=[%s], values[i]=[%s]", o.elements[i], values[i]) |
||||||
|
} |
||||||
|
} |
||||||
|
} |
||||||
|
|
||||||
|
// sadd key 1 2 3 4 q w e r
|
||||||
|
func TestSetListpack(t *testing.T) { |
||||||
|
data := "\x14\x1b\x1b\x00\x00\x00\b\x00\x81w\x02\x81r\x02\x04\x01\x81e\x02\x01\x01\x02\x01\x81q\x02\x03\x01\xff\x0b\x00T\xe9)\xf7*\xe0\xe3\xf9" |
||||||
|
values := []string{"1", "2", "3", "4", "q", "w", "e", "r"} |
||||||
|
testOne(t, rdbTypeSetListpack, data, values) |
||||||
|
} |
||||||
|
|
||||||
|
// sadd key 1 2 3 4 5 6 7 8
|
||||||
|
func TestSetIntset(t *testing.T) { |
||||||
|
data := "\x0b\x18\x02\x00\x00\x00\b\x00\x00\x00\x01\x00\x02\x00\x03\x00\x04\x00\x05\x00\x06\x00\a\x00\b\x00\x0b\x00\xd7\x03\xf0nIZV\x8d" |
||||||
|
values := []string{"1", "2", "3", "4", "5", "6", "7", "8"} |
||||||
|
testOne(t, rdbTypeSetIntset, data, values) |
||||||
|
} |
||||||
|
|
||||||
|
// sadd key 1 2 3 4 q w e r
|
||||||
|
func TestSet(t *testing.T) { |
||||||
|
data := "\x02\b\xc0\x04\x01r\x01w\xc0\x02\xc0\x01\xc0\x03\x01q\x01e\t\x00r\x99O\xba\x8c\x8f\x00\xcb" |
||||||
|
values := []string{"1", "2", "3", "4", "q", "w", "e", "r"} |
||||||
|
testOne(t, rdbTypeSet, data, values) |
||||||
|
} |
Loading…
Reference in new issue