diff options
| author | Urgau <urgau@numericable.fr> | 2024-10-26 22:08:34 +0200 |
|---|---|---|
| committer | Urgau <urgau@numericable.fr> | 2024-10-26 22:08:34 +0200 |
| commit | 74b9de4af2c1200a82bfa9193423cc7889ddc924 (patch) | |
| tree | 40a7ababf0ded83b8b34834d249cfc0e65a773ef | |
| parent | 00444bab2602ca487be08d5e2eaa6179833333b8 (diff) | |
| download | rust-74b9de4af2c1200a82bfa9193423cc7889ddc924.tar.gz rust-74b9de4af2c1200a82bfa9193423cc7889ddc924.zip | |
Add test for all midpoint expectations
| -rw-r--r-- | library/core/tests/num/midpoint.rs | 54 | ||||
| -rw-r--r-- | library/core/tests/num/mod.rs | 1 |
2 files changed, 55 insertions, 0 deletions
diff --git a/library/core/tests/num/midpoint.rs b/library/core/tests/num/midpoint.rs new file mode 100644 index 00000000000..71e98006784 --- /dev/null +++ b/library/core/tests/num/midpoint.rs @@ -0,0 +1,54 @@ +//! Test the following expectations: +//! - midpoint(a, b) == (a + b) / 2 +//! - midpoint(a, b) == midpoint(b, a) +//! - midpoint(-a, -b) == -midpoint(a, b) + +#[test] +#[cfg(not(miri))] +fn midpoint_obvious_impl_i8() { + for a in i8::MIN..=i8::MAX { + for b in i8::MIN..=i8::MAX { + assert_eq!(i8::midpoint(a, b), ((a as i16 + b as i16) / 2) as i8); + } + } +} + +#[test] +#[cfg(not(miri))] +fn midpoint_obvious_impl_u8() { + for a in u8::MIN..=u8::MAX { + for b in u8::MIN..=u8::MAX { + assert_eq!(u8::midpoint(a, b), ((a as u16 + b as u16) / 2) as u8); + } + } +} + +#[test] +#[cfg(not(miri))] +fn midpoint_order_expectation_i8() { + for a in i8::MIN..=i8::MAX { + for b in i8::MIN..=i8::MAX { + assert_eq!(i8::midpoint(a, b), i8::midpoint(b, a)); + } + } +} + +#[test] +#[cfg(not(miri))] +fn midpoint_order_expectation_u8() { + for a in u8::MIN..=u8::MAX { + for b in u8::MIN..=u8::MAX { + assert_eq!(u8::midpoint(a, b), u8::midpoint(b, a)); + } + } +} + +#[test] +#[cfg(not(miri))] +fn midpoint_negative_expectation() { + for a in 0..=i8::MAX { + for b in 0..=i8::MAX { + assert_eq!(i8::midpoint(-a, -b), -i8::midpoint(a, b)); + } + } +} diff --git a/library/core/tests/num/mod.rs b/library/core/tests/num/mod.rs index 6da9b9a1329..0add9a01e68 100644 --- a/library/core/tests/num/mod.rs +++ b/library/core/tests/num/mod.rs @@ -28,6 +28,7 @@ mod dec2flt; mod flt2dec; mod int_log; mod int_sqrt; +mod midpoint; mod ops; mod wrapping; |
