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)
 | |
| }
 | 
