67 lines
1.5 KiB
Go
67 lines
1.5 KiB
Go
package testsuite
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"forge.cadoles.com/arcad/edge/pkg/storage/driver/cache/lfu"
|
|
"github.com/pkg/errors"
|
|
)
|
|
|
|
func testSetGetDelete(t *testing.T, store lfu.Store[string, string]) error {
|
|
const (
|
|
key = "mykey"
|
|
value = "foobar"
|
|
)
|
|
|
|
cache := lfu.NewCache[string, string](store, lfu.WithCapacity[string, string](10))
|
|
|
|
if e, g := 0, cache.Size(); e != g {
|
|
t.Errorf("cache.Size(): expected '%v', got '%v'", e, g)
|
|
}
|
|
|
|
if err := cache.Set(key, value); err != nil {
|
|
return errors.WithStack(err)
|
|
}
|
|
|
|
if e, g := len(value), cache.Size(); e != g {
|
|
t.Errorf("cache.Size(): expected '%v', got '%v'", e, g)
|
|
}
|
|
|
|
if e, g := 1, cache.Len(); e != g {
|
|
t.Errorf("cache.Len(): expected '%v', got '%v'", e, g)
|
|
}
|
|
|
|
retrieved, err := cache.Get(key)
|
|
if err != nil {
|
|
return errors.WithStack(err)
|
|
}
|
|
|
|
if e, g := value, retrieved; e != g {
|
|
t.Errorf("cache.Get(key): expected '%v', got '%v'", e, g)
|
|
}
|
|
|
|
if err := cache.Delete(key); err != nil {
|
|
return errors.WithStack(err)
|
|
}
|
|
|
|
if _, err := cache.Get(key); err == nil || !errors.Is(err, lfu.ErrNotFound) {
|
|
t.Errorf("cache.Get(key): err should be lfu.ErrNotFound, got '%v'", errors.WithStack(err))
|
|
}
|
|
|
|
if e, g := value, retrieved; e != g {
|
|
t.Errorf("cache.Get(key): expected '%v', got '%v'", e, g)
|
|
}
|
|
|
|
if e, g := 0, cache.Size(); e != g {
|
|
t.Errorf("cache.Size(): expected '%v', got '%v'", e, g)
|
|
}
|
|
|
|
if e, g := 0, cache.Len(); e != g {
|
|
t.Errorf("cache.Len(): expected '%v', got '%v'", e, g)
|
|
}
|
|
|
|
t.Logf("cache [capacity: %d, size: %d, len: %d]", cache.Capacity(), cache.Size(), cache.Len())
|
|
|
|
return nil
|
|
}
|