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  }