Skip to content

Commit 892bf3d

Browse files
committed
Use a macro in test_decode_utf8 to preserve line numbers in panic messages.
1 parent 599f1b9 commit 892bf3d

File tree

1 file changed

+26
-24
lines changed

1 file changed

+26
-24
lines changed

src/libcoretest/char.rs

+26-24
Original file line numberDiff line numberDiff line change
@@ -358,29 +358,31 @@ fn eu_iterator_specializations() {
358358

359359
#[test]
360360
fn test_decode_utf8() {
361-
use core::char::*;
362-
use core::iter::FromIterator;
363-
364-
for &(str, bs) in [("", &[] as &[u8]),
365-
("A", &[0x41u8] as &[u8]),
366-
("�", &[0xC1u8, 0x81u8] as &[u8]),
367-
("♥", &[0xE2u8, 0x99u8, 0xA5u8]),
368-
("♥A", &[0xE2u8, 0x99u8, 0xA5u8, 0x41u8] as &[u8]),
369-
("�", &[0xE2u8, 0x99u8] as &[u8]),
370-
("�A", &[0xE2u8, 0x99u8, 0x41u8] as &[u8]),
371-
("�", &[0xC0u8] as &[u8]),
372-
("�A", &[0xC0u8, 0x41u8] as &[u8]),
373-
("�", &[0x80u8] as &[u8]),
374-
("�A", &[0x80u8, 0x41u8] as &[u8]),
375-
("�", &[0xFEu8] as &[u8]),
376-
("�A", &[0xFEu8, 0x41u8] as &[u8]),
377-
("�", &[0xFFu8] as &[u8]),
378-
("�A", &[0xFFu8, 0x41u8] as &[u8])].into_iter() {
379-
assert!(Iterator::eq(str.chars(),
380-
decode_utf8(bs.into_iter().map(|&b|b))
381-
.map(|r_b| r_b.unwrap_or('\u{FFFD}'))),
382-
"chars = {}, bytes = {:?}, decoded = {:?}", str, bs,
383-
Vec::from_iter(decode_utf8(bs.into_iter().map(|&b|b))
384-
.map(|r_b| r_b.unwrap_or('\u{FFFD}'))));
361+
macro_rules! assert_decode_utf8 {
362+
($input_bytes: expr, $expected_str: expr) => {
363+
let input_bytes: &[u8] = &$input_bytes;
364+
let s = char::decode_utf8(input_bytes.iter().cloned())
365+
.map(|r_b| r_b.unwrap_or('\u{FFFD}'))
366+
.collect::<String>();
367+
assert_eq!(s, $expected_str,
368+
"input bytes: {:?}, expected str: {:?}, result: {:?}",
369+
input_bytes, $expected_str, s);
370+
}
385371
}
372+
373+
assert_decode_utf8!([], "");
374+
assert_decode_utf8!([0x41], "A");
375+
assert_decode_utf8!([0xC1, 0x81], "�");
376+
assert_decode_utf8!([0xE2, 0x99, 0xA5], "♥");
377+
assert_decode_utf8!([0xE2, 0x99, 0xA5, 0x41], "♥A");
378+
assert_decode_utf8!([0xE2, 0x99], "�");
379+
assert_decode_utf8!([0xE2, 0x99, 0x41], "�A");
380+
assert_decode_utf8!([0xC0], "�");
381+
assert_decode_utf8!([0xC0, 0x41], "�A");
382+
assert_decode_utf8!([0x80], "�");
383+
assert_decode_utf8!([0x80, 0x41], "�A");
384+
assert_decode_utf8!([0xFE], "�");
385+
assert_decode_utf8!([0xFE, 0x41], "�A");
386+
assert_decode_utf8!([0xFF], "�");
387+
assert_decode_utf8!([0xFF, 0x41], "�A");
386388
}

0 commit comments

Comments
 (0)