diff --git a/internal/flag/boolptrvalue.go b/internal/flag/boolptrvalue.go index 7669c09..8a12e51 100644 --- a/internal/flag/boolptrvalue.go +++ b/internal/flag/boolptrvalue.go @@ -34,3 +34,5 @@ func (b *BoolPtrValue) Set(value string) error { return nil } + +func (b *BoolPtrValue) IsBoolFlag() bool { return true } diff --git a/internal/flag/boolptrvalue_test.go b/internal/flag/boolptrvalue_test.go new file mode 100644 index 0000000..d136f55 --- /dev/null +++ b/internal/flag/boolptrvalue_test.go @@ -0,0 +1,65 @@ +package flag_test + +import ( + "slices" + "testing" + + internalFlag "codeflow.dananglin.me.uk/apollo/enbas/internal/flag" +) + +func TestBoolPtrValue(t *testing.T) { + tests := []struct { + input string + want bool + }{ + { + input: "True", + want: true, + }, + { + input: "false", + want: false, + }, + } + + value := internalFlag.NewBoolPtrValue() + + for _, test := range slices.All(tests) { + if err := value.Set(test.input); err != nil { + t.Fatalf( + "Unable to parse %s as a BoolPtrValue: %v", + test.input, + err, + ) + } + + got := *value.Value + + if got != test.want { + t.Errorf( + "Unexpected bool parsed from %s: want %t, got %t", + test.input, + test.want, + got, + ) + } else { + t.Logf( + "Expected bool parsed from %s: got %t", + test.input, + got, + ) + } + } +} + +func TestNilBoolPtrValue(t *testing.T) { + value := internalFlag.NewBoolPtrValue() + want := "NOT SET" + got := value.String() + + if got != want { + t.Errorf("Unexpected string returned from the nil value; want %s, got %s", want, got) + } else { + t.Logf("Expected string returned from the nil value; got %s", got) + } +}