github.com/viant/toolbox@v0.34.5/iterator_test.go (about) 1 package toolbox_test 2 3 import ( 4 "testing" 5 6 "github.com/stretchr/testify/assert" 7 "github.com/viant/toolbox" 8 ) 9 10 func TestSliceIterator(t *testing.T) { 11 12 { 13 slice := []string{"a", "r", "c"} 14 iterator := toolbox.NewSliceIterator(slice) 15 var values = make([]interface{}, 1) 16 value := values[0] 17 18 assert.True(t, iterator.HasNext()) 19 err := iterator.Next(&value) 20 assert.Nil(t, err) 21 assert.Equal(t, "a", value) 22 23 assert.True(t, iterator.HasNext()) 24 err = iterator.Next(&value) 25 assert.Nil(t, err) 26 assert.Equal(t, "r", value) 27 28 assert.True(t, iterator.HasNext()) 29 err = iterator.Next(&value) 30 assert.Nil(t, err) 31 32 assert.Equal(t, "c", value) 33 34 } 35 { 36 slice := []string{"a", "r", "c"} 37 iterator := toolbox.NewSliceIterator(slice) 38 value := "" 39 40 assert.True(t, iterator.HasNext()) 41 err := iterator.Next(&value) 42 assert.Nil(t, err) 43 assert.Equal(t, "a", value) 44 45 assert.True(t, iterator.HasNext()) 46 err = iterator.Next(&value) 47 assert.Nil(t, err) 48 assert.Equal(t, "r", value) 49 50 assert.True(t, iterator.HasNext()) 51 err = iterator.Next(&value) 52 assert.Nil(t, err) 53 assert.Equal(t, "c", value) 54 55 } 56 { 57 slice := []interface{}{"a", "z", "c"} 58 iterator := toolbox.NewSliceIterator(slice) 59 value := "" 60 61 assert.True(t, iterator.HasNext()) 62 err := iterator.Next(&value) 63 assert.Nil(t, err) 64 assert.Equal(t, "a", value) 65 66 assert.True(t, iterator.HasNext()) 67 err = iterator.Next(&value) 68 assert.Nil(t, err) 69 assert.Equal(t, "z", value) 70 71 var values = make([]interface{}, 1) 72 assert.True(t, iterator.HasNext()) 73 err = iterator.Next(&values[0]) 74 assert.Nil(t, err) 75 assert.Equal(t, "c", values[0]) 76 77 } 78 79 { 80 slice := []int{3, 2, 1} 81 iterator := toolbox.NewSliceIterator(slice) 82 value := 0 83 assert.True(t, iterator.HasNext()) 84 85 err := iterator.Next(&value) 86 assert.Nil(t, err) 87 assert.Equal(t, 3, value) 88 89 assert.True(t, iterator.HasNext()) 90 err = iterator.Next(&value) 91 assert.Nil(t, err) 92 assert.Equal(t, 2, value) 93 94 assert.True(t, iterator.HasNext()) 95 err = iterator.Next(&value) 96 assert.Nil(t, err) 97 assert.Equal(t, 1, value) 98 } 99 100 }