49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
package ccache
|
|
|
|
import (
|
|
"math"
|
|
"testing"
|
|
"time"
|
|
|
|
"github.com/karlseguin/ccache/v3/assert"
|
|
)
|
|
|
|
func Test_Item_Key(t *testing.T) {
|
|
item := &Item[int]{key: "foo"}
|
|
assert.Equal(t, item.Key(), "foo")
|
|
}
|
|
|
|
func Test_Item_Promotability(t *testing.T) {
|
|
item := &Item[int]{promotions: 4}
|
|
assert.Equal(t, item.shouldPromote(5), true)
|
|
assert.Equal(t, item.shouldPromote(5), false)
|
|
}
|
|
|
|
func Test_Item_Expired(t *testing.T) {
|
|
now := time.Now().UnixNano()
|
|
item1 := &Item[int]{expires: now + (10 * int64(time.Millisecond))}
|
|
item2 := &Item[int]{expires: now - (10 * int64(time.Millisecond))}
|
|
assert.Equal(t, item1.Expired(), false)
|
|
assert.Equal(t, item2.Expired(), true)
|
|
}
|
|
|
|
func Test_Item_TTL(t *testing.T) {
|
|
now := time.Now().UnixNano()
|
|
item1 := &Item[int]{expires: now + int64(time.Second)}
|
|
item2 := &Item[int]{expires: now - int64(time.Second)}
|
|
assert.Equal(t, int(math.Ceil(item1.TTL().Seconds())), 1)
|
|
assert.Equal(t, int(math.Ceil(item2.TTL().Seconds())), -1)
|
|
}
|
|
|
|
func Test_Item_Expires(t *testing.T) {
|
|
now := time.Now().UnixNano()
|
|
item := &Item[int]{expires: now + (10)}
|
|
assert.Equal(t, item.Expires().UnixNano(), now+10)
|
|
}
|
|
|
|
func Test_Item_Extend(t *testing.T) {
|
|
item := &Item[int]{expires: time.Now().UnixNano() + 10}
|
|
item.Extend(time.Minute * 2)
|
|
assert.Equal(t, item.Expires().Unix(), time.Now().Unix()+120)
|
|
}
|