github.com/okex/exchain@v1.8.0/libs/tendermint/rpc/core/env_test.go (about) 1 package core 2 3 import ( 4 "fmt" 5 "testing" 6 7 "github.com/stretchr/testify/assert" 8 ) 9 10 func TestPaginationPage(t *testing.T) { 11 cases := []struct { 12 totalCount int 13 perPage int 14 page int 15 newPage int 16 expErr bool 17 }{ 18 {0, 10, 1, 1, false}, 19 20 {0, 10, 0, 1, false}, 21 {0, 10, 1, 1, false}, 22 {0, 10, 2, 0, true}, 23 24 {5, 10, -1, 0, true}, 25 {5, 10, 0, 1, false}, 26 {5, 10, 1, 1, false}, 27 {5, 10, 2, 0, true}, 28 {5, 10, 2, 0, true}, 29 30 {5, 5, 1, 1, false}, 31 {5, 5, 2, 0, true}, 32 {5, 5, 3, 0, true}, 33 34 {5, 3, 2, 2, false}, 35 {5, 3, 3, 0, true}, 36 37 {5, 2, 2, 2, false}, 38 {5, 2, 3, 3, false}, 39 {5, 2, 4, 0, true}, 40 } 41 42 for _, c := range cases { 43 p, err := validatePage(c.page, c.perPage, c.totalCount) 44 if c.expErr { 45 assert.Error(t, err) 46 continue 47 } 48 49 assert.Equal(t, c.newPage, p, fmt.Sprintf("%v", c)) 50 } 51 52 } 53 54 func TestPaginationPerPage(t *testing.T) { 55 cases := []struct { 56 totalCount int 57 perPage int 58 newPerPage int 59 }{ 60 {5, 0, defaultPerPage}, 61 {5, 1, 1}, 62 {5, 2, 2}, 63 {5, defaultPerPage, defaultPerPage}, 64 {5, maxPerPage - 1, maxPerPage - 1}, 65 {5, maxPerPage, maxPerPage}, 66 {5, maxPerPage + 1, maxPerPage}, 67 } 68 69 for _, c := range cases { 70 p := validatePerPage(c.perPage) 71 assert.Equal(t, c.newPerPage, p, fmt.Sprintf("%v", c)) 72 } 73 }