diff options
Diffstat (limited to 'flag_test.go')
| -rw-r--r-- | flag_test.go | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/flag_test.go b/flag_test.go index 1cc9ba8..0fb83c7 100644 --- a/flag_test.go +++ b/flag_test.go @@ -5,6 +5,7 @@ package core_test import ( "flag" + "sort" "strconv" "testing" @@ -141,3 +142,29 @@ func TestInitFlagSet(s *testing.T) { t.AssertEqual(42, *fi) }) } + +func TestParseStringEnum(s *testing.T) { + t := &core.T{T: s} + parse := core.ParseStringEnum("foo", "bar") + + t.Run("Match", func(t *core.T) { + val, err := parse("foo") + t.AssertErrorIs(nil, err) + t.AssertEqual("foo", val) + + val, err = parse("bar") + t.AssertErrorIs(nil, err) + t.AssertEqual("bar", val) + }) + + t.Run("UnknownValue", func(t *core.T) { + val, err := parse("baz") + var exp core.UnknownEnumValueError + if t.AssertErrorAs(&exp, err) { + t.AssertEqual("baz", exp.Actual) + sort.Strings(exp.Expected) + t.AssertEqual([]string{"bar", "foo"}, exp.Expected) + } + t.AssertEqual("", val) + }) +} |
