59 lines
892 B
Go
59 lines
892 B
Go
package memdb
|
|
|
|
import "testing"
|
|
|
|
func testDB(t *testing.T) *MemDB {
|
|
db, err := NewMemDB(testValidSchema())
|
|
if err != nil {
|
|
t.Fatalf("err: %v", err)
|
|
}
|
|
return db
|
|
}
|
|
|
|
func TestTxn_Read_AbortCommit(t *testing.T) {
|
|
db := testDB(t)
|
|
txn := db.Txn(false) // Readonly
|
|
|
|
txn.Abort()
|
|
txn.Abort()
|
|
txn.Commit()
|
|
txn.Commit()
|
|
}
|
|
|
|
func TestTxn_Write_AbortCommit(t *testing.T) {
|
|
db := testDB(t)
|
|
txn := db.Txn(true) // Write
|
|
|
|
txn.Abort()
|
|
txn.Abort()
|
|
txn.Commit()
|
|
txn.Commit()
|
|
|
|
txn = db.Txn(true) // Write
|
|
|
|
txn.Commit()
|
|
txn.Commit()
|
|
txn.Abort()
|
|
txn.Abort()
|
|
}
|
|
|
|
func TestTxn_Insert_First(t *testing.T) {
|
|
db := testDB(t)
|
|
txn := db.Txn(true)
|
|
|
|
obj := testObj()
|
|
err := txn.Insert("main", obj)
|
|
if err != nil {
|
|
t.Fatalf("err: %v", err)
|
|
}
|
|
|
|
raw, err := txn.First("main", "id", obj.ID)
|
|
if err != nil {
|
|
t.Fatalf("err: %v", err)
|
|
}
|
|
|
|
if raw != obj {
|
|
t.Fatalf("bad: %#v %#v", raw, obj)
|
|
}
|
|
}
|