vitess.io/vitess@v0.16.2/go/cache/cache_test.go (about) 1 package cache 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/stretchr/testify/require" 8 9 "vitess.io/vitess/go/cache/ristretto" 10 ) 11 12 func TestNewDefaultCacheImpl(t *testing.T) { 13 assertNullCache := func(t *testing.T, cache Cache) { 14 _, ok := cache.(*nullCache) 15 require.True(t, ok) 16 } 17 18 assertLFUCache := func(t *testing.T, cache Cache) { 19 _, ok := cache.(*ristretto.Cache) 20 require.True(t, ok) 21 } 22 23 assertLRUCache := func(t *testing.T, cache Cache) { 24 _, ok := cache.(*LRUCache) 25 require.True(t, ok) 26 } 27 28 tests := []struct { 29 cfg *Config 30 verify func(t *testing.T, cache Cache) 31 }{ 32 {&Config{MaxEntries: 0, MaxMemoryUsage: 0, LFU: false}, assertNullCache}, 33 {&Config{MaxEntries: 0, MaxMemoryUsage: 0, LFU: true}, assertNullCache}, 34 {&Config{MaxEntries: 100, MaxMemoryUsage: 0, LFU: false}, assertLRUCache}, 35 {&Config{MaxEntries: 0, MaxMemoryUsage: 1000, LFU: false}, assertNullCache}, 36 {&Config{MaxEntries: 100, MaxMemoryUsage: 1000, LFU: false}, assertLRUCache}, 37 {&Config{MaxEntries: 100, MaxMemoryUsage: 0, LFU: true}, assertNullCache}, 38 {&Config{MaxEntries: 100, MaxMemoryUsage: 1000, LFU: true}, assertLFUCache}, 39 {&Config{MaxEntries: 0, MaxMemoryUsage: 1000, LFU: true}, assertNullCache}, 40 } 41 for _, tt := range tests { 42 t.Run(fmt.Sprintf("%d.%d.%v", tt.cfg.MaxEntries, tt.cfg.MaxMemoryUsage, tt.cfg.LFU), func(t *testing.T) { 43 cache := NewDefaultCacheImpl(tt.cfg) 44 tt.verify(t, cache) 45 }) 46 } 47 }