Source code

Revision control

Copy as Markdown

Other Tools

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));
}