use core::ascii::Char; use core::fmt::Write; /// Tests Display implementation for ascii::Char. #[test] fn test_display() { let want = (0..128u8).map(|b| b as char).collect::(); let mut got = String::with_capacity(128); for byte in 0..128 { write!(&mut got, "{}", Char::from_u8(byte).unwrap()).unwrap(); } assert_eq!(want, got); } /// Tests Debug implementation for ascii::Char. #[test] fn test_debug_control() { for byte in 0..128u8 { let mut want = format!("{:?}", byte as char); // `char` uses `'\u{#}'` representation where ascii::char uses `'\x##'`. // Transform former into the latter. if let Some(rest) = want.strip_prefix("'\\u{") { want = format!("'\\x{:0>2}'", rest.strip_suffix("}'").unwrap()); } let chr = core::ascii::Char::from_u8(byte).unwrap(); assert_eq!(want, format!("{chr:?}"), "byte: {byte}"); } } /// Tests Extend implementation for ascii::Char. #[test] fn test_extend() { let mut s = String::from("abc"); s.extend_one(Char::SmallD); assert_eq!(s, String::from("abcd")); let mut s = String::from("abc"); s.extend(Char::CapitalA..=Char::CapitalC); assert_eq!(s, String::from("abcABC")); }