@@ -6,3 +6,59 @@ mod odd;
6
6
7
7
pub use even:: * ;
8
8
pub use odd:: * ;
9
+
10
+ #[ cfg( test) ]
11
+ mod test {
12
+ use crate :: rule:: composer:: { And , Or } ;
13
+ use crate :: { equal_rule, greater_rule, less_rule, Refined } ;
14
+
15
+ greater_rule ! ( ( 18 , u8 ) ) ;
16
+ less_rule ! ( ( 80 , u8 ) ) ;
17
+ equal_rule ! ( ( 18 , u8 ) , ( 80 , u8 ) ) ;
18
+
19
+ type TargetAge = Refined < TargetAgeRule > ;
20
+
21
+ // 18 <= age
22
+ type TargetAge18OrMore = Or < EqualRule18u8 , GreaterRule18u8 > ;
23
+
24
+ // age <= 80
25
+ type TargetAge80OrLess = Or < EqualRule80u8 , LessRule80u8 > ;
26
+
27
+ // 18 <= age <= 80
28
+ type TargetAgeRule = And < TargetAge18OrMore , TargetAge80OrLess > ;
29
+
30
+ #[ test]
31
+ fn test_age_0 ( ) -> anyhow:: Result < ( ) > {
32
+ let age_result = TargetAge :: new ( 0 ) ;
33
+ assert ! ( age_result. is_err( ) ) ;
34
+ Ok ( ( ) )
35
+ }
36
+
37
+ #[ test]
38
+ fn test_age_18 ( ) -> anyhow:: Result < ( ) > {
39
+ let age_result = TargetAge :: new ( 18 ) ;
40
+ assert ! ( age_result. is_ok( ) ) ;
41
+ Ok ( ( ) )
42
+ }
43
+
44
+ #[ test]
45
+ fn test_age_50 ( ) -> anyhow:: Result < ( ) > {
46
+ let age_result = TargetAge :: new ( 50 ) ;
47
+ assert ! ( age_result. is_ok( ) ) ;
48
+ Ok ( ( ) )
49
+ }
50
+
51
+ #[ test]
52
+ fn test_age_80 ( ) -> anyhow:: Result < ( ) > {
53
+ let age_result = TargetAge :: new ( 80 ) ;
54
+ assert ! ( age_result. is_ok( ) ) ;
55
+ Ok ( ( ) )
56
+ }
57
+
58
+ #[ test]
59
+ fn test_age_81 ( ) -> anyhow:: Result < ( ) > {
60
+ let age_result = TargetAge :: new ( 81 ) ;
61
+ assert ! ( age_result. is_err( ) ) ;
62
+ Ok ( ( ) )
63
+ }
64
+ }
0 commit comments