package oltp
import (
"path/filepath"
"testing"
)
func TestCheckinCloseWatchAndOnce(t *testing.T) {
db, err := Open(filepath.Join(t.TempDir(), "o.db"))
if err != nil {
t.Fatal(err)
}
defer db.Close()
if _, ok := db.CloseWatch("alpha"); ok {
t.Fatal("FAIL: a watch existed before anyone set it")
}
if err := db.SetCloseWatch("alpha", "c1"); err != nil {
t.Fatal(err)
}
if at, ok := db.CloseWatch("alpha"); !ok || at != "c1" {
t.Fatalf("FAIL: watch = %q, %v", at, ok)
}
if _, ok := db.CloseWatch("beta"); ok {
t.Fatal("FAIL: one repository's watch answered for another")
}
if done, _ := db.CheckinClosed("alpha", "c2"); done {
t.Fatal("FAIL: an unhandled check-in read as handled")
}
if err := db.MarkCheckinClosed("alpha", "c2"); err != nil {
t.Fatal(err)
}
if err := db.MarkCheckinClosed("alpha", "c2"); err != nil {
t.Fatal(err)
}
if done, _ := db.CheckinClosed("alpha", "c2"); !done {
t.Fatal("FAIL: a handled check-in was forgotten")
}
if done, _ := db.CheckinClosed("beta", "c2"); done {
t.Fatal("FAIL: handled in one repository read as handled in another")
}
}