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

     1  // Copyright 2023 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 TestSliceContains(t *testing.T) {
    13  	assert.True(t, SliceContains([]int{2, 0, 2, 3}, 2))
    14  	assert.True(t, SliceContains([]int{2, 0, 2, 3}, 0))
    15  	assert.True(t, SliceContains([]int{2, 0, 2, 3}, 3))
    16  
    17  	assert.True(t, SliceContains([]string{"2", "0", "2", "3"}, "0"))
    18  	assert.True(t, SliceContains([]float64{2, 0, 2, 3}, 0))
    19  	assert.True(t, SliceContains([]bool{false, true, false}, true))
    20  
    21  	assert.False(t, SliceContains([]int{2, 0, 2, 3}, 4))
    22  	assert.False(t, SliceContains([]int{}, 4))
    23  	assert.False(t, SliceContains(nil, 4))
    24  }
    25  
    26  func TestSliceContainsString(t *testing.T) {
    27  	assert.True(t, SliceContainsString([]string{"c", "b", "a", "b"}, "a"))
    28  	assert.True(t, SliceContainsString([]string{"c", "b", "a", "b"}, "b"))
    29  	assert.True(t, SliceContainsString([]string{"c", "b", "a", "b"}, "A", true))
    30  	assert.True(t, SliceContainsString([]string{"C", "B", "A", "B"}, "a", true))
    31  
    32  	assert.False(t, SliceContainsString([]string{"c", "b", "a", "b"}, "z"))
    33  	assert.False(t, SliceContainsString([]string{"c", "b", "a", "b"}, "A"))
    34  	assert.False(t, SliceContainsString([]string{}, "a"))
    35  	assert.False(t, SliceContainsString(nil, "a"))
    36  }
    37  
    38  func TestSliceSortedEqual(t *testing.T) {
    39  	assert.True(t, SliceSortedEqual([]int{2, 0, 2, 3}, []int{2, 0, 2, 3}))
    40  	assert.True(t, SliceSortedEqual([]int{3, 0, 2, 2}, []int{2, 0, 2, 3}))
    41  	assert.True(t, SliceSortedEqual([]int{}, []int{}))
    42  	assert.True(t, SliceSortedEqual([]int(nil), nil))
    43  	assert.True(t, SliceSortedEqual([]int(nil), []int{}))
    44  	assert.True(t, SliceSortedEqual([]int{}, []int{}))
    45  
    46  	assert.True(t, SliceSortedEqual([]string{"2", "0", "2", "3"}, []string{"2", "0", "2", "3"}))
    47  	assert.True(t, SliceSortedEqual([]float64{2, 0, 2, 3}, []float64{2, 0, 2, 3}))
    48  	assert.True(t, SliceSortedEqual([]bool{false, true, false}, []bool{false, true, false}))
    49  
    50  	assert.False(t, SliceSortedEqual([]int{2, 0, 2}, []int{2, 0, 2, 3}))
    51  	assert.False(t, SliceSortedEqual([]int{}, []int{2, 0, 2, 3}))
    52  	assert.False(t, SliceSortedEqual(nil, []int{2, 0, 2, 3}))
    53  	assert.False(t, SliceSortedEqual([]int{2, 0, 2, 4}, []int{2, 0, 2, 3}))
    54  	assert.False(t, SliceSortedEqual([]int{2, 0, 0, 3}, []int{2, 0, 2, 3}))
    55  }
    56  
    57  func TestSliceEqual(t *testing.T) {
    58  	assert.True(t, SliceEqual([]int{2, 0, 2, 3}, []int{2, 0, 2, 3}))
    59  	assert.True(t, SliceEqual([]int{}, []int{}))
    60  	assert.True(t, SliceEqual([]int(nil), nil))
    61  	assert.True(t, SliceEqual([]int(nil), []int{}))
    62  	assert.True(t, SliceEqual([]int{}, []int{}))
    63  
    64  	assert.True(t, SliceEqual([]string{"2", "0", "2", "3"}, []string{"2", "0", "2", "3"}))
    65  	assert.True(t, SliceEqual([]float64{2, 0, 2, 3}, []float64{2, 0, 2, 3}))
    66  	assert.True(t, SliceEqual([]bool{false, true, false}, []bool{false, true, false}))
    67  
    68  	assert.False(t, SliceEqual([]int{3, 0, 2, 2}, []int{2, 0, 2, 3}))
    69  	assert.False(t, SliceEqual([]int{2, 0, 2}, []int{2, 0, 2, 3}))
    70  	assert.False(t, SliceEqual([]int{}, []int{2, 0, 2, 3}))
    71  	assert.False(t, SliceEqual(nil, []int{2, 0, 2, 3}))
    72  	assert.False(t, SliceEqual([]int{2, 0, 2, 4}, []int{2, 0, 2, 3}))
    73  	assert.False(t, SliceEqual([]int{2, 0, 0, 3}, []int{2, 0, 2, 3}))
    74  }
    75  
    76  func TestSliceRemoveAll(t *testing.T) {
    77  	assert.Equal(t, SliceRemoveAll([]int{2, 0, 2, 3}, 0), []int{2, 2, 3})
    78  	assert.Equal(t, SliceRemoveAll([]int{2, 0, 2, 3}, 2), []int{0, 3})
    79  	assert.Equal(t, SliceRemoveAll([]int{0, 0, 0, 0}, 0), []int{})
    80  	assert.Equal(t, SliceRemoveAll([]int{2, 0, 2, 3}, 4), []int{2, 0, 2, 3})
    81  	assert.Equal(t, SliceRemoveAll([]int{}, 0), []int{})
    82  	assert.Equal(t, SliceRemoveAll([]int(nil), 0), []int(nil))
    83  	assert.Equal(t, SliceRemoveAll([]int{}, 0), []int{})
    84  
    85  	assert.Equal(t, SliceRemoveAll([]string{"2", "0", "2", "3"}, "0"), []string{"2", "2", "3"})
    86  	assert.Equal(t, SliceRemoveAll([]float64{2, 0, 2, 3}, 0), []float64{2, 2, 3})
    87  	assert.Equal(t, SliceRemoveAll([]bool{false, true, false}, true), []bool{false, false})
    88  }