func enumerate(kv kvdb.Kvdb, t *testing.T) { fmt.Println("enumerate") prefix := "enumerate" keys := map[string]string{ prefix + "/1cbc9a98-072a-4793-8608-01ab43db96c8": "bar", prefix + "/foo": "baz", } kv.DeleteTree(prefix) defer func() { kv.DeleteTree(prefix) }() errPairs, err := kv.Enumerate(prefix) assert.Equal(t, 0, len(errPairs), "Expected 0 pairs") folderKey := prefix + "/folder/" _, err = kv.Put(folderKey, []byte(""), 0) assert.NoError(t, err, "Unexpected error on Put") kvPairs, err := kv.Enumerate(folderKey) assert.Equal(t, nil, err, "Unexpected error on Enumerate") kv.DeleteTree(prefix) for key, val := range keys { _, err := kv.Put(key, []byte(val), 0) assert.NoError(t, err, "Unexpected error on Put") } kvPairs, err = kv.Enumerate(prefix) assert.NoError(t, err, "Unexpected error on Enumerate") assert.Equal(t, len(kvPairs), len(keys), "Expecting %d keys under %s got: %d", len(keys), prefix, len(kvPairs)) for i := range kvPairs { v, ok := keys[kvPairs[i].Key] assert.True(t, ok, "unexpected kvpair (%s)->(%s)", kvPairs[i].Key, kvPairs[i].Value) assert.Equal(t, v, string(kvPairs[i].Value), "Invalid kvpair (%s)->(%s) expect value %s", kvPairs[i].Key, kvPairs[i].Value, v) } }