github.com/ava-labs/avalanchego@v1.11.11/cache/metercacher/cache_test.go (about) 1 // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved. 2 // See the file LICENSE for licensing terms. 3 4 package metercacher 5 6 import ( 7 "testing" 8 9 "github.com/prometheus/client_golang/prometheus" 10 "github.com/stretchr/testify/require" 11 12 "github.com/ava-labs/avalanchego/cache" 13 "github.com/ava-labs/avalanchego/cache/cachetest" 14 "github.com/ava-labs/avalanchego/ids" 15 ) 16 17 func TestInterface(t *testing.T) { 18 type scenario struct { 19 description string 20 setup func(size int) cache.Cacher[ids.ID, int64] 21 } 22 23 scenarios := []scenario{ 24 { 25 description: "cache LRU", 26 setup: func(size int) cache.Cacher[ids.ID, int64] { 27 return &cache.LRU[ids.ID, int64]{Size: size} 28 }, 29 }, 30 { 31 description: "sized cache LRU", 32 setup: func(size int) cache.Cacher[ids.ID, int64] { 33 return cache.NewSizedLRU[ids.ID, int64](size*cachetest.IntSize, cachetest.IntSizeFunc) 34 }, 35 }, 36 } 37 38 for _, scenario := range scenarios { 39 for _, test := range cachetest.Tests { 40 baseCache := scenario.setup(test.Size) 41 c, err := New("", prometheus.NewRegistry(), baseCache) 42 require.NoError(t, err) 43 test.Func(t, c) 44 } 45 } 46 }