package cache_test import ( "testing" . "github.com/xtls/xray-core/common/cache" ) func TestLruReplaceValue(t *testing.T) { lru := NewLru(2) lru.Put(2, 6) lru.Put(1, 5) lru.Put(1, 2) v, _ := lru.Get(1) if v != 2 { t.Error("should get 2", v) } v, _ = lru.Get(2) if v != 6 { t.Error("should get 6", v) } } func TestLruRemoveOld(t *testing.T) { lru := NewLru(2) v, ok := lru.Get(2) if ok { t.Error("should get nil", v) } lru.Put(1, 1) lru.Put(2, 2) v, _ = lru.Get(1) if v != 1 { t.Error("should get 1", v) } lru.Put(3, 3) v, ok = lru.Get(2) if ok { t.Error("should get nil", v) } lru.Put(4, 4) v, ok = lru.Get(1) if ok { t.Error("should get nil", v) } v, _ = lru.Get(3) if v != 3 { t.Error("should get 3", v) } v, _ = lru.Get(4) if v != 4 { t.Error("should get 4", v) } } func TestGetKeyFromValue(t *testing.T) { lru := NewLru(2) lru.Put(3, 3) lru.Put(2, 2) lru.GetKeyFromValue(3) lru.Put(1, 1) v, ok := lru.GetKeyFromValue(2) if ok { t.Error("should get nil", v) } v, _ = lru.GetKeyFromValue(3) if v != 3 { t.Error("should get 3", v) } } func TestPeekKeyFromValue(t *testing.T) { lru := NewLru(2) lru.Put(3, 3) lru.Put(2, 2) lru.PeekKeyFromValue(3) lru.Put(1, 1) v, ok := lru.PeekKeyFromValue(3) if ok { t.Error("should get nil", v) } v, _ = lru.PeekKeyFromValue(2) if v != 2 { t.Error("should get 2", v) } }