code.gitea.io/gitea@v1.19.3/modules/util/paginate_test.go (about)

     1  // Copyright 2021 The Gitea Authors. All rights reserved.
     2  // SPDX-License-Identifier: MIT
     3  
     4  package util
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  )
    11  
    12  func TestPaginateSlice(t *testing.T) {
    13  	stringSlice := []string{"a", "b", "c", "d", "e"}
    14  	result, ok := PaginateSlice(stringSlice, 1, 2).([]string)
    15  	assert.True(t, ok)
    16  	assert.EqualValues(t, []string{"a", "b"}, result)
    17  
    18  	result, ok = PaginateSlice(stringSlice, 100, 2).([]string)
    19  	assert.True(t, ok)
    20  	assert.EqualValues(t, []string{}, result)
    21  
    22  	result, ok = PaginateSlice(stringSlice, 3, 2).([]string)
    23  	assert.True(t, ok)
    24  	assert.EqualValues(t, []string{"e"}, result)
    25  
    26  	result, ok = PaginateSlice(stringSlice, 1, 0).([]string)
    27  	assert.True(t, ok)
    28  	assert.EqualValues(t, []string{"a", "b", "c", "d", "e"}, result)
    29  
    30  	result, ok = PaginateSlice(stringSlice, 1, -1).([]string)
    31  	assert.True(t, ok)
    32  	assert.EqualValues(t, []string{"a", "b", "c", "d", "e"}, result)
    33  
    34  	type Test struct {
    35  		Val int
    36  	}
    37  
    38  	testVar := []*Test{{Val: 2}, {Val: 3}, {Val: 4}}
    39  	testVar, ok = PaginateSlice(testVar, 1, 50).([]*Test)
    40  	assert.True(t, ok)
    41  	assert.EqualValues(t, []*Test{{Val: 2}, {Val: 3}, {Val: 4}}, testVar)
    42  
    43  	testVar, ok = PaginateSlice(testVar, 2, 2).([]*Test)
    44  	assert.True(t, ok)
    45  	assert.EqualValues(t, []*Test{{Val: 4}}, testVar)
    46  }