lru_test.go 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. package cache_test
  2. import (
  3. "testing"
  4. . "github.com/xtls/xray-core/common/cache"
  5. )
  6. func TestLruReplaceValue(t *testing.T) {
  7. lru := NewLru(2)
  8. lru.Put(2, 6)
  9. lru.Put(1, 5)
  10. lru.Put(1, 2)
  11. v, _ := lru.Get(1)
  12. if v != 2 {
  13. t.Error("should get 2", v)
  14. }
  15. v, _ = lru.Get(2)
  16. if v != 6 {
  17. t.Error("should get 6", v)
  18. }
  19. }
  20. func TestLruRemoveOld(t *testing.T) {
  21. lru := NewLru(2)
  22. v, ok := lru.Get(2)
  23. if ok {
  24. t.Error("should get nil", v)
  25. }
  26. lru.Put(1, 1)
  27. lru.Put(2, 2)
  28. v, _ = lru.Get(1)
  29. if v != 1 {
  30. t.Error("should get 1", v)
  31. }
  32. lru.Put(3, 3)
  33. v, ok = lru.Get(2)
  34. if ok {
  35. t.Error("should get nil", v)
  36. }
  37. lru.Put(4, 4)
  38. v, ok = lru.Get(1)
  39. if ok {
  40. t.Error("should get nil", v)
  41. }
  42. v, _ = lru.Get(3)
  43. if v != 3 {
  44. t.Error("should get 3", v)
  45. }
  46. v, _ = lru.Get(4)
  47. if v != 4 {
  48. t.Error("should get 4", v)
  49. }
  50. }
  51. func TestGetKeyFromValue(t *testing.T) {
  52. lru := NewLru(2)
  53. lru.Put(3, 3)
  54. lru.Put(2, 2)
  55. lru.GetKeyFromValue(3)
  56. lru.Put(1, 1)
  57. v, ok := lru.GetKeyFromValue(2)
  58. if ok {
  59. t.Error("should get nil", v)
  60. }
  61. v, _ = lru.GetKeyFromValue(3)
  62. if v != 3 {
  63. t.Error("should get 3", v)
  64. }
  65. }
  66. func TestPeekKeyFromValue(t *testing.T) {
  67. lru := NewLru(2)
  68. lru.Put(3, 3)
  69. lru.Put(2, 2)
  70. lru.PeekKeyFromValue(3)
  71. lru.Put(1, 1)
  72. v, ok := lru.PeekKeyFromValue(3)
  73. if ok {
  74. t.Error("should get nil", v)
  75. }
  76. v, _ = lru.PeekKeyFromValue(2)
  77. if v != 2 {
  78. t.Error("should get 2", v)
  79. }
  80. }