forked from StrafesNET/strafe-project
59 lines
1.0 KiB
Rust
59 lines
1.0 KiB
Rust
use crate::ratio::Ratio;
|
|
|
|
macro_rules! test_op{
|
|
($ratio_op:ident,$op:ident,$a:expr,$b:expr,$c:expr,$d:expr)=>{
|
|
assert_eq!(
|
|
Ratio::new($a,$b).$ratio_op(Ratio::new($c,$d)),
|
|
(($a as f32)/($b as f32)).$op(&(($c as f32)/($d as f32)))
|
|
);
|
|
};
|
|
}
|
|
|
|
macro_rules! test_many_ops{
|
|
($ratio_op:ident,$op:ident)=>{
|
|
test_op!($ratio_op,$op,1,2,3,4);
|
|
test_op!($ratio_op,$op,1,2,-3,4);
|
|
test_op!($ratio_op,$op,-1,2,-3,4);
|
|
test_op!($ratio_op,$op,-1,-2,-3,4);
|
|
test_op!($ratio_op,$op,2,1,6,3);
|
|
test_op!($ratio_op,$op,-2,1,6,3);
|
|
test_op!($ratio_op,$op,2,-1,-6,3);
|
|
test_op!($ratio_op,$op,2,1,6,-3);
|
|
};
|
|
}
|
|
|
|
#[test]
|
|
fn test_lt(){
|
|
test_many_ops!(lt_ratio,lt);
|
|
}
|
|
|
|
#[test]
|
|
fn test_gt(){
|
|
test_many_ops!(gt_ratio,gt);
|
|
}
|
|
|
|
#[test]
|
|
fn test_le(){
|
|
test_many_ops!(le_ratio,le);
|
|
}
|
|
|
|
#[test]
|
|
fn test_ge(){
|
|
test_many_ops!(ge_ratio,ge);
|
|
}
|
|
|
|
#[test]
|
|
fn test_eq(){
|
|
test_many_ops!(eq_ratio,eq);
|
|
}
|
|
|
|
#[test]
|
|
fn test_partial_cmp(){
|
|
test_many_ops!(partial_cmp_ratio,partial_cmp);
|
|
}
|
|
|
|
// #[test]
|
|
// fn test_cmp(){
|
|
// test_many_ops!(cmp_ratio,cmp);
|
|
// }
|