package paginator import ( "testing" "github.com/stretchr/testify/assert" ) func TestCut(t *testing.T) { items := []int{1, 2, 3} page := 2 limit := 1 pageCount := 1 pag := New(items, page, limit, pageCount) t.Logf("pag: %s", pag) } func TestNilItems(t *testing.T) { pag := New[int](nil, 1, 10, 0) assert.Equal(t, 0, pag.TotalCount()) assert.Equal(t, 0, pag.TotalPage()) assert.Empty(t, pag.Items()) assert.Equal(t, 0, pag.CurPage()) assert.Equal(t, 0, pag.PreviewPage()) assert.Equal(t, 0, pag.NextPage()) assert.Equal(t, 0, pag.FirstPage()) assert.Equal(t, 0, pag.LastPage()) assert.Empty(t, pag.PageRange()) } func TestEmptyItems(t *testing.T) { pag := New([]int{}, 1, 10, 0) assert.Equal(t, 0, pag.TotalCount()) assert.Equal(t, 0, pag.TotalPage()) assert.Empty(t, pag.Items()) assert.Equal(t, 0, pag.CurPage()) assert.Equal(t, 0, pag.PreviewPage()) assert.Equal(t, 0, pag.NextPage()) assert.Equal(t, 0, pag.FirstPage()) assert.Equal(t, 0, pag.LastPage()) assert.Empty(t, pag.PageRange()) } func TestNilItemsWithDifferentPages(t *testing.T) { tests := []struct { name string page int limit int pageCount int }{ {name: "page=0,limit=1", page: 0, limit: 1, pageCount: 0}, {name: "page=1,limit=1", page: 1, limit: 1, pageCount: 0}, {name: "page=5,limit=10", page: 5, limit: 10, pageCount: 0}, {name: "page=1,limit=1,pageCount=3", page: 1, limit: 1, pageCount: 3}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { pag := New[string](nil, tt.page, tt.limit, tt.pageCount) assert.Equal(t, 0, pag.TotalCount()) assert.Equal(t, 0, pag.TotalPage()) assert.Empty(t, pag.Items()) }) } }