Enable some ilog2 tests as well · patricklam/verify-rust-std@c8d3265 (original) (raw)

Original file line number Diff line number Diff line change
@@ -1,7 +1,4 @@
1 -//! This tests the `Integer::{ilog,log2,log10}` methods. These tests are in a
2 -//! separate file because there's both a large number of them, and not all tests
3 -//! can be run on Android. This is because in Android `ilog2` uses an imprecise
4 -//! approximation:https://github.com/rust-lang/rust/blob/4825e12fc9c79954aa0fe18f5521efa6c19c7539/src/libstd/sys/unix/android.rs#L27-L53
1 +//! Tests for the `Integer::{ilog,log2,log10}` methods.
5 2
6 3 #[test]
7 4 fn checked_ilog() {
@@ -48,6 +45,10 @@ fn checked_ilog2() {
48 45 assert_eq!(0i8.checked_ilog2(), None);
49 46 assert_eq!(0i16.checked_ilog2(), None);
50 47
48 +assert_eq!(8192u16.checked_ilog2(), Some((8192f32).log2() as u32));
49 +assert_eq!(32768u16.checked_ilog2(), Some((32768f32).log2() as u32));
50 +assert_eq!(8192i16.checked_ilog2(), Some((8192f32).log2() as u32));
51 +
51 52 for i in 1..=u8::MAX {
52 53 assert_eq!(i.checked_ilog2(), Some((i as f32).log2() as u32), "checking {i}");
53 54 }
@@ -77,15 +78,6 @@ fn checked_ilog2() {
77 78 }
78 79 }
79 80
80 -// Validate cases that fail on Android's imprecise float ilog2 implementation.
81 -#[test]
82 -#[cfg(not(target_os = "android"))]
83 -fn checked_ilog2_not_android() {
84 -assert_eq!(8192u16.checked_ilog2(), Some((8192f32).log2() as u32));
85 -assert_eq!(32768u16.checked_ilog2(), Some((32768f32).log2() as u32));
86 -assert_eq!(8192i16.checked_ilog2(), Some((8192f32).log2() as u32));
87 -}
88 -
89 81 #[test]
90 82 fn checked_ilog10() {
91 83 assert_eq!(0u8.checked_ilog10(), None);