57 lines
1.3 KiB
Go
57 lines
1.3 KiB
Go
package ccache
|
|
|
|
import (
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/karlseguin/ccache/v3/assert"
|
|
)
|
|
|
|
func Test_Bucket_GetMissFromBucket(t *testing.T) {
|
|
bucket := testBucket()
|
|
assert.Nil(t, bucket.get("invalid"))
|
|
}
|
|
|
|
func Test_Bucket_GetHitFromBucket(t *testing.T) {
|
|
bucket := testBucket()
|
|
item := bucket.get("power")
|
|
assertValue(t, item, "9000")
|
|
}
|
|
|
|
func Test_Bucket_DeleteItemFromBucket(t *testing.T) {
|
|
bucket := testBucket()
|
|
bucket.delete("power")
|
|
assert.Nil(t, bucket.get("power"))
|
|
}
|
|
|
|
func Test_Bucket_SetsANewBucketItem(t *testing.T) {
|
|
bucket := testBucket()
|
|
item, existing := bucket.set("spice", "flow", time.Minute, false)
|
|
assertValue(t, item, "flow")
|
|
item = bucket.get("spice")
|
|
assertValue(t, item, "flow")
|
|
assert.Equal(t, existing, nil)
|
|
}
|
|
|
|
func Test_Bucket_SetsAnExistingItem(t *testing.T) {
|
|
bucket := testBucket()
|
|
item, existing := bucket.set("power", "9001", time.Minute, false)
|
|
assertValue(t, item, "9001")
|
|
item = bucket.get("power")
|
|
assertValue(t, item, "9001")
|
|
assertValue(t, existing, "9000")
|
|
}
|
|
|
|
func testBucket() *bucket[string] {
|
|
b := &bucket[string]{lookup: make(map[string]*Item[string])}
|
|
b.lookup["power"] = &Item[string]{
|
|
key: "power",
|
|
value: "9000",
|
|
}
|
|
return b
|
|
}
|
|
|
|
func assertValue(t *testing.T, item *Item[string], expected string) {
|
|
assert.Equal(t, item.value, expected)
|
|
}
|