Skip to content

Commit 764d757

Browse files
committed
impl test
1 parent 4c80853 commit 764d757

File tree

5 files changed

+71
-3
lines changed

5 files changed

+71
-3
lines changed

src/rule/number.rs

+56
Original file line numberDiff line numberDiff line change
@@ -6,3 +6,59 @@ mod odd;
66

77
pub use even::*;
88
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+
}

src/rule/number/equal.rs

+6-3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22
macro_rules! equal_rule {
33
(($e: literal, $t: ty)) => {
44
paste::item! {
5+
#[allow(dead_code)]
56
pub type [<Equal $e $t>] = $crate::Refined<[<EqualRule $e $t>]>;
7+
8+
#[allow(dead_code)]
69
pub struct [<EqualRule $e $t>];
710

811
impl $crate::rule::Rule for [<EqualRule $e $t>] {
@@ -18,9 +21,9 @@ macro_rules! equal_rule {
1821
}
1922
}
2023
};
21-
($t: ty, $($ts: ty),+) => {
22-
odd_rule! {$t}
23-
odd_rule! {$($ts), +}
24+
(($e: literal, $t: ty), $(($es: literal, $ts: ty)),+) => {
25+
equal_rule!(($e, $t));
26+
equal_rule!($(($es, $ts)), +);
2427
};
2528
}
2629

src/rule/number/even.rs

+3
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,10 @@
11
macro_rules! even_rule {
22
($t: ty) => {
33
paste::item! {
4+
#[allow(dead_code)]
45
pub type [<Even $t:upper>] = $crate::Refined<[<EvenRule $t:upper>]>;
6+
7+
#[allow(dead_code)]
58
pub struct [<EvenRule $t:upper>];
69

710
impl $crate::rule::Rule for [<EvenRule $t:upper>] {

src/rule/number/greater.rs

+3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22
macro_rules! greater_rule {
33
(($e: literal, $t: ty)) => {
44
paste::item! {
5+
#[allow(dead_code)]
56
pub type [<Greater $e $t>] = $crate::Refined<[<GreaterRule $e $t>]>;
7+
8+
#[allow(dead_code)]
69
pub struct [<GreaterRule $e $t>];
710

811
impl $crate::rule::Rule for [<GreaterRule $e $t>] {

src/rule/number/less.rs

+3
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22
macro_rules! less_rule {
33
(($e: literal, $t: ty)) => {
44
paste::item! {
5+
#[allow(dead_code)]
56
pub type [<Less $e $t>] = $crate::Refined<[<LessRule $e $t>]>;
7+
8+
#[allow(dead_code)]
69
pub struct [<LessRule $e $t>];
710

811
impl $crate::rule::Rule for [<LessRule $e $t>] {

0 commit comments

Comments
 (0)