summaryrefslogtreecommitdiffstats
path: root/pkg/common/cartesian_test.go
blob: c49de06cea19c6a6165c88bda630e96b8a5ff9a1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
package common

import (
	"testing"

	"github.com/stretchr/testify/assert"
)

func TestCartesianProduct(t *testing.T) {
	assert := assert.New(t)
	input := map[string][]interface{}{
		"foo": {1, 2, 3, 4},
		"bar": {"a", "b", "c"},
		"baz": {false, true},
	}

	output := CartesianProduct(input)
	assert.Len(output, 24)

	for _, v := range output {
		assert.Len(v, 3)

		assert.Contains(v, "foo")
		assert.Contains(v, "bar")
		assert.Contains(v, "baz")
	}

	input = map[string][]interface{}{
		"foo": {1, 2, 3, 4},
		"bar": {},
		"baz": {false, true},
	}
	output = CartesianProduct(input)
	assert.Len(output, 0)

	input = map[string][]interface{}{}
	output = CartesianProduct(input)
	assert.Len(output, 0)
}