github.com/hairyhenderson/gomplate/v4@v4.0.0-pre-2.0.20240520121557-362f058f0c93/coll/index_test.go (about)

     1  package coll
     2  
     3  import (
     4  	"testing"
     5  
     6  	"github.com/stretchr/testify/assert"
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestIndex(t *testing.T) {
    11  	out, err := Index(map[string]interface{}{
    12  		"foo": "bar", "baz": "qux",
    13  	}, "foo")
    14  	require.NoError(t, err)
    15  	assert.Equal(t, "bar", out)
    16  
    17  	out, err = Index(map[string]interface{}{
    18  		"foo": "bar", "baz": "qux", "quux": "corge",
    19  	}, "foo", 2)
    20  	require.NoError(t, err)
    21  	assert.Equal(t, byte('r'), out)
    22  
    23  	out, err = Index([]interface{}{"foo", "bar", "baz"}, 2)
    24  	require.NoError(t, err)
    25  	assert.Equal(t, "baz", out)
    26  
    27  	out, err = Index([]interface{}{"foo", "bar", "baz"}, 2, 2)
    28  	require.NoError(t, err)
    29  	assert.Equal(t, byte('z'), out)
    30  
    31  	// error cases
    32  	out, err = Index([]interface{}{"foo", "bar", "baz"}, 0, 1, 2)
    33  	require.Error(t, err)
    34  	assert.Nil(t, out)
    35  
    36  	out, err = Index(nil, 0)
    37  	require.Error(t, err)
    38  	assert.Nil(t, out)
    39  
    40  	out, err = Index("foo", nil)
    41  	require.Error(t, err)
    42  	assert.Nil(t, out)
    43  
    44  	out, err = Index(map[interface{}]string{nil: "foo", 2: "bar"}, "baz")
    45  	require.Error(t, err)
    46  	assert.Nil(t, out)
    47  
    48  	out, err = Index([]int{}, 0)
    49  	require.Error(t, err)
    50  	assert.Nil(t, out)
    51  }