fix pagintor nil
parent
2e095de7f6
commit
cfc593cc67
|
|
@ -1,5 +1,5 @@
|
||||||
{
|
{
|
||||||
"go.goroot": "/opt/go/sdk/go1",
|
"go.goroot": "/opt/go/sdk/go1.25",
|
||||||
"go.toolsEnvVars": {
|
"go.toolsEnvVars": {
|
||||||
"GOEXPERIMENT": "jsonv2"
|
"GOEXPERIMENT": "jsonv2"
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -36,6 +36,10 @@ func New[T any](items []T, page int, limit int, pageCount int) *Paginator[T] {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *Paginator[T]) Items() []T {
|
func (p *Paginator[T]) Items() []T {
|
||||||
|
if len(p.rawTtems) == 0 {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
// 计算起始索引和结束索引
|
// 计算起始索引和结束索引
|
||||||
startIdx := (p.curPage - 1) * p.limit
|
startIdx := (p.curPage - 1) * p.limit
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,8 @@ package paginator
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
)
|
)
|
||||||
|
|
||||||
func TestCut(t *testing.T) {
|
func TestCut(t *testing.T) {
|
||||||
|
|
@ -12,3 +14,55 @@ func TestCut(t *testing.T) {
|
||||||
pag := New(items, page, limit, pageCount)
|
pag := New(items, page, limit, pageCount)
|
||||||
t.Logf("pag: %s", pag)
|
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())
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue