mirror of
https://github.com/kmc7468/cs220.git
synced 2025-12-12 21:08:45 +00:00
39 lines
965 B
Rust
39 lines
965 B
Rust
#[cfg(test)]
|
|
mod test_peano_nat {
|
|
use crate::assignments::assignment11::peano_nat::*;
|
|
|
|
#[test]
|
|
fn test_from_as_usize() {
|
|
assert_eq!(Nat::from_usize(0), Nat::O);
|
|
assert_eq!(
|
|
Nat::from_usize(2),
|
|
Nat::S(Box::new(Nat::S(Box::new(Nat::O))))
|
|
);
|
|
|
|
for n in 0..100 {
|
|
assert_eq!(Nat::from_usize(n).as_usize(), n);
|
|
}
|
|
}
|
|
|
|
fn safe_sub(i: usize, j: usize) -> usize {
|
|
if i > j {
|
|
i - j
|
|
} else {
|
|
0
|
|
}
|
|
}
|
|
|
|
#[test]
|
|
fn test_add_sub_mul() {
|
|
for i in 0..30 {
|
|
let n = Nat::from_usize(i);
|
|
for j in 0..30 {
|
|
let m = Nat::from_usize(j);
|
|
assert_eq!((n.clone() + m.clone()).as_usize(), i + j);
|
|
assert_eq!((n.clone() - m.clone()).as_usize(), safe_sub(i, j));
|
|
assert_eq!((n.clone() * m.clone()).as_usize(), i * j);
|
|
}
|
|
}
|
|
}
|
|
}
|