github.com/evdatsion/aphelion-dpos-bft@v0.32.1/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 12 cases := []struct { 13 totalCount int 14 perPage int 15 page int 16 newPage int 17 }{ 18 {0, 0, 1, 1}, 19 20 {0, 10, 0, 1}, 21 {0, 10, 1, 1}, 22 {0, 10, 2, 1}, 23 24 {5, 10, -1, 1}, 25 {5, 10, 0, 1}, 26 {5, 10, 1, 1}, 27 {5, 10, 2, 1}, 28 {5, 10, 2, 1}, 29 30 {5, 5, 1, 1}, 31 {5, 5, 2, 1}, 32 {5, 5, 3, 1}, 33 34 {5, 3, 2, 2}, 35 {5, 3, 3, 2}, 36 37 {5, 2, 2, 2}, 38 {5, 2, 3, 3}, 39 {5, 2, 4, 3}, 40 } 41 42 for _, c := range cases { 43 p := validatePage(c.page, c.perPage, c.totalCount) 44 assert.Equal(t, c.newPage, p, fmt.Sprintf("%v", c)) 45 } 46 47 } 48 49 func TestPaginationPerPage(t *testing.T) { 50 cases := []struct { 51 totalCount int 52 perPage int 53 newPerPage int 54 }{ 55 {5, 0, defaultPerPage}, 56 {5, 1, 1}, 57 {5, 2, 2}, 58 {5, defaultPerPage, defaultPerPage}, 59 {5, maxPerPage - 1, maxPerPage - 1}, 60 {5, maxPerPage, maxPerPage}, 61 {5, maxPerPage + 1, maxPerPage}, 62 } 63 64 for _, c := range cases { 65 p := validatePerPage(c.perPage) 66 assert.Equal(t, c.newPerPage, p, fmt.Sprintf("%v", c)) 67 } 68 }