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 }