package util import "testing" func TestParseBool(t *testing.T) { t.Parallel() tests := []struct { name string raw string wantV bool wantO bool }{ {name: "true_1", raw: "1", wantV: true, wantO: true}, {name: "true_true", raw: "true", wantV: true, wantO: true}, {name: "true_yes", raw: "yes", wantV: true, wantO: true}, {name: "true_chinese", raw: "启用", wantV: true, wantO: true}, {name: "true_spaces_case", raw: " ON ", wantV: true, wantO: true}, {name: "false_0", raw: "0", wantV: false, wantO: true}, {name: "false_false", raw: "false", wantV: false, wantO: true}, {name: "false_no", raw: "no", wantV: false, wantO: true}, {name: "false_chinese", raw: "禁用", wantV: false, wantO: true}, {name: "false_spaces_case", raw: " Off ", wantV: false, wantO: true}, {name: "invalid", raw: "maybe", wantV: false, wantO: false}, {name: "empty", raw: "", wantV: false, wantO: false}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { gotV, gotO := ParseBool(tt.raw) if gotV != tt.wantV || gotO != tt.wantO { t.Fatalf("ParseBool(%q) = (%v,%v), want (%v,%v)", tt.raw, gotV, gotO, tt.wantV, tt.wantO) } }) } } func TestParseBoolDefault(t *testing.T) { t.Parallel() if got := ParseBoolDefault("true", false); got != true { t.Fatalf("expected true override default, got %v", got) } if got := ParseBoolDefault("invalid", true); got != true { t.Fatalf("expected default true on invalid input, got %v", got) } if got := ParseBoolDefault("", false); got != false { t.Fatalf("expected default false on empty input, got %v", got) } }