github.com/qiuhoude/go-web@v0.0.0-20220223060959-ab545e78f20d/algorithm/datastructures/lru_cache/lru_cache_test.go (about) 1 package lru_cache 2 3 import ( 4 "fmt" 5 "github.com/bmizerany/assert" 6 "testing" 7 ) 8 9 func Test_Hostbit(t *testing.T) { 10 fmt.Println(hostbit) 11 } 12 13 func Test_LRU(t *testing.T) { 14 lru := Constructor(2) 15 16 lru.Put(1, 1) 17 lru.Put(2, 2) 18 assert.Equal(t, lru.Get(1), 1) // returns 1 19 lru.Put(3, 3) // evicts key 2 20 assert.Equal(t, lru.Get(2), -1) // returns -1 (not found) 21 lru.Put(4, 4) // evicts key 1 22 assert.Equal(t, lru.Get(1), -1) // returns -1 (not found) 23 assert.Equal(t, lru.Get(3), 3) // returns 3 24 assert.Equal(t, lru.Get(4), 4) // returns 4 25 } 26 27 func Test_LRU_PutGet(t *testing.T) { 28 lru := Constructor(1) 29 30 lru.Put(1, 2) 31 assert.Equal(t, lru.Get(1), 2) // returns 2 32 } 33 34 func Test_LRU_PutGetPutGetGet(t *testing.T) { 35 lru := Constructor(1) 36 37 lru.Put(2, 1) 38 assert.Equal(t, lru.Get(2), 1) // returns 1 39 lru.Put(3, 2) 40 assert.Equal(t, lru.Get(2), -1) // returns -1 41 assert.Equal(t, lru.Get(3), 2) // returns 2 42 } 43 44 func Test_LRU_PPGPPG(t *testing.T) { 45 lru := Constructor(2) 46 47 lru.Put(2, 1) 48 lru.Put(2, 2) 49 assert.Equal(t, lru.Get(2), 2) // returns 2 50 lru.Put(1, 4) 51 lru.Put(4, 1) 52 assert.Equal(t, lru.Get(2), -1) // returns -1 53 assert.Equal(t, lru.Get(3), -1) // returns -1 54 } 55 56 func Test_LRU_PPGPPG_2(t *testing.T) { 57 lru := Constructor(2) 58 59 lru.Put(2, 1) 60 lru.Put(2, 2) 61 assert.Equal(t, lru.Get(2), 2) // returns 2 62 lru.Put(1, 1) 63 lru.Put(4, 1) 64 assert.Equal(t, lru.Get(2), -1) // returns -1 65 assert.Equal(t, lru.Get(3), -1) // returns -1 66 } 67 68 func Test_hash(t *testing.T) { 69 for i := 0; i < 60; i++ { 70 t.Log(i, hash(i)) 71 } 72 }