fix pagintor nil

v1.1.3
git 2026-03-13 23:47:14 +08:00
parent 2e095de7f6
commit cfc593cc67
Signed by: git
GPG Key ID: 3F65EFFA44207ADD
3 changed files with 59 additions and 1 deletions

View File

@ -1,5 +1,5 @@
{
"go.goroot": "/opt/go/sdk/go1",
"go.goroot": "/opt/go/sdk/go1.25",
"go.toolsEnvVars": {
"GOEXPERIMENT": "jsonv2"
}

View File

@ -36,6 +36,10 @@ func New[T any](items []T, page int, limit int, pageCount int) *Paginator[T] {
}
func (p *Paginator[T]) Items() []T {
if len(p.rawTtems) == 0 {
return nil
}
// 计算起始索引和结束索引
startIdx := (p.curPage - 1) * p.limit

View File

@ -2,6 +2,8 @@ package paginator
import (
"testing"
"github.com/stretchr/testify/assert"
)
func TestCut(t *testing.T) {
@ -12,3 +14,55 @@ func TestCut(t *testing.T) {
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())
})
}
}