package validate import ( "errors" "fmt" "testing" ) func ExampleAll() { testAll := All(MinLength(4), Chars("0123456789abcdef")) fmt.Println(testAll("invalid input")) // Output: contains disallowed characters } func TestAll(t *testing.T) { testAll := All( MinLength(4), MaxLength(8), Chars("0123456789abcdef"), In("abcd", "abcdef", "12345678"), ) testCases := map[string]error{ "abcd": nil, "abcdef": nil, "12345678": nil, "abc": ErrMustBeLonger.With(4), "abcdef012": ErrMustBeShorter.With(8), "abcdefgh": ErrDisallowedChars, "01abcd": ErrValueNotAllowed, } for input, want := range testCases { t.Run(input, func(t *testing.T) { got := testAll(input) if !errors.Is(got, want) { t.Error("got", got) t.Error("want", want) } }) } }