integer: expand tests for gcd min_value()
- Use explicit asserts for should-panic tests, since overflow is not checked in release mode. - Add positive tests where gcd min_value() can be represented. - In all cases, test min_value() in both positions. Closes #127
This commit is contained in:
parent
642787fbd2
commit
49237f6f45
|
@ -360,6 +360,7 @@ macro_rules! impl_integer_for_isize {
|
||||||
assert_eq!((-6 as $T).gcd(&3), 3 as $T);
|
assert_eq!((-6 as $T).gcd(&3), 3 as $T);
|
||||||
assert_eq!((-4 as $T).gcd(&-2), 2 as $T);
|
assert_eq!((-4 as $T).gcd(&-2), 2 as $T);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_gcd_cmp_with_euclidean() {
|
fn test_gcd_cmp_with_euclidean() {
|
||||||
fn euclidean_gcd(mut m: $T, mut n: $T) -> $T {
|
fn euclidean_gcd(mut m: $T, mut n: $T) -> $T {
|
||||||
|
@ -388,18 +389,38 @@ macro_rules! impl_integer_for_isize {
|
||||||
assert_eq!(127.gcd(&127), 127);
|
assert_eq!(127.gcd(&127), 127);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_gcd_min_val() {
|
||||||
|
let min = <$T>::min_value();
|
||||||
|
let max = <$T>::max_value();
|
||||||
|
let max_pow2 = max / 2 + 1;
|
||||||
|
assert_eq!(min.gcd(&max), 1 as $T);
|
||||||
|
assert_eq!(max.gcd(&min), 1 as $T);
|
||||||
|
assert_eq!(min.gcd(&max_pow2), max_pow2);
|
||||||
|
assert_eq!(max_pow2.gcd(&min), max_pow2);
|
||||||
|
assert_eq!(min.gcd(&42), 2 as $T);
|
||||||
|
assert_eq!((42 as $T).gcd(&min), 2 as $T);
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[should_panic]
|
#[should_panic]
|
||||||
fn test_gcd_min_val_min_val() {
|
fn test_gcd_min_val_min_val() {
|
||||||
let min = <$T>::min_value();
|
let min = <$T>::min_value();
|
||||||
min.gcd(&min);
|
assert!(min.gcd(&min) >= 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
#[should_panic]
|
#[should_panic]
|
||||||
fn test_gcd_min_val_0() {
|
fn test_gcd_min_val_0() {
|
||||||
let min = <$T>::min_value();
|
let min = <$T>::min_value();
|
||||||
min.gcd(&0);
|
assert!(min.gcd(&0) >= 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
#[should_panic]
|
||||||
|
fn test_gcd_0_min_val() {
|
||||||
|
let min = <$T>::min_value();
|
||||||
|
assert!((0 as $T).gcd(&min) >= 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
|
|
Loading…
Reference in New Issue