diff options
| author | Dave Henderson <dhenderson@gmail.com> | 2024-01-25 20:11:31 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-25 20:11:31 -0500 |
| commit | ebb97fb7367fb983cffc1935a8fb57e4b80f5249 (patch) | |
| tree | 43ef6cd01f629f60f59efe1e5b003f7c8e3a1257 /funcs/coll_test.go | |
| parent | f1d9158ea99abbe556251c1ff2fe970f3b460ee9 (diff) | |
Move funcs package to internal (#1977)
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'funcs/coll_test.go')
| -rw-r--r-- | funcs/coll_test.go | 179 |
1 files changed, 0 insertions, 179 deletions
diff --git a/funcs/coll_test.go b/funcs/coll_test.go deleted file mode 100644 index 71900a59..00000000 --- a/funcs/coll_test.go +++ /dev/null @@ -1,179 +0,0 @@ -package funcs - -import ( - "context" - "reflect" - "strconv" - "testing" - - "github.com/stretchr/testify/assert" - "github.com/stretchr/testify/require" -) - -func TestCreateCollFuncs(t *testing.T) { - t.Parallel() - - for i := 0; i < 10; i++ { - // Run this a bunch to catch race conditions - t.Run(strconv.Itoa(i), func(t *testing.T) { - t.Parallel() - - ctx := context.Background() - fmap := CreateCollFuncs(ctx) - actual := fmap["coll"].(func() interface{}) - - assert.Equal(t, ctx, actual().(*CollFuncs).ctx) - }) - } -} - -func TestFlatten(t *testing.T) { - t.Parallel() - - c := CollFuncs{} - - _, err := c.Flatten() - assert.Error(t, err) - - _, err = c.Flatten(42) - assert.Error(t, err) - - out, err := c.Flatten([]interface{}{1, []interface{}{[]int{2}, 3}}) - require.NoError(t, err) - assert.EqualValues(t, []interface{}{1, 2, 3}, out) - - out, err = c.Flatten(1, []interface{}{1, []interface{}{[]int{2}, 3}}) - require.NoError(t, err) - assert.EqualValues(t, []interface{}{1, []int{2}, 3}, out) -} - -func TestPick(t *testing.T) { - t.Parallel() - - c := &CollFuncs{} - - _, err := c.Pick() - assert.Error(t, err) - - _, err = c.Pick("") - assert.Error(t, err) - - _, err = c.Pick("foo", nil) - assert.Error(t, err) - - _, err = c.Pick("foo", "bar") - assert.Error(t, err) - - _, err = c.Pick(map[string]interface{}{}, "foo", "bar", map[string]interface{}{}) - assert.Error(t, err) - - in := map[string]interface{}{ - "foo": "bar", - "bar": true, - "": "baz", - } - out, err := c.Pick("baz", in) - require.NoError(t, err) - assert.EqualValues(t, map[string]interface{}{}, out) - - expected := map[string]interface{}{ - "foo": "bar", - "bar": true, - } - out, err = c.Pick("foo", "bar", in) - require.NoError(t, err) - assert.EqualValues(t, expected, out) - - expected = map[string]interface{}{ - "": "baz", - } - out, err = c.Pick("", in) - require.NoError(t, err) - assert.EqualValues(t, expected, out) - - out, err = c.Pick("foo", "bar", "", in) - require.NoError(t, err) - assert.EqualValues(t, in, out) -} - -func TestOmit(t *testing.T) { - t.Parallel() - - c := &CollFuncs{} - - _, err := c.Omit() - assert.Error(t, err) - - _, err = c.Omit("") - assert.Error(t, err) - - _, err = c.Omit("foo", nil) - assert.Error(t, err) - - _, err = c.Omit("foo", "bar") - assert.Error(t, err) - - _, err = c.Omit(map[string]interface{}{}, "foo", "bar", map[string]interface{}{}) - assert.Error(t, err) - - in := map[string]interface{}{ - "foo": "bar", - "bar": true, - "": "baz", - } - out, err := c.Omit("baz", in) - require.NoError(t, err) - assert.EqualValues(t, in, out) - - expected := map[string]interface{}{ - "foo": "bar", - "bar": true, - } - out, err = c.Omit("", in) - require.NoError(t, err) - assert.EqualValues(t, expected, out) - - expected = map[string]interface{}{ - "": "baz", - } - out, err = c.Omit("foo", "bar", in) - require.NoError(t, err) - assert.EqualValues(t, expected, out) - - out, err = c.Omit("foo", "bar", "", in) - require.NoError(t, err) - assert.EqualValues(t, map[string]interface{}{}, out) -} - -func TestGoSlice(t *testing.T) { - t.Parallel() - - c := &CollFuncs{} - - in := reflect.ValueOf(nil) - _, err := c.GoSlice(in) - assert.Error(t, err) - - in = reflect.ValueOf(42) - _, err = c.GoSlice(in) - assert.Error(t, err) - - // invalid index type - in = reflect.ValueOf([]interface{}{1}) - _, err = c.GoSlice(in, reflect.ValueOf([]interface{}{[]int{2}})) - assert.Error(t, err) - - // valid slice, no slicing - in = reflect.ValueOf([]int{1}) - out, err := c.GoSlice(in) - require.NoError(t, err) - assert.Equal(t, reflect.TypeOf([]int{}), out.Type()) - assert.EqualValues(t, []int{1}, out.Interface()) - - // valid slice, slicing - in = reflect.ValueOf([]string{"foo", "bar", "baz"}) - out, err = c.GoSlice(in, reflect.ValueOf(1), reflect.ValueOf(3)) - require.NoError(t, err) - assert.Equal(t, reflect.TypeOf([]string{}), out.Type()) - assert.EqualValues(t, []string{"bar", "baz"}, out.Interface()) -} |
