github.com/vuuihc/gocedar@v0.1.0/cedar_test.go (about) 1 package cedar 2 3 import ( 4 "testing" 5 6 "github.com/vcaesar/tt" 7 ) 8 9 var ( 10 cd *Cedar 11 useMMap = true 12 words = []string{ 13 "魔术师", 14 "Cryin'", 15 "荒谬世界", 16 "活得精彩", 17 "梦", 18 "声音", 19 "最后的答案", 20 "阿博", 21 "夜长梦多", 22 "爱上你只是我的错", 23 "毕业", 24 "十八岁", 25 "比我勇敢", 26 "寂寞电梯", 27 "你又不是我 ", 28 } 29 ) 30 31 func TestFLoadData(t *testing.T) { 32 cd := New(&Options{ 33 Reduced: true, 34 UseMMap: useMMap, 35 MMapPath: dumpPath, 36 }) 37 defer cd.Close() 38 // add the words 39 for i, word := range words { 40 err := cd.Insert([]byte(word), i) 41 tt.Nil(t, err) 42 } 43 val, err := cd.Get([]byte("魔术师")) 44 tt.Nil(t, err) 45 tt.Equal(t, 0, val) 46 47 // update the words 48 for i, word := range words { 49 err := cd.Delete([]byte(word)) 50 tt.Nil(t, err, word) 51 52 err = cd.Update([]byte(word), i) 53 tt.Nil(t, err) 54 } 55 56 // delete not used word 57 for i := 10; i < 15; i++ { 58 err := cd.Delete([]byte(words[i])) 59 tt.Nil(t, err) 60 } 61 } 62 63 func TestFFind(t *testing.T) { 64 if !useMMap { 65 return 66 } 67 cd := New(&Options{ 68 Reduced: true, 69 UseMMap: useMMap, 70 MMapPath: dumpPath, 71 }) 72 defer cd.Close() 73 // key, err := cd.Find([]byte("魔术师"), 0) 74 // tt.Nil(t, err) 75 // tt.Equal(t, 0, key) 76 77 val, err := cd.Get([]byte("魔术师")) 78 tt.Nil(t, err) 79 tt.Equal(t, 0, val) 80 81 // to, err := cd.Jump([]byte("活得精彩"), 0) 82 // tt.Nil(t, err) 83 // tt.Equal(t, 352, to) 84 // val, err = cd.Value(to) 85 // tt.Nil(t, err) 86 // tt.Equal(t, 3, val) 87 }