- package main
-
- import (
- "fmt"
- "math/rand"
- "testing"
-
- "github.com/stretchr/testify/assert"
- "github.com/stretchr/testify/require"
- )
-
- func TestCombinations(t *testing.T) {
- input := map[string][]interface{}{
- "bool": {false, true},
- "int": {1, 2, 3},
- "string": {"foo", "bar"},
- }
-
- c := combinations(input)
- assert.Equal(t, []map[string]interface{}{
- {"bool": false, "int": 1, "string": "foo"},
- {"bool": false, "int": 1, "string": "bar"},
- {"bool": false, "int": 2, "string": "foo"},
- {"bool": false, "int": 2, "string": "bar"},
- {"bool": false, "int": 3, "string": "foo"},
- {"bool": false, "int": 3, "string": "bar"},
- {"bool": true, "int": 1, "string": "foo"},
- {"bool": true, "int": 1, "string": "bar"},
- {"bool": true, "int": 2, "string": "foo"},
- {"bool": true, "int": 2, "string": "bar"},
- {"bool": true, "int": 3, "string": "foo"},
- {"bool": true, "int": 3, "string": "bar"},
- }, c)
- }
-
- func TestUniformSetChoice(t *testing.T) {
- set := uniformSetChoice([]string{"a", "b", "c"})
- r := rand.New(rand.NewSource(2384))
-
- for i := 0; i < 100; i++ {
- t.Run(fmt.Sprintf("Iteration%03d", i), func(t *testing.T) {
- set = append(set, t.Name())
-
- t.Run("ChooseAtLeastSubset", func(t *testing.T) {
- require.True(t, len(set.ChooseAtLeast(r, 1)) >= 1)
- require.True(t, len(set.ChooseAtLeast(r, 2)) >= 2)
- require.True(t, len(set.ChooseAtLeast(r, len(set)/2)) >= len(set)/2)
- })
- t.Run("ChooseAtLeastEqualOrGreaterToLength", func(t *testing.T) {
- require.Len(t, set.ChooseAtLeast(r, len(set)), len(set))
- require.Len(t, set.ChooseAtLeast(r, len(set)+1), len(set))
- require.Len(t, set.ChooseAtLeast(r, len(set)*10), len(set))
- })
- t.Run("ChooseSingle", func(t *testing.T) {
- require.True(t, len(set.Choose(r)) >= 1)
- })
- })
- }
- }
|