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()) defer sc.Close() 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, true, -1); 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)) } } } }