package internal import ( "encoding/json" "fmt" "github.com/go-playground/assert/v2" "strconv" "testing" ) var count = []int{123, 1, 10, 31, 1} // 120,3+1+6,4+6,10,10,5+1 var serverInfoList1 = make(ServerInfoList, 0) func init() { for i, c := range count { serverInfoList1 = append(serverInfoList1, &ServerInfo{ ServerId: strconv.Itoa(i), TotalAccountCount: c, }) } } func TestServer(t *testing.T) { totalCount, pageList := serverInfoList1.TidyToPageList(10, func(info *ServerInfo) int { return info.TotalAccountCount }) assert.Equal(t, totalCount, 166) data, _ := json.MarshalIndent(pageList, "", " ") fmt.Printf("%v", string(data)) // 头尾 assert.Equal(t, len(pageList), 17) page1 := pageList[0] assert.Equal(t, page1.PageNo, 1) assert.Equal(t, page1.Count, 10) page17 := pageList[16] assert.Equal(t, page17.PageNo, 17) assert.Equal(t, page17.Count, 6) // 第13个有3+1+6三个服务器数量组成 page13 := pageList[12] assert.Equal(t, len(page13.ServerList), 3) assert.Equal(t, page13.ServerList[0].Offset, 120) assert.Equal(t, page13.ServerList[0].Count, 3) assert.Equal(t, page13.ServerList[1].Offset, 0) assert.Equal(t, page13.ServerList[1].Count, 1) assert.Equal(t, page13.ServerList[2].Offset, 0) assert.Equal(t, page13.ServerList[2].Count, 6) // 第14个有6+4 page14 := pageList[13] assert.Equal(t, len(page14.ServerList), 2) assert.Equal(t, page14.ServerList[0].Offset, 6) assert.Equal(t, page14.ServerList[0].Count, 4) assert.Equal(t, page14.ServerList[1].Offset, 0) assert.Equal(t, page14.ServerList[1].Count, 6) page15 := pageList[14] assert.Equal(t, len(page15.ServerList), 1) assert.Equal(t, page15.ServerList[0].Offset, 6) assert.Equal(t, page15.ServerList[0].Count, 10) page16 := pageList[15] assert.Equal(t, len(page16.ServerList), 1) assert.Equal(t, page16.ServerList[0].Offset, 16) assert.Equal(t, page16.ServerList[0].Count, 10) }