mirror of
https://github.com/rust-lang/rust.git
synced 2025-04-29 19:47:38 +00:00
41 lines
1.2 KiB
Rust
41 lines
1.2 KiB
Rust
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::<String>();
|
|
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"));
|
|
}
|