pkg.re/essentialkaos/ek.10@v12.41.0+incompatible/cache/cache_test.go (about) 1 package cache 2 3 // ////////////////////////////////////////////////////////////////////////////////// // 4 // // 5 // Copyright (c) 2022 ESSENTIAL KAOS // 6 // Apache License, Version 2.0 <https://www.apache.org/licenses/LICENSE-2.0> // 7 // // 8 // ////////////////////////////////////////////////////////////////////////////////// // 9 10 import ( 11 "testing" 12 "time" 13 14 . "pkg.re/essentialkaos/check.v1" 15 ) 16 17 // ////////////////////////////////////////////////////////////////////////////////// // 18 19 type CacheSuite struct{} 20 21 // ////////////////////////////////////////////////////////////////////////////////// // 22 23 func Test(t *testing.T) { TestingT(t) } 24 25 // ////////////////////////////////////////////////////////////////////////////////// // 26 27 var _ = Suite(&CacheSuite{}) 28 29 // ////////////////////////////////////////////////////////////////////////////////// // 30 31 func (s *CacheSuite) TestCache(c *C) { 32 cache := New(time.Second/16, time.Second/32) 33 34 cache.Set("1", "TEST") 35 cache.Set("2", "TEST") 36 37 c.Assert(cache.Size(), Equals, 2) 38 39 c.Assert(cache.Get("1"), Equals, "TEST") 40 c.Assert(cache.Get("2"), Equals, "TEST") 41 42 c.Assert(cache.Has("2"), Equals, true) 43 c.Assert(cache.Has("3"), Equals, false) 44 45 item, exp := cache.GetWithExpiration("1") 46 47 c.Assert(item, Equals, "TEST") 48 c.Assert(exp.IsZero(), Not(Equals), true) 49 50 cache.Delete("1") 51 52 c.Assert(cache.Get("1"), Equals, nil) 53 54 time.Sleep(time.Second / 8) 55 56 item, _ = cache.GetWithExpiration("2") 57 58 c.Assert(cache.Get("2"), Equals, nil) 59 c.Assert(item, Equals, nil) 60 61 cache.Flush() 62 } 63 64 func (s *CacheSuite) TestCacheWithoutJanitor(c *C) { 65 cache := New(time.Second/32, 0) 66 67 cache.Set("1", "TEST") 68 cache.Set("2", "TEST") 69 cache.Set("3", "TEST") 70 71 c.Assert(cache.Has("2"), Equals, true) 72 c.Assert(cache.Has("0"), Equals, false) 73 74 time.Sleep(time.Second / 16) 75 76 c.Assert(cache.Expired(), Equals, 3) 77 c.Assert(cache.Has("1"), Equals, false) 78 c.Assert(cache.Get("2"), Equals, nil) 79 80 data, _ := cache.GetWithExpiration("3") 81 82 c.Assert(data, Equals, nil) 83 } 84 85 func (s *CacheSuite) TestExpiration(c *C) { 86 cache := New(time.Second/16, time.Minute) 87 88 cache.Set("1", "TEST") 89 90 time.Sleep(time.Second / 8) 91 92 item, _ := cache.GetWithExpiration("1") 93 c.Assert(item, Equals, nil) 94 95 c.Assert(cache.Get("1"), Equals, nil) 96 } 97 98 func (s *CacheSuite) TestNil(c *C) { 99 var cache *Cache 100 101 cache.Set("1", "TEST") 102 cache.Delete("1") 103 cache.Flush() 104 105 c.Assert(cache.Size(), Equals, 0) 106 c.Assert(cache.Expired(), Equals, 0) 107 c.Assert(cache.Get("1"), Equals, nil) 108 c.Assert(cache.Has("1"), Equals, false) 109 110 item, exp := cache.GetWithExpiration("1") 111 c.Assert(item, Equals, nil) 112 c.Assert(exp.IsZero(), Equals, true) 113 }