sqkv/sqkv_test.go

68 lines
1.5 KiB
Go

package sqkv
import (
"errors"
"path/filepath"
"testing"
"github.com/matryer/is"
)
func TestDefault(t *testing.T) {
assert := is.New(t)
tmp := t.TempDir()
dbPath := filepath.Join(tmp, "sqkv.db")
db, err := Open(dbPath)
assert.NoErr(err) // Should create database
err = db.Put("foo", "bar")
assert.NoErr(err) // Should put kv
val, err := db.Get("foo")
assert.NoErr(err) // Should get kv
assert.Equal(val, "bar") // key(foo) == value(bar)
err = db.Delete("foo")
assert.NoErr(err) // Should delete kv
_, err = db.Get("foo")
assert.True(errors.Is(err, ErrKeyDoesNotExist))
}
func TestBucket(t *testing.T) {
assert := is.New(t)
tmp := t.TempDir()
dbPath := filepath.Join(tmp, "sqkv.db")
db, err := Open(dbPath)
assert.NoErr(err) // Should create database
_, err = db.Bucket("honk")
assert.True(errors.Is(err, ErrBucketDoesNotExist)) // Bucket does not exist; should error
_, err = db.CreateBucket("honk")
assert.NoErr(err) // Should create bucket
_, err = db.Bucket("honk")
assert.NoErr(err) // Bucket should exist
b, err := db.CreateBucketIfNotExist("honk")
assert.NoErr(err) // Bucket should exist and be returned
err = b.Put("foo", "bar")
assert.NoErr(err) // Should put kv
val, err := b.Get("foo")
assert.NoErr(err) // Should get kv
assert.Equal(val, "bar") // key(foo) == value(bar)
err = b.Delete("foo")
assert.NoErr(err) // Should delete kv
_, err = b.Get("foo")
assert.True(errors.Is(err, ErrKeyDoesNotExist))
}