Files
ccache/bucket_test.go
Karl Seguin e838337a8b Initial pass at leveraging generics
Still need to replace the linked list with a generic linked list and
want to remove the dependency on the expect package.
2022-03-02 21:26:07 +08:00

64 lines
1.3 KiB
Go

package ccache
import (
"testing"
"time"
. "github.com/karlseguin/expect"
)
type BucketTests struct {
}
func Test_Bucket(t *testing.T) {
Expectify(new(BucketTests), t)
}
func (_ *BucketTests) GetMissFromBucket() {
bucket := testBucket()
Expect(bucket.get("invalid")).To.Equal(nil)
}
func (_ *BucketTests) GetHitFromBucket() {
bucket := testBucket()
item := bucket.get("power")
assertValue(item, "9000")
}
func (_ *BucketTests) DeleteItemFromBucket() {
bucket := testBucket()
bucket.delete("power")
Expect(bucket.get("power")).To.Equal(nil)
}
func (_ *BucketTests) SetsANewBucketItem() {
bucket := testBucket()
item, existing := bucket.set("spice", "flow", time.Minute, false)
assertValue(item, "flow")
item = bucket.get("spice")
assertValue(item, "flow")
Expect(existing).To.Equal(nil)
}
func (_ *BucketTests) SetsAnExistingItem() {
bucket := testBucket()
item, existing := bucket.set("power", "9001", time.Minute, false)
assertValue(item, "9001")
item = bucket.get("power")
assertValue(item, "9001")
assertValue(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(item *Item[string], expected string) {
Expect(item.value).To.Equal(expected)
}