47 lines
914 B
Go
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)
|
|
}
|
|
}
|
|
}
|
|
}
|