Make kvtests legible
This commit is contained in:
parent
744d035d95
commit
d0d1a96517
|
@ -14,6 +14,20 @@ func GetDBs() []SimpleDB {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func b(k string) []byte {
|
||||||
|
if k == "" {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
return []byte(k)
|
||||||
|
}
|
||||||
|
|
||||||
|
func m(k, v string) Model {
|
||||||
|
return Model{
|
||||||
|
Key: b(k),
|
||||||
|
Value: b(v),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// TestKVStore makes sure that get/set/remove operations work,
|
// TestKVStore makes sure that get/set/remove operations work,
|
||||||
// as well as list
|
// as well as list
|
||||||
func TestKVStore(t *testing.T) {
|
func TestKVStore(t *testing.T) {
|
||||||
|
@ -21,7 +35,7 @@ func TestKVStore(t *testing.T) {
|
||||||
|
|
||||||
type listQuery struct {
|
type listQuery struct {
|
||||||
// this is the list query
|
// this is the list query
|
||||||
start, end []byte
|
start, end string
|
||||||
limit int
|
limit int
|
||||||
// expected result from List, first element also expected for First
|
// expected result from List, first element also expected for First
|
||||||
expected []Model
|
expected []Model
|
||||||
|
@ -37,69 +51,51 @@ func TestKVStore(t *testing.T) {
|
||||||
}{
|
}{
|
||||||
// simple add
|
// simple add
|
||||||
{
|
{
|
||||||
[]Model{
|
toSet: []Model{m("a", "b"), m("c", "d")},
|
||||||
{[]byte{1}, []byte{2}},
|
toRemove: nil,
|
||||||
{[]byte{3}, []byte{4}},
|
toGet: []Model{m("a", "b")},
|
||||||
},
|
toList: []listQuery{
|
||||||
nil,
|
|
||||||
[]Model{{[]byte{1}, []byte{2}}},
|
|
||||||
[]listQuery{
|
|
||||||
{
|
{
|
||||||
[]byte{1}, []byte{4}, 0,
|
"a", "d", 0,
|
||||||
// all
|
[]Model{m("a", "b"), m("c", "d")},
|
||||||
[]Model{
|
m("c", "d"),
|
||||||
{[]byte{1}, []byte{2}},
|
|
||||||
{[]byte{3}, []byte{4}},
|
|
||||||
},
|
|
||||||
// last one
|
|
||||||
Model{[]byte{3}, []byte{4}},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
[]byte{1}, []byte{3}, 10,
|
"a", "c", 10,
|
||||||
// all
|
[]Model{m("a", "b")},
|
||||||
[]Model{
|
m("a", "b"),
|
||||||
{[]byte{1}, []byte{2}},
|
|
||||||
},
|
|
||||||
// last one
|
|
||||||
Model{[]byte{1}, []byte{2}},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
// over-write data, remove
|
// over-write data, remove
|
||||||
{
|
{
|
||||||
[]Model{
|
toSet: []Model{
|
||||||
{[]byte{1}, []byte{2}},
|
m("a", "1"),
|
||||||
{[]byte{2}, []byte{2}},
|
m("b", "2"),
|
||||||
{[]byte{3}, []byte{2}},
|
m("c", "3"),
|
||||||
{[]byte{2}, []byte{4}},
|
m("b", "4"),
|
||||||
},
|
},
|
||||||
[]Model{{[]byte{3}, []byte{2}}},
|
toRemove: []Model{m("c", "3")},
|
||||||
[]Model{
|
toGet: []Model{
|
||||||
{[]byte{1}, []byte{2}},
|
m("a", "1"),
|
||||||
{[]byte{2}, []byte{4}},
|
m("b", "4"),
|
||||||
{[]byte{3}, nil},
|
m("c", ""),
|
||||||
},
|
},
|
||||||
[]listQuery{
|
toList: []listQuery{
|
||||||
{
|
{
|
||||||
[]byte{0, 5}, []byte{10}, 1,
|
"0d", "h", 1,
|
||||||
// all
|
[]Model{m("a", "1")},
|
||||||
[]Model{
|
m("b", "4"),
|
||||||
{[]byte{1}, []byte{2}},
|
|
||||||
},
|
|
||||||
// last
|
|
||||||
Model{[]byte{2}, []byte{4}},
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
[]byte{1, 4}, []byte{1, 7}, 10,
|
"ad", "ak", 10,
|
||||||
[]Model{},
|
[]Model{},
|
||||||
Model{},
|
Model{},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
[]byte{1, 5}, []byte{10}, 0,
|
"ad", "k", 0,
|
||||||
[]Model{
|
[]Model{m("b", "4")},
|
||||||
{[]byte{2}, []byte{4}},
|
m("b", "4"),
|
||||||
},
|
|
||||||
Model{[]byte{2}, []byte{4}},
|
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
@ -121,15 +117,16 @@ func TestKVStore(t *testing.T) {
|
||||||
assert.Equal(len(g.Value) != 0, has, "%d/%d/%d", i, j, k)
|
assert.Equal(len(g.Value) != 0, has, "%d/%d/%d", i, j, k)
|
||||||
}
|
}
|
||||||
for k, lq := range tc.toList {
|
for k, lq := range tc.toList {
|
||||||
list := db.List(lq.start, lq.end, lq.limit)
|
start, end := []byte(lq.start), []byte(lq.end)
|
||||||
|
list := db.List(start, end, lq.limit)
|
||||||
if assert.EqualValues(lq.expected, list, "%d/%d/%d", i, j, k) {
|
if assert.EqualValues(lq.expected, list, "%d/%d/%d", i, j, k) {
|
||||||
var first Model
|
var first Model
|
||||||
if len(lq.expected) > 0 {
|
if len(lq.expected) > 0 {
|
||||||
first = lq.expected[0]
|
first = lq.expected[0]
|
||||||
}
|
}
|
||||||
f := db.First(lq.start, lq.end)
|
f := db.First(start, end)
|
||||||
assert.EqualValues(first, f, "%d/%d/%d", i, j, k)
|
assert.EqualValues(first, f, "%d/%d/%d", i, j, k)
|
||||||
l := db.Last(lq.start, lq.end)
|
l := db.Last(start, end)
|
||||||
assert.EqualValues(lq.last, l, "%d/%d/%d", i, j, k)
|
assert.EqualValues(lq.last, l, "%d/%d/%d", i, j, k)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue