Initial commit: bolt, map, leveldb support and test
This commit is contained in:
62
db_test.go
Normal file
62
db_test.go
Normal 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)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user