github.com/Finschia/ostracon@v1.1.5/rpc/core/env_test.go (about)

     1  package core
     2  
     3  import (
     4  	"fmt"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  	"github.com/stretchr/testify/require"
     9  
    10  	"github.com/Finschia/ostracon/types"
    11  )
    12  
    13  func TestPaginationPage(t *testing.T) {
    14  	cases := []struct {
    15  		totalCount int
    16  		perPage    int
    17  		page       int
    18  		newPage    int
    19  		expErr     bool
    20  	}{
    21  		{0, 10, 1, 1, false},
    22  
    23  		{0, 10, 0, 1, false},
    24  		{0, 10, 1, 1, false},
    25  		{0, 10, 2, 0, true},
    26  
    27  		{5, 10, -1, 0, true},
    28  		{5, 10, 0, 1, false},
    29  		{5, 10, 1, 1, false},
    30  		{5, 10, 2, 0, true},
    31  		{5, 10, 2, 0, true},
    32  
    33  		{5, 5, 1, 1, false},
    34  		{5, 5, 2, 0, true},
    35  		{5, 5, 3, 0, true},
    36  
    37  		{5, 3, 2, 2, false},
    38  		{5, 3, 3, 0, true},
    39  
    40  		{5, 2, 2, 2, false},
    41  		{5, 2, 3, 3, false},
    42  		{5, 2, 4, 0, true},
    43  	}
    44  
    45  	for _, c := range cases {
    46  		p, err := validatePage(&c.page, c.perPage, c.totalCount)
    47  		if c.expErr {
    48  			assert.Error(t, err)
    49  			continue
    50  		}
    51  
    52  		assert.Equal(t, c.newPage, p, fmt.Sprintf("%v", c))
    53  	}
    54  
    55  	// nil case
    56  	p, err := validatePage(nil, 1, 1)
    57  	if assert.NoError(t, err) {
    58  		assert.Equal(t, 1, p)
    59  	}
    60  }
    61  
    62  func TestPaginationPerPage(t *testing.T) {
    63  	cases := []struct {
    64  		totalCount int
    65  		perPage    int
    66  		newPerPage int
    67  	}{
    68  		{5, 0, defaultPerPage},
    69  		{5, 1, 1},
    70  		{5, 2, 2},
    71  		{5, defaultPerPage, defaultPerPage},
    72  		{5, maxPerPage - 1, maxPerPage - 1},
    73  		{5, maxPerPage, maxPerPage},
    74  		{5, maxPerPage + 1, maxPerPage},
    75  	}
    76  
    77  	for _, c := range cases {
    78  		p := validatePerPage(&c.perPage)
    79  		assert.Equal(t, c.newPerPage, p, fmt.Sprintf("%v", c))
    80  	}
    81  
    82  	// nil case
    83  	p := validatePerPage(nil)
    84  	assert.Equal(t, defaultPerPage, p)
    85  }
    86  
    87  func TestInitGenesisChunks(t *testing.T) {
    88  	env = &Environment{}
    89  
    90  	//
    91  	// success
    92  	//
    93  	env.genChunks = nil
    94  	env.GenDoc = &types.GenesisDoc{}
    95  	err := InitGenesisChunks()
    96  	require.NoError(t, err)
    97  
    98  	env.genChunks = []string{}
    99  	err = InitGenesisChunks()
   100  	require.NoError(t, err)
   101  
   102  	env.GenDoc = nil
   103  	err = InitGenesisChunks()
   104  	require.NoError(t, err)
   105  }