db_test.go (1422B)
1 package ii 2 3 import ( 4 "io/ioutil" 5 "os" 6 "testing" 7 ) 8 9 func TestOpenDB(t *testing.T) { 10 var db *DB 11 InitLog() 12 dir, err := ioutil.TempDir(os.TempDir(), "ii.test.*") 13 if err != nil { 14 t.Error("Can not create temp dir") 15 return 16 } 17 defer os.RemoveAll(dir) 18 path := dir + "/db" 19 db = OpenDB(path) 20 if db == nil { 21 t.Error("Can not open db") 22 return 23 } 24 var m *Msg 25 if m, err = DecodeBundle(Test_msg); m == nil { 26 t.Error("Can not decode msg", err) 27 return 28 } 29 if err := db.Store(m); err != nil { 30 t.Error("Can not save msg", err) 31 return 32 } 33 m2 := db.Get(m.MsgId) 34 if m2 == nil || m2.Text != m.Text { 35 t.Error("Can not lookup msg") 36 return 37 } 38 os.Remove(db.IndexPath()) 39 40 db = OpenDB(path) // reopen 41 m2 = db.Get(m.MsgId) 42 if m2 == nil || m2.Text != m.Text { 43 t.Error("Can not lookup msg (create new index)") 44 return 45 } 46 m2.Text = "Edited" 47 if err := db.Edit(m2); err != nil { 48 t.Error("Can not save duplicate msg", err) 49 return 50 } 51 m3 := db.Get(m2.MsgId) 52 if m3 == nil || m3.Text != m2.Text { 53 t.Error("Can not lookup msg (edited)") 54 return 55 } 56 db = OpenDB(path) // reopen 57 m3 = db.Get(m.MsgId) 58 if m3 == nil || m3.Text != m2.Text { 59 t.Error("Can not lookup msg (reopen, edited msg)", m3.Text) 60 return 61 } 62 os.Remove(db.IndexPath()) 63 db = OpenDB(path) // reopen 64 m3 = db.Get(m.MsgId) 65 if m3 == nil || m3.Text != m2.Text { 66 t.Error("Can not lookup msg (create new index, edited msg)", m3.Text) 67 return 68 } 69 }