|
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