scratch/scribble_test.go

152 lines
2.4 KiB
Go

package scribble
import (
"os"
"testing"
)
//
type Friend struct {
Name string `json:"name"`
}
//
var (
db *Driver
testRoot = "./test_db"
friendsPath = "/friends"
friend0 = Friend{}
friend1 = Friend{Name: "wocket"}
friend2 = Friend{Name: "wasket"}
)
//
func init() {
startup()
}
//
func startup() {
db, _ = New(testRoot, nil)
}
//
func teardown() {
os.RemoveAll(testRoot)
}
//
func createFriend(t *testing.T) {
if err := db.Write(friendsPath, "friend1", friend1); err != nil {
t.Error("Failed to write", err)
}
}
//
func createFriends(t *testing.T) {
if err := db.Write(friendsPath, "friend1", friend1); err != nil {
t.Error("Failed to write", err)
}
if err := db.Write(friendsPath, "friend2", friend2); err != nil {
t.Error("Failed to write", err)
}
}
//
func TestNew(t *testing.T) {
if _, err := os.Stat(testRoot); os.IsNotExist(err) {
t.Error("Expected file, got none", err)
}
teardown()
}
//
func TestWrite(t *testing.T) {
createFriend(t)
teardown()
}
//
func TestRead(t *testing.T) {
createFriend(t)
if err := db.Read(friendsPath, "friend1", &friend0); err != nil {
t.Error("Failed to read", err)
}
if friend0.Name == "" {
t.Error("Expected friend, have none")
}
teardown()
}
//
func TestReadEmpty(t *testing.T) {
if err := db.Read(friendsPath, "friend1", &friend0); err == nil {
t.Error("Expected nothing, found friend")
}
teardown()
}
//
func TestReadall(t *testing.T) {
createFriends(t)
friends := []Friend{}
if err := db.Read(friendsPath, "", &friends); err != nil {
t.Error("Failed to read", err)
}
if len(friends) <= 0 {
t.Error("Expected friends, have none")
}
teardown()
}
//
func TestReadallEmpty(t *testing.T) {
friends := []Friend{}
if err := db.Read(friendsPath, "", &friends); err == nil {
t.Error("Expected nothing, found friends")
}
teardown()
}
//
func TestDelete(t *testing.T) {
createFriend(t)
if err := db.Delete(friendsPath, "friend1"); err != nil {
t.Error("Failed to delete", err)
}
if fi, err := os.Stat(friendsPath + "/friend1"); fi != nil {
t.Error("Expected nothing, have friends", err)
}
teardown()
}
//
func TestDeleteall(t *testing.T) {
createFriends(t)
if err := db.Delete(friendsPath, ""); err != nil {
t.Error("Failed to delete ", err)
}
if fi, err := os.Stat(friendsPath); fi != nil {
t.Error("Expected nothing, have friends", err)
}
teardown()
}