package db0304 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/