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  }