73 lines
1.6 KiB
Go
73 lines
1.6 KiB
Go
package store
|
|
|
|
import (
|
|
"io/ioutil"
|
|
"os"
|
|
"testing"
|
|
)
|
|
|
|
func Test_BoltSetListGet(t *testing.T) {
|
|
cases := []struct {
|
|
ns string
|
|
keys []string
|
|
values []string
|
|
search string
|
|
results int
|
|
}{
|
|
{
|
|
ns: "namespace",
|
|
keys: []string{},
|
|
values: []string{},
|
|
search: "",
|
|
results: 0,
|
|
},
|
|
{
|
|
ns: "namespace",
|
|
keys: []string{"key1", "key2", "aey3"},
|
|
values: []string{"v1", "v2", "a3"},
|
|
search: "k",
|
|
results: 2,
|
|
},
|
|
{
|
|
ns: "namespace",
|
|
keys: []string{"key1", "key2", "key3"},
|
|
values: []string{"v1", "v2", "v3"},
|
|
search: "k",
|
|
results: 3,
|
|
},
|
|
}
|
|
|
|
for _, c := range cases {
|
|
tmp, err := ioutil.TempFile(".", "any*")
|
|
if err != nil {
|
|
t.Fatalf("could not make tempfile: %v", err)
|
|
}
|
|
defer os.Remove(tmp.Name())
|
|
var sc Client
|
|
sc, err = NewBolt(tmp.Name())
|
|
if err != nil {
|
|
t.Errorf("failed to create bolt %v: %v", sc, err)
|
|
}
|
|
|
|
for i := range c.keys {
|
|
if err := sc.Set(c.ns, c.keys[i], []byte(c.values[i])); err != nil {
|
|
t.Errorf("failed to set bolt: %v", err)
|
|
}
|
|
}
|
|
|
|
if results, err := sc.List(c.ns, c.search); err != nil {
|
|
t.Errorf("failed to list bolt: %v", err)
|
|
} else if len(results) != c.results {
|
|
t.Errorf("failed to list bolt: missing results for %q: %v, expceted %v", c.ns, len(results), len(c.keys))
|
|
}
|
|
|
|
if len(c.keys) > 0 {
|
|
if result, err := sc.Get(c.ns, c.keys[0]); err != nil {
|
|
t.Errorf("failed to get bolt: %v", err)
|
|
} else if string(result) != c.values[0] {
|
|
t.Errorf("failed to get bolt: got wrong result: wanted %v, got %v", c.values[0], string(result))
|
|
}
|
|
}
|
|
}
|
|
}
|