gecko/database/mockdb/mockdb_test.go

76 lines
1.8 KiB
Go

// (c) 2019-2020, Ava Labs, Inc. All rights reserved.
// See the file LICENSE for licensing terms.
package mockdb
import (
"bytes"
"errors"
"testing"
)
// Assert that when no members are assigned values, every method returns nil/error
func TestDefaultError(t *testing.T) {
db := New()
if err := db.Close(); err == nil {
t.Fatal("should have errored")
}
if _, err := db.Has([]byte{}); err == nil {
t.Fatal("should have errored")
}
if _, err := db.Get([]byte{}); err == nil {
t.Fatal("should have errored")
}
if err := db.Put([]byte{}); err == nil {
t.Fatal("should have errored")
}
if err := db.Delete([]byte{}); err == nil {
t.Fatal("should have errored")
}
if batch := db.NewBatch(); batch != nil {
t.Fatal("should have been nil")
}
if iterator := db.NewIterator(); iterator != nil {
t.Fatal("should have errored")
}
if iterator := db.NewIteratorWithPrefix([]byte{}); iterator != nil {
t.Fatal("should have errored")
}
if iterator := db.NewIteratorWithStart([]byte{}); iterator != nil {
t.Fatal("should have errored")
}
if iterator := db.NewIteratorWithStartAndPrefix([]byte{}, []byte{}); iterator != nil {
t.Fatal("should have errored")
}
if err := db.Compact([]byte{}, []byte{}); err == nil {
t.Fatal("should have errored")
}
if _, err := db.Stat(); err == nil {
t.Fatal("should have errored")
}
}
// Assert that mocking works for Get
func TestGet(t *testing.T) {
db := New()
// Mock Has()
db.OnHas = func(b []byte) (bool, error) {
if bytes.Equal(b, []byte{1, 2, 3}) {
return true, nil
}
return false, errors.New("")
}
if has, err := db.Has([]byte{1, 2, 3}); err != nil {
t.Fatal("should not have errored")
} else if has != true {
t.Fatal("has should be true")
}
if _, err := db.Has([]byte{1, 2}); err == nil {
t.Fatal("should have have errored")
}
}