| use super::*; |
| |
| #[test] |
| fn cases() { |
| case(TestFlags::empty(), "TestFlags(0x0)", "0", "0", "0", "0"); |
| case(TestFlags::A, "TestFlags(A)", "1", "1", "1", "1"); |
| case( |
| TestFlags::all(), |
| "TestFlags(A | B | C)", |
| "7", |
| "7", |
| "7", |
| "111", |
| ); |
| case( |
| TestFlags::from_bits_retain(1 << 3), |
| "TestFlags(0x8)", |
| "8", |
| "8", |
| "10", |
| "1000", |
| ); |
| case( |
| TestFlags::A | TestFlags::from_bits_retain(1 << 3), |
| "TestFlags(A | 0x8)", |
| "9", |
| "9", |
| "11", |
| "1001", |
| ); |
| |
| case(TestZero::ZERO, "TestZero(0x0)", "0", "0", "0", "0"); |
| case( |
| TestZero::ZERO | TestZero::from_bits_retain(1), |
| "TestZero(0x1)", |
| "1", |
| "1", |
| "1", |
| "1", |
| ); |
| |
| case(TestZeroOne::ONE, "TestZeroOne(ONE)", "1", "1", "1", "1"); |
| |
| case( |
| TestOverlapping::from_bits_retain(1 << 1), |
| "TestOverlapping(0x2)", |
| "2", |
| "2", |
| "2", |
| "10", |
| ); |
| |
| case( |
| TestExternal::from_bits_retain(1 | 1 << 1 | 1 << 3), |
| "TestExternal(A | B | 0x8)", |
| "B", |
| "b", |
| "13", |
| "1011", |
| ); |
| |
| case( |
| TestExternal::all(), |
| "TestExternal(A | B | C | 0xf8)", |
| "FF", |
| "ff", |
| "377", |
| "11111111", |
| ); |
| |
| case( |
| TestExternalFull::all(), |
| "TestExternalFull(0xff)", |
| "FF", |
| "ff", |
| "377", |
| "11111111", |
| ); |
| } |
| |
| #[track_caller] |
| fn case< |
| T: std::fmt::Debug + std::fmt::UpperHex + std::fmt::LowerHex + std::fmt::Octal + std::fmt::Binary, |
| >( |
| value: T, |
| debug: &str, |
| uhex: &str, |
| lhex: &str, |
| oct: &str, |
| bin: &str, |
| ) { |
| assert_eq!(debug, format!("{:?}", value)); |
| assert_eq!(uhex, format!("{:X}", value)); |
| assert_eq!(lhex, format!("{:x}", value)); |
| assert_eq!(oct, format!("{:o}", value)); |
| assert_eq!(bin, format!("{:b}", value)); |
| } |