2016-08-11 14:42:34 +08:00
|
|
|
use std::panic;
|
2016-08-11 08:12:37 +08:00
|
|
|
|
|
|
|
use quickcheck::TestResult;
|
2016-08-08 04:58:05 +08:00
|
|
|
|
2016-08-11 08:12:37 +08:00
|
|
|
quickcheck! {
|
2016-08-11 14:42:34 +08:00
|
|
|
fn udivmoddi4(n: (u32, u32), d: (u32, u32)) -> TestResult {
|
|
|
|
let n = ::U64 { low: n.0, high: n.1 }[..];
|
|
|
|
let d = ::U64 { low: d.0, high: d.1 }[..];
|
2016-08-11 08:12:37 +08:00
|
|
|
|
2016-08-11 14:42:34 +08:00
|
|
|
if d == 0 {
|
2016-08-11 08:12:37 +08:00
|
|
|
TestResult::discard()
|
|
|
|
} else {
|
|
|
|
let mut r = 0;
|
2016-08-11 14:42:34 +08:00
|
|
|
let q = ::div::__udivmoddi4(n, d, Some(&mut r));
|
2016-08-11 08:12:37 +08:00
|
|
|
|
2016-08-11 14:42:34 +08:00
|
|
|
TestResult::from_bool(q * d + r == n)
|
2016-08-11 08:12:37 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2016-08-11 12:40:35 +08:00
|
|
|
|
|
|
|
quickcheck! {
|
2016-08-11 14:42:34 +08:00
|
|
|
fn udivmodsi4(n: u32, d: u32) -> TestResult {
|
|
|
|
if d == 0 {
|
2016-08-11 12:40:35 +08:00
|
|
|
TestResult::discard()
|
|
|
|
} else {
|
|
|
|
let mut r = 0;
|
2016-08-11 14:42:34 +08:00
|
|
|
let q = ::div::__udivmodsi4(n, d, Some(&mut r));
|
2016-08-11 12:40:35 +08:00
|
|
|
|
2016-08-11 14:42:34 +08:00
|
|
|
TestResult::from_bool(q * d + r == n)
|
2016-08-11 12:40:35 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|