Initial commit: bolt, map, leveldb support and test

This commit is contained in:
Bel LaPointe
2019-03-13 14:06:46 -06:00
commit 8a1cf7104c
7 changed files with 220 additions and 0 deletions

62
db_test.go Normal file
View File

@@ -0,0 +1,62 @@
package storage
import (
"bytes"
"io/ioutil"
"os"
"path"
"testing"
)
type mock struct {
m map[string][]byte
}
func (mock *mock) Get(key string) ([]byte, error) {
v, ok := mock.m[key]
if ok {
return v, nil
}
return nil, ErrNotFound
}
func (mock *mock) Set(key string, value []byte) error {
mock.m[key] = value
return nil
}
func (mock *mock) Close() error {
return nil
}
func TestImplementations(t *testing.T) {
dir, err := ioutil.TempDir("", "storage_tests_")
if err != nil {
t.Fatalf("cannot create temp dir: %v", err)
return
}
defer os.RemoveAll(dir)
bolt, _ := NewBolt(path.Join(dir, "bolt"))
leveldb, _ := NewLevelDB(path.Join(dir, "leveldb"))
cases := []DB{
&mock{m: make(map[string][]byte)},
NewMap(),
bolt,
leveldb,
}
validKey := "key"
validValue := []byte("value")
for _, db := range cases {
if err := db.Set(validKey, validValue); err != nil {
t.Fatalf("cannot set %T: %v", db, err)
}
if v, err := db.Get(validKey); err != nil {
t.Fatalf("cannot get %T: %v", db, err)
} else if !bytes.Equal(v, validValue) {
t.Fatalf("wrong get %T: %q vs %q", db, v, validValue)
}
}
}