12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- package pool
- import (
- "context"
- "testing"
- "time"
- "github.com/stretchr/testify/assert"
- )
- func lg() Factory[int] {
- initial := -1
- return func(context.Context) (int, error) {
- initial++
- return initial, nil
- }
- }
- func TestPool_Basic(t *testing.T) {
- g := lg()
- pool := New[int](g)
- elm, _ := pool.Get()
- assert.Equal(t, 0, elm)
- pool.Put(elm)
- elm, _ = pool.Get()
- assert.Equal(t, 0, elm)
- elm, _ = pool.Get()
- assert.Equal(t, 1, elm)
- }
- func TestPool_MaxSize(t *testing.T) {
- g := lg()
- size := 5
- pool := New[int](g, WithSize[int](size))
- var items []int
- for i := 0; i < size; i++ {
- item, _ := pool.Get()
- items = append(items, item)
- }
- extra, _ := pool.Get()
- assert.Equal(t, size, extra)
- for _, item := range items {
- pool.Put(item)
- }
- pool.Put(extra)
- for _, item := range items {
- elm, _ := pool.Get()
- assert.Equal(t, item, elm)
- }
- }
- func TestPool_MaxAge(t *testing.T) {
- g := lg()
- pool := New[int](g, WithAge[int](20))
- elm, _ := pool.Get()
- pool.Put(elm)
- elm, _ = pool.Get()
- assert.Equal(t, 0, elm)
- pool.Put(elm)
- time.Sleep(time.Millisecond * 22)
- elm, _ = pool.Get()
- assert.Equal(t, 1, elm)
- }
|