| use core::fmt::NumBuffer; | |
| use std::str::FromStr; | |
| macro_rules! assert_nb { | |
| ($int:ident, $value:expr) => { | |
| let value: $int = $value; | |
| let s = value.to_string(); | |
| let s2 = format!("s: {}.", value); | |
| assert_eq!(format!("s: {s}."), s2); | |
| let Ok(ret) = $int::from_str(&s) else { | |
| panic!("failed to convert into to string"); | |
| }; | |
| assert_eq!(ret, value); | |
| let mut buffer = NumBuffer::<$int>::new(); | |
| assert_eq!(value.format_into(&mut buffer), s.as_str()); | |
| }; | |
| } | |
| macro_rules! uint_to_s { | |
| ($($fn_name:ident, $int:ident,)+) => { | |
| $( | |
| #[test] | |
| fn $fn_name() { | |
| assert_nb!($int, $int::MIN); | |
| assert_nb!($int, $int::MAX); | |
| assert_nb!($int, 1); | |
| assert_nb!($int, $int::MIN / 2); | |
| assert_nb!($int, $int::MAX / 2); | |
| } | |
| )+ | |
| } | |
| } | |
| macro_rules! int_to_s { | |
| ($($fn_name:ident, $int:ident,)+) => { | |
| $( | |
| #[test] | |
| fn $fn_name() { | |
| assert_nb!($int, $int::MIN); | |
| assert_nb!($int, $int::MAX); | |
| assert_nb!($int, 1); | |
| assert_nb!($int, 0); | |
| assert_nb!($int, -1); | |
| assert_nb!($int, $int::MIN / 2); | |
| assert_nb!($int, $int::MAX / 2); | |
| } | |
| )+ | |
| } | |
| } | |
| int_to_s!( | |
| test_i8_to_string, | |
| i8, | |
| test_i16_to_string, | |
| i16, | |
| test_i32_to_string, | |
| i32, | |
| test_i64_to_string, | |
| i64, | |
| test_isize_to_string, | |
| isize, | |
| test_i128_to_string, | |
| i128, | |
| ); | |
| uint_to_s!( | |
| test_u8_to_string, | |
| u8, | |
| test_u16_to_string, | |
| u16, | |
| test_u32_to_string, | |
| u32, | |
| test_u64_to_string, | |
| u64, | |
| test_usize_to_string, | |
| usize, | |
| test_u128_to_string, | |
| u128, | |
| ); |