diff --git a/instant-xml/src/impls.rs b/instant-xml/src/impls.rs index 1cdecdf..eb3b7cd 100644 --- a/instant-xml/src/impls.rs +++ b/instant-xml/src/impls.rs @@ -892,38 +892,46 @@ mod tests { #[test] fn test_decode() { - assert_eq!(decode("foo").unwrap(), "foo"); - assert_eq!(decode("foo & bar").unwrap(), "foo & bar"); - assert_eq!(decode("foo < bar").unwrap(), "foo < bar"); - assert_eq!(decode("foo > bar").unwrap(), "foo > bar"); - assert_eq!(decode("foo " bar").unwrap(), "foo \" bar"); - assert_eq!(decode("foo ' bar").unwrap(), "foo ' bar"); - assert_eq!(decode("foo &lt; bar").unwrap(), "foo < bar"); - assert_eq!(decode("& foo").unwrap(), "& foo"); - assert_eq!(decode("foo &").unwrap(), "foo &"); - assert_eq!(decode("cbdtéda&sü").unwrap(), "cbdtéda&sü"); + decode_ok("foo", "foo"); + decode_ok("foo & bar", "foo & bar"); + decode_ok("foo < bar", "foo < bar"); + decode_ok("foo > bar", "foo > bar"); + decode_ok("foo " bar", "foo \" bar"); + decode_ok("foo ' bar", "foo ' bar"); + decode_ok("foo &lt; bar", "foo < bar"); + decode_ok("& foo", "& foo"); + decode_ok("foo &", "foo &"); + decode_ok("cbdtéda&sü", "cbdtéda&sü"); // Decimal character references - assert_eq!(decode("Ӓ").unwrap(), "Ӓ"); - assert_eq!(decode("foo bar").unwrap(), "foo \t bar"); - assert_eq!(decode("foo | bar").unwrap(), "foo | bar"); - assert_eq!(decode("foo Ӓ bar").unwrap(), "foo Ӓ bar"); + decode_ok("Ӓ", "Ӓ"); + decode_ok("foo bar", "foo \t bar"); + decode_ok("foo | bar", "foo | bar"); + decode_ok("foo Ӓ bar", "foo Ӓ bar"); // Hexadecimal character references - assert_eq!(decode("Ä").unwrap(), "Ä"); - assert_eq!(decode("Ä").unwrap(), "Ä"); - assert_eq!(decode("foo bar").unwrap(), "foo \t bar"); - assert_eq!(decode("foo | bar").unwrap(), "foo | bar"); - assert_eq!(decode("foo Ä bar").unwrap(), "foo Ä bar"); - assert_eq!(decode("foo Ä bar").unwrap(), "foo Ä bar"); - assert_eq!(decode("foo პ bar").unwrap(), "foo პ bar"); + decode_ok("Ä", "Ä"); + decode_ok("Ä", "Ä"); + decode_ok("foo bar", "foo \t bar"); + decode_ok("foo | bar", "foo | bar"); + decode_ok("foo Ä bar", "foo Ä bar"); + decode_ok("foo Ä bar", "foo Ä bar"); + decode_ok("foo პ bar", "foo პ bar"); - assert!(decode("&").is_err()); - assert!(decode("&#").is_err()); - assert!(decode("&#;").is_err()); - assert!(decode("foo&").is_err()); - assert!(decode("&bar").is_err()); - assert!(decode("&foo;").is_err()); - assert!(decode("&foobar;").is_err()); - assert!(decode("cbdtéd&ü").is_err()); + decode_err("&"); + decode_err("&#"); + decode_err("&#;"); + decode_err("foo&"); + decode_err("&bar"); + decode_err("&foo;"); + decode_err("&foobar;"); + decode_err("cbdtéd&ü"); + } + + fn decode_ok(input: &str, expected: &'static str) { + assert_eq!(super::decode(input).unwrap(), expected, "{input:?}"); + } + + fn decode_err(input: &str) { + assert!(super::decode(input).is_err(), "{input:?}"); } #[test]