add more tests
parent
53973bc0f7
commit
d12e25a886
@ -0,0 +1,132 @@
|
||||
package discov
|
||||
|
||||
import (
|
||||
"testing"
|
||||
|
||||
"zero/core/discov/internal"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
const (
|
||||
actionAdd = iota
|
||||
actionDel
|
||||
)
|
||||
|
||||
func TestContainer(t *testing.T) {
|
||||
type action struct {
|
||||
act int
|
||||
key string
|
||||
val string
|
||||
}
|
||||
tests := []struct {
|
||||
name string
|
||||
do []action
|
||||
expect []string
|
||||
}{
|
||||
{
|
||||
name: "add one",
|
||||
do: []action{
|
||||
{
|
||||
act: actionAdd,
|
||||
key: "first",
|
||||
val: "a",
|
||||
},
|
||||
},
|
||||
expect: []string{
|
||||
"a",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "add two",
|
||||
do: []action{
|
||||
{
|
||||
act: actionAdd,
|
||||
key: "first",
|
||||
val: "a",
|
||||
},
|
||||
{
|
||||
act: actionAdd,
|
||||
key: "second",
|
||||
val: "b",
|
||||
},
|
||||
},
|
||||
expect: []string{
|
||||
"a",
|
||||
"b",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "add two, delete one",
|
||||
do: []action{
|
||||
{
|
||||
act: actionAdd,
|
||||
key: "first",
|
||||
val: "a",
|
||||
},
|
||||
{
|
||||
act: actionAdd,
|
||||
key: "second",
|
||||
val: "b",
|
||||
},
|
||||
{
|
||||
act: actionDel,
|
||||
key: "first",
|
||||
val: "a",
|
||||
},
|
||||
},
|
||||
expect: []string{
|
||||
"b",
|
||||
},
|
||||
},
|
||||
{
|
||||
name: "add two, delete two",
|
||||
do: []action{
|
||||
{
|
||||
act: actionAdd,
|
||||
key: "first",
|
||||
val: "a",
|
||||
},
|
||||
{
|
||||
act: actionAdd,
|
||||
key: "second",
|
||||
val: "b",
|
||||
},
|
||||
{
|
||||
act: actionDel,
|
||||
key: "first",
|
||||
val: "a",
|
||||
},
|
||||
{
|
||||
act: actionDel,
|
||||
key: "second",
|
||||
val: "b",
|
||||
},
|
||||
},
|
||||
expect: []string{},
|
||||
},
|
||||
}
|
||||
|
||||
for _, test := range tests {
|
||||
t.Run(test.name, func(t *testing.T) {
|
||||
c := newContainer(false)
|
||||
for _, order := range test.do {
|
||||
if order.act == actionAdd {
|
||||
c.OnAdd(internal.KV{
|
||||
Key: order.key,
|
||||
Val: order.val,
|
||||
})
|
||||
} else {
|
||||
c.OnDelete(internal.KV{
|
||||
Key: order.key,
|
||||
Val: order.val,
|
||||
})
|
||||
}
|
||||
}
|
||||
assert.True(t, c.dirty.True())
|
||||
assert.ElementsMatch(t, test.expect, c.getValues())
|
||||
assert.False(t, c.dirty.True())
|
||||
assert.ElementsMatch(t, test.expect, c.getValues())
|
||||
})
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue