zordfsdb/zordfsdb_test.go
2024-07-18 13:53:28 +03:00

174 lines
2.8 KiB
Go

package zordfsdb
import (
"fmt"
"os"
"testing"
cp "github.com/otiai10/copy"
)
func TestInit(t *testing.T) {
_, err := InitDB("./testdata")
if err != nil {
t.Fatal(err)
}
}
func TestKeys(t *testing.T) {
db, err := InitDB("./testdata")
if err != nil {
t.Fatal(err)
}
keys := db.Keys("")
fmt.Println(keys)
if len(keys) != 3 {
t.Fatal("Wrong keys count on root")
}
keys = db.Keys("list")
fmt.Println(keys)
if len(keys) != 2 {
t.Fatal("Wrong keys count on list")
}
keys = db.Keys("list.1")
fmt.Println(keys)
if len(keys) != 1 {
t.Fatal("Wrong keys count on list.1")
}
keys = db.Keys("object")
fmt.Println(keys)
if len(keys) != 1 {
t.Fatal("Wrong keys count on object")
}
}
func TestGet(t *testing.T) {
db, err := InitDB("./testdata")
if err != nil {
t.Fatal(err)
}
val, found := db.Get("counter")
if !found || val != "12" {
t.Fatal("counter value get fail")
}
_, found = db.Get("not_exist")
if found {
t.Fatal("found not existing")
}
val, found = db.Get("list.2.key2")
if !found || val != "value3" {
t.Fatal("list.2.key2 value get fail")
}
}
func copy(t *testing.T) {
err := os.RemoveAll("./testdata2")
if err != nil {
}
err = cp.Copy("./testdata", "./testdata2")
if err != nil {
t.Fatal("Couldn't prepare data for testing")
}
}
func TestInc(t *testing.T) {
copy(t)
db, err := InitDB("./testdata2")
if err != nil {
t.Fatal(err)
}
db.Inc("counter")
val, found := db.Get("counter")
if !found || val != "13" {
t.Fatal("counter value get fail")
}
}
func TestDec(t *testing.T) {
copy(t)
db, err := InitDB("./testdata2")
if err != nil {
t.Fatal(err)
}
db.Dec("counter")
val, found := db.Get("counter")
if !found || val != "11" {
t.Fatal("counter value get fail")
}
}
func TestNow(t *testing.T) {
copy(t)
db, err := InitDB("./testdata2")
if err != nil {
t.Fatal(err)
}
db.Now("today")
val, found := db.Get("today")
fmt.Println(val)
if !found || len(val) != 25 {
t.Fatal("today value length wrong:", len(val))
}
}
func TestSave(t *testing.T) {
copy(t)
db, err := InitDB("./testdata2")
if err != nil {
t.Fatal(err)
}
db.Save("newKey", "newValue")
val, found := db.Get("newKey")
fmt.Println(val)
if !found || val != "newValue" {
t.Fatal("newKey value wrong")
}
db.Save("object.newKey", "newValue2")
val, found = db.Get("object.newKey")
fmt.Println(val)
if !found || val != "newValue2" {
t.Fatal("object.newKey value wrong")
}
success := db.Save("object2.newKey", "newValue2")
if success {
t.Fatal("object2.newKey value created - should not")
}
}
func TestDel(t *testing.T) {
copy(t)
db, err := InitDB("./testdata2")
if err != nil {
t.Fatal(err)
}
db.Del("counter")
_, found := db.Get("counter")
if found {
t.Fatal("delete failed")
}
db.Del("list.2")
_, found = db.Get("list.2.key2")
if found {
t.Fatal("delete failed #2")
}
}