Files
validate/all_test.go
T
2023-10-07 13:42:17 +01:00

47 lines
914 B
Go

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)
}
}
}
}