|
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); |
|
0 commit comments