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  }