...
1 package ccache
2
3 import (
4 "testing"
5 "time"
6
7 . "github.com/karlseguin/expect"
8 )
9
10 type BucketTests struct {
11 }
12
13 func Test_Bucket(t *testing.T) {
14 Expectify(new(BucketTests), t)
15 }
16
17 func (_ *BucketTests) GetMissFromBucket() {
18 bucket := testBucket()
19 Expect(bucket.get("invalid")).To.Equal(nil)
20 }
21
22 func (_ *BucketTests) GetHitFromBucket() {
23 bucket := testBucket()
24 item := bucket.get("power")
25 assertValue(item, "9000")
26 }
27
28 func (_ *BucketTests) DeleteItemFromBucket() {
29 bucket := testBucket()
30 bucket.delete("power")
31 Expect(bucket.get("power")).To.Equal(nil)
32 }
33
34 func (_ *BucketTests) SetsANewBucketItem() {
35 bucket := testBucket()
36 item, existing := bucket.set("spice", TestValue("flow"), time.Minute, false)
37 assertValue(item, "flow")
38 item = bucket.get("spice")
39 assertValue(item, "flow")
40 Expect(existing).To.Equal(nil)
41 }
42
43 func (_ *BucketTests) SetsAnExistingItem() {
44 bucket := testBucket()
45 item, existing := bucket.set("power", TestValue("9001"), time.Minute, false)
46 assertValue(item, "9001")
47 item = bucket.get("power")
48 assertValue(item, "9001")
49 assertValue(existing, "9000")
50 }
51
52 func testBucket() *bucket {
53 b := &bucket{lookup: make(map[string]*Item)}
54 b.lookup["power"] = &Item{
55 key: "power",
56 value: TestValue("9000"),
57 }
58 return b
59 }
60
61 func assertValue(item *Item, expected string) {
62 value := item.value.(TestValue)
63 Expect(value).To.Equal(TestValue(expected))
64 }
65
66 type TestValue string
67
68 func (v TestValue) Expires() time.Time {
69 return time.Now()
70 }
71
View as plain text