From 720768e9d3cbb488321dc167ef6bdea583f85777 Mon Sep 17 00:00:00 2001 From: tyranron Date: Thu, 16 Jan 2025 14:44:11 +0200 Subject: [PATCH] Showcase --- tests/display.rs | 130 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 130 insertions(+) diff --git a/tests/display.rs b/tests/display.rs index a48ed792..3023c3de 100644 --- a/tests/display.rs +++ b/tests/display.rs @@ -2629,6 +2629,136 @@ mod generic { format!("{:018p}", &a), ); } + + mod shared_format { + use super::*; + + #[derive(Display)] + #[display("{_0}")] + enum EnumDisplay { + A(A), + B(B), + } + + #[derive(Display)] + #[display("{:b}", _0)] + enum EnumBinary { + A(A, C), + B(B, D), + } + + #[derive(Display)] + #[display("{:o}", d)] + enum EnumOctal { + A { b: A, d: C }, + B { b: B, d: D }, + } + + #[derive(Display)] + #[display("{field:x}")] + enum EnumLowerHex { + A { field: A }, + B { field: B }, + } + + #[derive(Display)] + #[display("{:X}", field)] + enum EnumUpperHex { + A { field: A }, + B { field: B }, + } + + #[derive(Display)] + #[display("{_0:e}")] + enum EnumLowerExp { + A(A), + B(B), + } + + #[derive(Display)] + #[display("{:E}", _0)] + enum EnumUpperExp { + A(A), + B(B), + } + + #[derive(Display)] + #[display("{_0:p}")] + enum EnumPointer { + A(A), + B(B), + } + + #[test] + fn assert() { + assert_eq!(format!("{:03}", EnumDisplay::::A(7)), "007"); + assert_eq!(format!("{:03}", EnumDisplay::::B(8)), "008"); + assert_eq!(format!("{:07}", TupleBinary(7, ())), "0000111"); + assert_eq!( + format!("{:07}", EnumBinary::::A(7, ())), + "0000111", + ); + assert_eq!( + format!("{:07}", EnumBinary::::B(8, ())), + "0001000", + ); + assert_eq!( + format!( + "{:03}", + EnumOctal::<(), (), i8, u8>::A { b: (), d: 9 }, + ), + "011", + ); + assert_eq!( + format!( + "{:03}", + EnumOctal::<(), (), i8, u8>::B { b: (), d: 10 }, + ), + "012", + ); + assert_eq!( + format!("{:03}", EnumLowerHex::::A { field: 42 }), + "02a", + ); + assert_eq!( + format!("{:03}", EnumLowerHex::::B { field: 43 }), + "02b", + ); + assert_eq!( + format!("{:03}", EnumUpperHex::::A { field: 42 }), + "02A", + ); + assert_eq!( + format!("{:03}", EnumUpperHex::::B { field: 43 }), + "02B", + ); + assert_eq!( + format!("{:07}", EnumLowerExp::::A(42.0)), + "004.2e1" + ); + assert_eq!( + format!("{:07}", EnumLowerExp::::B(43.0)), + "004.3e1" + ); + assert_eq!( + format!("{:07}", EnumUpperExp::::A(42.0)), + "004.2E1" + ); + assert_eq!( + format!("{:07}", EnumUpperExp::::B(43.0)), + "004.3E1", + ); + let (a, b) = (42, 7); + assert_eq!( + format!("{:018}", EnumPointer::<&i8, &u8>::A(&b)), + format!("{:018p}", &b), + ); + assert_eq!( + format!("{:018}", EnumPointer::<&i8, &u8>::B(&a)), + format!("{:018p}", &a), + ); + } + } } mod omitted {