1
0
mirror of https://github.com/mgechev/revive.git synced 2025-11-23 22:04:49 +02:00
Files
revive/rule/enforce_switch_style_test.go
2025-06-01 09:57:47 +02:00

93 lines
2.2 KiB
Go

package rule
import (
"errors"
"testing"
"github.com/mgechev/revive/lint"
)
func TestEnforceSwitchStyleRule_Configure(t *testing.T) {
tests := []struct {
name string
arguments lint.Arguments
wantErr error
wantAllowNoDefault bool
wantAllowDefaultNotLast bool
}{
{
name: "no arguments",
arguments: lint.Arguments{},
wantErr: nil,
},
{
name: "valid argument: allowNoDefault",
arguments: lint.Arguments{
"allowNoDefault",
},
wantErr: nil,
wantAllowNoDefault: true,
},
{
name: "valid argument: allowDefaultNotLast",
arguments: lint.Arguments{
"allowDefaultNotLast",
},
wantErr: nil,
wantAllowDefaultNotLast: true,
},
{
name: "valid lowercased arguments",
arguments: lint.Arguments{
"allowdefaultnotlast",
"allownodefault",
},
wantErr: nil,
wantAllowNoDefault: true,
wantAllowDefaultNotLast: true,
},
{
name: "unknown argument: unknown",
arguments: lint.Arguments{
"unknown",
},
wantErr: errors.New(`invalid argument "unknown" for rule enforce-switch-style; expected "allowNoDefault" or "allowDefaultNotLast"`),
},
{
name: "unexpected type argument: 10",
arguments: lint.Arguments{
10,
},
wantErr: errors.New(`invalid argument for rule enforce-switch-style; expected string but got int`),
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
var rule EnforceSwitchStyleRule
err := rule.Configure(tt.arguments)
if tt.wantErr != nil {
if err == nil {
t.Errorf("unexpected error: got = nil, want = %v", tt.wantErr)
return
}
if err.Error() != tt.wantErr.Error() {
t.Errorf("unexpected error: got = %v, want = %v", err, tt.wantErr)
}
return
}
if err != nil {
t.Errorf("unexpected error: got = %v, want = nil", err)
}
if tt.wantAllowNoDefault != rule.allowNoDefault {
t.Errorf("unexpected allowNoDefault: want = %v, got %v", tt.wantAllowNoDefault, rule.allowNoDefault)
}
if tt.wantAllowDefaultNotLast != rule.allowDefaultNotLast {
t.Errorf("unexpected funcRetValStyle: want = %v, got %v", tt.wantAllowDefaultNotLast, rule.allowDefaultNotLast)
}
})
}
}