@@ -12,7 +12,7 @@ public static partial class ValidationStrategies
12
12
{
13
13
// runs all validators, accumulating all validation errors
14
14
public static Validator < T > HarvestErrorsTr < T >
15
- ( IEnumerable < Validator < T > > validators )
15
+ ( params Validator < T > [ ] validators )
16
16
=> t
17
17
=> validators
18
18
. Traverse ( validate => validate ( t ) )
@@ -21,29 +21,46 @@ public static Validator<T> HarvestErrorsTr<T>
21
21
22
22
public static partial class ValidationStrategiesTest
23
23
{
24
+ static Validator < string > ShouldBeLowerCase
25
+ => s
26
+ => ( s == s . ToLower ( ) ) ? Valid ( s ) : Error ( $ "{ s } should be lower case") ;
27
+
28
+ static Validator < string > ShouldBeOfLength ( int n )
29
+ => s
30
+ => ( s . Length == n ) ? Valid ( s ) : Error ( $ "{ s } should be of length { n } ") ;
31
+
32
+ static Validator < string > ValidateCountryCode
33
+ = HarvestErrorsTr ( ShouldBeLowerCase , ShouldBeOfLength ( 2 ) ) ;
34
+
35
+ [ TestCase ( "us" , ExpectedResult = "Valid(us)" ) ]
36
+ [ TestCase ( "US" , ExpectedResult = "Invalid([US should be lower case])" ) ]
37
+ [ TestCase ( "USA" , ExpectedResult = "Invalid([USA should be lower case, USA should be of length 2])" ) ]
38
+ public static string TestCountryCodeValidation ( string s )
39
+ => ValidateCountryCode ( s ) . ToString ( ) ;
40
+
24
41
public class HarvestErrors_WithTraverse_Test
25
42
{
26
43
[ Test ]
27
44
public void WhenAllValidatorsSucceed_ThenSucceed ( ) => Assert . AreEqual (
28
- actual : HarvestErrorsTr ( List ( Success , Success ) ) ( 1 ) ,
45
+ actual : HarvestErrorsTr ( Success , Success ) ( 1 ) ,
29
46
expected : Valid ( 1 )
30
47
) ;
31
48
32
49
[ Test ]
33
50
public void WhenNoValidators_ThenSucceed ( ) => Assert . AreEqual (
34
- actual : HarvestErrorsTr ( List < Validator < int > > ( ) ) ( 1 ) ,
51
+ actual : HarvestErrorsTr < int > ( ) ( 1 ) ,
35
52
expected : Valid ( 1 )
36
53
) ;
37
54
38
55
[ Test ]
39
56
public void WhenOneValidatorFails_ThenFail ( ) =>
40
- HarvestErrorsTr ( List ( Success , Failure ) ) ( 1 ) . Match (
57
+ HarvestErrorsTr ( Success , Failure ) ( 1 ) . Match (
41
58
Valid : ( _ ) => Assert . Fail ( ) ,
42
59
Invalid : ( errs ) => Assert . AreEqual ( 1 , errs . Count ( ) ) ) ;
43
60
44
61
[ Test ]
45
62
public void WhenSeveralValidatorsFail_ThenFail ( ) =>
46
- HarvestErrorsTr ( List ( Success , Failure , Failure , Success ) ) ( 1 ) . Match (
63
+ HarvestErrorsTr ( Success , Failure , Failure , Success ) ( 1 ) . Match (
47
64
Valid : ( _ ) => Assert . Fail ( ) ,
48
65
Invalid : ( errs ) => Assert . AreEqual ( 2 , errs . Count ( ) ) ) ; // all errors are returned
49
66
}
0 commit comments