66 lines
1.3 KiB
Go
66 lines
1.3 KiB
Go
package db0204
|
|
|
|
import (
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
func TestTableByPKey(t *testing.T) {
|
|
db := DB{}
|
|
db.KV.log.FileName = ".test_db"
|
|
defer os.Remove(db.KV.log.FileName)
|
|
|
|
os.Remove(db.KV.log.FileName)
|
|
err := db.Open()
|
|
assert.Nil(t, err)
|
|
defer db.Close()
|
|
|
|
schema := &Schema{
|
|
Table: "link",
|
|
Cols: []Column{
|
|
{Name: "time", Type: TypeI64},
|
|
{Name: "src", Type: TypeStr},
|
|
{Name: "dst", Type: TypeStr},
|
|
},
|
|
PKey: []int{1, 2}, // (src, dst)
|
|
}
|
|
|
|
row := Row{
|
|
Cell{Type: TypeI64, I64: 123},
|
|
Cell{Type: TypeStr, Str: []byte("a")},
|
|
Cell{Type: TypeStr, Str: []byte("b")},
|
|
}
|
|
ok, err := db.Select(schema, row)
|
|
assert.True(t, !ok && err == nil)
|
|
|
|
updated, err := db.Insert(schema, row)
|
|
assert.True(t, updated && err == nil)
|
|
|
|
out := Row{
|
|
Cell{},
|
|
Cell{Type: TypeStr, Str: []byte("a")},
|
|
Cell{Type: TypeStr, Str: []byte("b")},
|
|
}
|
|
ok, err = db.Select(schema, out)
|
|
assert.True(t, ok && err == nil)
|
|
assert.Equal(t, row, out)
|
|
|
|
row[0].I64 = 456
|
|
updated, err = db.Update(schema, row)
|
|
assert.True(t, updated && err == nil)
|
|
|
|
ok, err = db.Select(schema, out)
|
|
assert.True(t, ok && err == nil)
|
|
assert.Equal(t, row, out)
|
|
|
|
deleted, err := db.Delete(schema, row)
|
|
assert.True(t, deleted && err == nil)
|
|
|
|
ok, err = db.Select(schema, row)
|
|
assert.True(t, !ok && err == nil)
|
|
}
|
|
|
|
// QzBQWVJJOUhU https://trialofcode.org/
|