github.com/gnolang/gno@v0.0.0-20240520182011-228e9d0192ce/tm2/pkg/bft/rpc/core/pipe_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 t.Parallel() 12 13 cases := []struct { 14 totalCount int 15 perPage int 16 page int 17 newPage int 18 expErr bool 19 }{ 20 {0, 10, 1, 1, false}, 21 22 {0, 10, 0, 1, false}, 23 {0, 10, 1, 1, false}, 24 {0, 10, 2, 0, true}, 25 26 {5, 10, -1, 0, true}, 27 {5, 10, 0, 1, false}, 28 {5, 10, 1, 1, false}, 29 {5, 10, 2, 0, true}, 30 {5, 10, 2, 0, true}, 31 32 {5, 5, 1, 1, false}, 33 {5, 5, 2, 0, true}, 34 {5, 5, 3, 0, true}, 35 36 {5, 3, 2, 2, false}, 37 {5, 3, 3, 0, true}, 38 39 {5, 2, 2, 2, false}, 40 {5, 2, 3, 3, false}, 41 {5, 2, 4, 0, true}, 42 } 43 44 for _, c := range cases { 45 p, err := validatePage(c.page, c.perPage, c.totalCount) 46 if c.expErr { 47 assert.Error(t, err) 48 continue 49 } 50 51 assert.Equal(t, c.newPage, p, fmt.Sprintf("%v", c)) 52 } 53 } 54 55 func TestPaginationPerPage(t *testing.T) { 56 t.Parallel() 57 58 cases := []struct { 59 totalCount int 60 perPage int 61 newPerPage int 62 }{ 63 {5, 0, defaultPerPage}, 64 {5, 1, 1}, 65 {5, 2, 2}, 66 {5, defaultPerPage, defaultPerPage}, 67 {5, maxPerPage - 1, maxPerPage - 1}, 68 {5, maxPerPage, maxPerPage}, 69 {5, maxPerPage + 1, maxPerPage}, 70 } 71 72 for _, c := range cases { 73 p := validatePerPage(c.perPage) 74 assert.Equal(t, c.newPerPage, p, fmt.Sprintf("%v", c)) 75 } 76 }