github.com/blend/go-sdk@v1.20240719.1/collections/slices_test.go (about)

     1  /*
     2  
     3  Copyright (c) 2024 - Present. Blend Labs, Inc. All rights reserved
     4  Use of this source code is governed by a MIT license that can be found in the LICENSE file.
     5  
     6  */
     7  
     8  package collections
     9  
    10  import (
    11  	"testing"
    12  
    13  	"github.com/blend/go-sdk/assert"
    14  )
    15  
    16  func TestFirst(t *testing.T) {
    17  	a := assert.New(t)
    18  	sa := []string{"Foo", "bar", "baz"}
    19  	a.Equal("Foo", First(sa))
    20  }
    21  
    22  func TestLast(t *testing.T) {
    23  	a := assert.New(t)
    24  	sa := []string{"Foo", "bar", "baz"}
    25  	a.Equal("baz", Last(sa))
    26  }
    27  
    28  func TestContains(t *testing.T) {
    29  	a := assert.New(t)
    30  	sa := []string{"Foo", "bar", "baz"}
    31  	a.True(Contains(sa, "Foo"))
    32  	a.False(Contains(sa, "FOO"))
    33  	a.False(Contains(sa, "will"))
    34  }
    35  
    36  func TestReverse(t *testing.T) {
    37  	a := assert.New(t)
    38  	strSlice := []string{"h", "e", "l", "l", "o"}
    39  	strSlice2 := Reverse(strSlice)
    40  	a.Equal([]string{"h", "e", "l", "l", "o"}, strSlice)
    41  	a.Equal([]string{"o", "l", "l", "e", "h"}, strSlice2)
    42  
    43  	intSlice := []int{}
    44  	newSlice := Reverse(intSlice)
    45  	a.Nil(newSlice)
    46  
    47  	intSlice = []int{0}
    48  	newSlice = Reverse(intSlice)
    49  	a.Equal([]int{0}, newSlice)
    50  
    51  	intSlice = []int{0, 1}
    52  	newSlice = Reverse(intSlice)
    53  	a.Equal([]int{0, 1}, intSlice)
    54  	a.Equal([]int{1, 0}, newSlice)
    55  
    56  	intSlice = []int{0, 1, 2}
    57  	newSlice = Reverse(intSlice)
    58  	a.Equal([]int{0, 1, 2}, intSlice)
    59  	a.Equal([]int{2, 1, 0}, newSlice)
    60  
    61  	intSlice = []int{0, 1, 2, 3}
    62  	newSlice = Reverse(intSlice)
    63  	a.Equal([]int{0, 1, 2, 3}, intSlice)
    64  	a.Equal([]int{3, 2, 1, 0}, newSlice)
    65  
    66  	intSlice = []int{0, 1, 2, 3, 4}
    67  	newSlice = Reverse(intSlice)
    68  	a.Equal([]int{0, 1, 2, 3, 4}, intSlice)
    69  	a.Equal([]int{4, 3, 2, 1, 0}, newSlice)
    70  }
    71  
    72  func TestReverseInPlace(t *testing.T) {
    73  	a := assert.New(t)
    74  	strSlice := []string{"h", "e", "l", "l", "o"}
    75  	ReverseInPlace(strSlice)
    76  	a.Equal([]string{"o", "l", "l", "e", "h"}, strSlice)
    77  
    78  	intSlice := []int{}
    79  	ReverseInPlace(intSlice)
    80  	a.Equal([]int{}, intSlice)
    81  
    82  	intSlice = []int{0}
    83  	ReverseInPlace(intSlice)
    84  	a.Equal([]int{0}, intSlice)
    85  
    86  	intSlice = []int{0, 1}
    87  	ReverseInPlace(intSlice)
    88  	a.Equal([]int{1, 0}, intSlice)
    89  
    90  	intSlice = []int{0, 1, 2}
    91  	ReverseInPlace(intSlice)
    92  	a.Equal([]int{2, 1, 0}, intSlice)
    93  
    94  	intSlice = []int{0, 1, 2, 3}
    95  	ReverseInPlace(intSlice)
    96  	a.Equal([]int{3, 2, 1, 0}, intSlice)
    97  
    98  	intSlice = []int{0, 1, 2, 3, 4}
    99  	ReverseInPlace(intSlice)
   100  	a.Equal([]int{4, 3, 2, 1, 0}, intSlice)
   101  }