all_test.go 763 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. package validate
  2. import "testing"
  3. func TestAll(t *testing.T) {
  4. type TestCase[T any] struct {
  5. Input T
  6. F func(T) error
  7. Err error
  8. }
  9. f := All(
  10. MinLength(4),
  11. MaxLength(8),
  12. Chars("0123456789abcdef"),
  13. In("abcd", "abcdef", "12345678"),
  14. )
  15. testCases := []TestCase[string]{
  16. {Input: "abcd", F: f},
  17. {Input: "abcdef", F: f},
  18. {Input: "12345678", F: f},
  19. {Input: "abc", F: f, Err: ErrTooFewChars},
  20. {Input: "abcdef012", F: f, Err: ErrTooManyChars},
  21. {Input: "abcdefgh", F: f, Err: ErrDisallowedChars},
  22. {Input: "01abcd", F: f, Err: ErrValueNotAllowed},
  23. }
  24. for n, tc := range testCases {
  25. t.Logf("(%d) Testing %q", n, tc.Input)
  26. err := tc.F(tc.Input)
  27. if err != tc.Err {
  28. t.Errorf("Expected error %v, got %v", tc.Err, err)
  29. }
  30. }
  31. }