1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
|
package kv
import (
"os"
"strings"
"testing"
)
type row struct {
key string
val string
valid bool
}
func testRow(key string, val string) row {
return row{key, val, !strings.ContainsRune(key, os.PathSeparator)}
}
func TestOne(t *testing.T) {
db, err := NewDatabse("testdb")
if err != nil {
t.Errorf("NewDatabase: %s", err)
}
table := []row{
testRow("k1", "v1"),
testRow("k2", "v2"),
testRow("k3/k3", "v3"),
testRow("!@#\\(&", "v4"),
testRow("k5\\\\k5", "v5"),
testRow("k6**6", "v6"),
testRow("k7\\**7", "v7"),
}
for _, r := range table {
err = db.Set(r.key, []byte(r.val))
if err != nil {
if r.valid {
t.Errorf("db.Set(%+v) expected success, got error: %s", r, err)
}
continue
}
if !r.valid {
t.Errorf("db.Set(%+v) expected error, got success", r)
continue
}
val, err := db.Get(r.key)
if err != nil {
t.Errorf("db.Get(%+v) expected success, got error: %s", r, err)
continue
}
if string(val) != r.val {
t.Errorf("db.Get(%+v) expected val %+v, got %+v", r, r.val, string(val))
}
err = db.Remove(r.key)
if err != nil {
t.Errorf("db.Remove(%+v) expected success, got error: %s", r, err)
continue
}
}
k := "non existstent key"
_, err = db.Get(k)
if err == nil || err != ErrNoSuchKey {
t.Errorf("db.Get(%s) expected error (%s), got (%s):", k, ErrNoSuchKey, err)
}
err = db.Remove(k)
if err == nil || err != ErrNoSuchKey {
t.Errorf("db.Remove(%s) expected error (%s), got (%s):", k, ErrNoSuchKey, err)
}
}
|