50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
package main
|
|
|
|
import (
|
|
"sort"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
type expansionTestCase struct {
|
|
input string
|
|
expectedOutput []string
|
|
}
|
|
|
|
func TestExpandEnabled(t *testing.T) {
|
|
expansionTests := []expansionTestCase{
|
|
{"", []string{}},
|
|
// Default case
|
|
{"cs,os", []string{"cs", "os"}},
|
|
// Placeholder expansion
|
|
{defaultCollectorsPlaceholder, strings.Split(defaultCollectors, ",")},
|
|
// De-duplication
|
|
{"cs,cs", []string{"cs"}},
|
|
// De-duplicate placeholder
|
|
{defaultCollectorsPlaceholder + "," + defaultCollectorsPlaceholder, strings.Split(defaultCollectors, ",")},
|
|
// Composite case
|
|
{"foo," + defaultCollectorsPlaceholder + ",bar", append(strings.Split(defaultCollectors, ","), "foo", "bar")},
|
|
}
|
|
|
|
for _, testCase := range expansionTests {
|
|
output := expandEnabledCollectors(testCase.input)
|
|
sort.Strings(output)
|
|
|
|
success := true
|
|
if len(output) != len(testCase.expectedOutput) {
|
|
success = false
|
|
} else {
|
|
sort.Strings(testCase.expectedOutput)
|
|
for idx := range output {
|
|
if output[idx] != testCase.expectedOutput[idx] {
|
|
success = false
|
|
break
|
|
}
|
|
}
|
|
}
|
|
if !success {
|
|
t.Error("For", testCase.input, "expected", testCase.expectedOutput, "got", output)
|
|
}
|
|
}
|
|
}
|