keystore - memstore_test.go
1 package keystore
2
3 import (
4 "io"
5 "reflect"
6 "testing"
7
8 "vimagination.zapto.org/memio"
9 )
10
11 func TestMemStore(t *testing.T) {
12 testStore(t, NewMemStore())
13 }
14
15 func data(s string) io.WriterTo {
16 b := memio.Buffer(s)
17 return &b
18 }
19
20 func TestMemStoreReadWrite(t *testing.T) {
21 m := NewMemStore()
22 m.Set("key1", data("data1"))
23 m.Set("key2", data("data2"))
24 m.Set("abc123", data("abcdefghij"))
25 m.Set("zxy987", data("1234567890"))
26 m.Set("aMuchLongerKey", data("lotsAndLotsAndLotsOfData"))
27 var buf memio.Buffer
28 m.WriteTo(&buf)
29 n := NewMemStore()
30 n.ReadFrom(&buf)
31 keys := m.Keys()
32 if nKeys := n.Keys(); !reflect.DeepEqual(keys, nKeys) {
33 t.Errorf("test 1: expecting keys %v, got %v", keys, nKeys)
34 return
35 }
36 for d, key := range keys {
37 buf = buf[:0]
38 if err := n.Get(key, &buf); err != nil {
39 t.Errorf("test %d: got unexpected error: %s", d+2, err)
40 return
41 }
42 s := string(buf)
43 buf = buf[:0]
44 m.Get(key, &buf)
45 if string(buf) != s {
46 t.Errorf("test %d: expecting value %q, got %q", d+2, buf, s)
47 }
48 }
49 }