Some checks failed
kotlin / test (push) Has been skipped
python / test (push) Has been skipped
typescript / test (push) Has been skipped
go / build darwin/amd64 (push) Has been cancelled
go / build linux/amd64 (push) Has been cancelled
go / build windows/amd64 (push) Has been cancelled
go / build darwin/arm64 (push) Has been cancelled
go / build linux/arm64 (push) Has been cancelled
go / build windows/arm64 (push) Has been cancelled
go / test (push) Has been cancelled
go / vuln_check (push) Has been cancelled
156 lines
2.9 KiB
Go
156 lines
2.9 KiB
Go
package opts
|
|
|
|
import "testing"
|
|
|
|
func TestExperimentFromString(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
input string
|
|
want Experiment
|
|
}{
|
|
{
|
|
name: "empty string",
|
|
input: "",
|
|
want: Experiment{},
|
|
},
|
|
{
|
|
name: "whitespace only",
|
|
input: " ",
|
|
want: Experiment{},
|
|
},
|
|
{
|
|
name: "unknown experiment",
|
|
input: "unknownexperiment",
|
|
want: Experiment{},
|
|
},
|
|
{
|
|
name: "multiple unknown experiments",
|
|
input: "foo,bar,baz",
|
|
want: Experiment{},
|
|
},
|
|
{
|
|
name: "unknown with no prefix",
|
|
input: "nounknown",
|
|
want: Experiment{},
|
|
},
|
|
{
|
|
name: "whitespace around experiments",
|
|
input: " foo , bar , baz ",
|
|
want: Experiment{},
|
|
},
|
|
{
|
|
name: "empty items in list",
|
|
input: "foo,,bar",
|
|
want: Experiment{},
|
|
},
|
|
{
|
|
name: "enable coreanalyzer",
|
|
input: "coreanalyzer",
|
|
want: Experiment{CoreAnalyzer: true},
|
|
},
|
|
{
|
|
name: "disable coreanalyzer",
|
|
input: "nocoreanalyzer",
|
|
want: Experiment{CoreAnalyzer: false},
|
|
},
|
|
{
|
|
name: "enable then disable coreanalyzer",
|
|
input: "coreanalyzer,nocoreanalyzer",
|
|
want: Experiment{CoreAnalyzer: false},
|
|
},
|
|
{
|
|
name: "coreanalyzer case insensitive",
|
|
input: "CoreAnalyzer",
|
|
want: Experiment{CoreAnalyzer: true},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got := ExperimentFromString(tt.input)
|
|
if got != tt.want {
|
|
t.Errorf("ExperimentFromString(%q) = %+v, want %+v", tt.input, got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestExperimentEnabled(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
exp Experiment
|
|
want []string
|
|
}{
|
|
{
|
|
name: "no experiments enabled",
|
|
exp: Experiment{},
|
|
want: nil,
|
|
},
|
|
{
|
|
name: "coreanalyzer enabled",
|
|
exp: Experiment{CoreAnalyzer: true},
|
|
want: []string{"coreanalyzer"},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got := tt.exp.Enabled()
|
|
if len(got) != len(tt.want) {
|
|
t.Errorf("Experiment.Enabled() = %v, want %v", got, tt.want)
|
|
return
|
|
}
|
|
for i := range got {
|
|
if got[i] != tt.want[i] {
|
|
t.Errorf("Experiment.Enabled()[%d] = %q, want %q", i, got[i], tt.want[i])
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestExperimentString(t *testing.T) {
|
|
exp := Experiment{}
|
|
if got := exp.String(); got != "" {
|
|
t.Errorf("Experiment.String() = %q, want %q", got, "")
|
|
}
|
|
}
|
|
|
|
func TestIsKnownExperiment(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
input string
|
|
want bool
|
|
}{
|
|
{
|
|
name: "unknown experiment",
|
|
input: "unknown",
|
|
want: false,
|
|
},
|
|
{
|
|
name: "empty string",
|
|
input: "",
|
|
want: false,
|
|
},
|
|
{
|
|
name: "coreanalyzer lowercase",
|
|
input: "coreanalyzer",
|
|
want: true,
|
|
},
|
|
{
|
|
name: "coreanalyzer mixed case",
|
|
input: "CoreAnalyzer",
|
|
want: true,
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got := isKnownExperiment(tt.input)
|
|
if got != tt.want {
|
|
t.Errorf("isKnownExperiment(%q) = %v, want %v", tt.input, got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|