12345678910111213141516171819202122232425262728293031323334353637383940414243444546 |
- package validate
- import "testing"
- func TestAll(t *testing.T) {
- type TestCase[T any] struct {
- Input T
- F func(T) error
- Err error
- }
- f := All(
- MinLength(4),
- MaxLength(8),
- Chars("0123456789abcdef"),
- In("abcd", "abcdef", "12345678"),
- )
- testCases := []TestCase[string]{
- {Input: "abcd", F: f},
- {Input: "abcdef", F: f},
- {Input: "12345678", F: f},
- {Input: "abc", F: f, Err: ErrTooFewChars},
- {Input: "abcdef012", F: f, Err: ErrTooManyChars},
- {Input: "abcdefgh", F: f, Err: ErrDisallowedChars},
- {Input: "01abcd", F: f, Err: ErrValueNotAllowed},
- }
- for _, tc := range testCases {
- t.Logf("%q", tc.Input)
- err := tc.F(tc.Input)
- if tc.Err != nil {
- if err == nil {
- t.Errorf("Expected %s; got nil", tc.Err)
- }
- if err != tc.Err {
- t.Errorf("Expected %s; got %s", tc.Err, err)
- }
- } else {
- if err != nil {
- t.Errorf("Expected nil; got %s", err)
- }
- }
- }
- }
|