all_test.go 788 B

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