github.com/cellofellow/gopkg@v0.0.0-20140722061823-eec0544a62ad/database/leveldb.chai2010/cache_test.go (about) 1 // Copyright 2013 <chaishushan{AT}gmail.com>. All rights reserved. 2 // Use of this source code is governed by a BSD-style 3 // license that can be found in the LICENSE file. 4 5 package leveldb 6 7 import ( 8 "bytes" 9 "testing" 10 ) 11 12 type testpair struct { 13 key, value string 14 } 15 16 var pairs = []testpair{ 17 {"", ""}, 18 {"f", "Zg=="}, 19 {"fo", "Zm8="}, 20 {"foo", "Zm9v"}, 21 {"foob", "Zm9vYg=="}, 22 {"fooba", "Zm9vYmE="}, 23 {"foobar", "Zm9vYmFy"}, 24 {"sure.", "c3VyZS4="}, 25 {"sure", "c3VyZQ=="}, 26 {"sur", "c3Vy"}, 27 {"su", "c3U="}, 28 {"leasure.", "bGVhc3VyZS4="}, 29 {"easure.", "ZWFzdXJlLg=="}, 30 {"asure.", "YXN1cmUu"}, 31 {"sure.", "c3VyZS4="}, 32 } 33 34 func TestCache(t *testing.T) { 35 cache := NewCache(1 << 20) 36 defer cache.Release() 37 38 // empty & lookup fail 39 for _, p := range pairs { 40 if v := cache.Lookup([]byte(p.key)); v != nil { 41 t.Fatalf("%s: expect = nil, got = not nil\n", p.key) 42 } 43 } 44 45 // insert & lookup success 46 for _, p := range pairs { 47 cache.Insert([]byte(p.key), []byte(p.value)) 48 } 49 for _, p := range pairs { 50 v := cache.Lookup([]byte(p.key)) 51 if v == nil { 52 t.Fatalf("%s: expect = not nil, got = nil\n", p.key) 53 } 54 if !bytes.Equal([]byte(p.value), v.Slice()) { 55 t.Fatalf("%s: expect = %v, got = %v\n", p.key, p.value, string(v.Slice())) 56 } 57 v.Release() 58 } 59 60 // erase & lookup fail 61 for _, p := range pairs { 62 cache.Erase([]byte(p.key)) 63 } 64 for _, p := range pairs { 65 if v := cache.Lookup([]byte(p.key)); v != nil { 66 t.Fatalf("%s: expect = nil, got = not nil\n", p.key) 67 } 68 } 69 }