tbotd/vendor/src/github.com/asdine/storm/set_test.go

68 lines
1.4 KiB
Go

package storm
import (
"io/ioutil"
"net/mail"
"os"
"path/filepath"
"testing"
"github.com/asdine/storm/codec/gob"
"github.com/boltdb/bolt"
"github.com/stretchr/testify/assert"
)
func TestSet(t *testing.T) {
dir, _ := ioutil.TempDir(os.TempDir(), "storm")
defer os.RemoveAll(dir)
db, _ := Open(filepath.Join(dir, "storm.db"))
err := db.Set("b1", 10, 10)
assert.NoError(t, err)
err = db.Set("b1", "best friend's mail", &mail.Address{Name: "Gandalf", Address: "gandalf@lorien.ma"})
assert.NoError(t, err)
err = db.Set("b2", []byte("i'm already a slice of bytes"), "a value")
assert.NoError(t, err)
err = db.Set("b2", []byte("i'm already a slice of bytes"), nil)
assert.NoError(t, err)
err = db.Set("b1", 0, 100)
assert.NoError(t, err)
err = db.Set("b1", nil, 100)
assert.Error(t, err)
db.Bolt.View(func(tx *bolt.Tx) error {
b1 := tx.Bucket([]byte("b1"))
assert.NotNil(t, b1)
b2 := tx.Bucket([]byte("b2"))
assert.NotNil(t, b2)
k1, err := toBytes(10, gob.Codec)
assert.NoError(t, err)
val := b1.Get(k1)
assert.NotNil(t, val)
k2 := []byte("best friend's mail")
val = b1.Get(k2)
assert.NotNil(t, val)
k3, err := toBytes(0, gob.Codec)
assert.NoError(t, err)
val = b1.Get(k3)
assert.NotNil(t, val)
return nil
})
err = db.Set("", 0, 100)
assert.Error(t, err)
err = db.Set("b", nil, 100)
assert.Error(t, err)
err = db.Set("b", 10, nil)
assert.NoError(t, err)
err = db.Set("b", nil, nil)
assert.Error(t, err)
}