package testsuite import ( "testing" "forge.cadoles.com/arcad/edge/pkg/storage/driver/cache/lfu" "github.com/pkg/errors" ) func testMultipleSet(t *testing.T, store lfu.Store[string, string]) error { const ( key = "mykey" firstValue = "foo" secondValue = "bar" thirdValue = "foobar" ) cache := lfu.NewCache[string, string](store) if e, g := 0, cache.Size(); e != g { t.Errorf("cache.Size(): expected '%v', got '%v'", e, g) } if err := cache.Set(key, firstValue); err != nil { return errors.WithStack(err) } if e, g := len(firstValue), cache.Size(); e != g { t.Errorf("cache.Size(): expected '%v', got '%v'", e, g) } retrieved, err := cache.Get(key) if err != nil { return errors.WithStack(err) } if e, g := firstValue, retrieved; e != g { t.Errorf("cache.Get(key): expected '%v', got '%v'", e, g) } if err := cache.Set(key, secondValue); err != nil { return errors.WithStack(err) } if e, g := len(secondValue), cache.Size(); e != g { t.Errorf("cache.Size(): expected '%v', got '%v'", e, g) } retrieved, err = cache.Get(key) if err != nil { return errors.WithStack(err) } if e, g := secondValue, retrieved; e != g { t.Errorf("cache.Get(key): expected '%v', got '%v'", e, g) } if err := cache.Set(key, thirdValue); err != nil { return errors.WithStack(err) } if e, g := len(thirdValue), cache.Size(); e != g { t.Errorf("cache.Size(): expected '%v', got '%v'", e, g) } retrieved, err = cache.Get(key) if err != nil { return errors.WithStack(err) } if e, g := thirdValue, retrieved; e != g { t.Errorf("cache.Get(key): expected '%v', got '%v'", e, g) } if e, g := len(thirdValue), cache.Size(); e != g { t.Errorf("cache.Size(): expected '%v', got '%v'", e, g) } return nil }