2021-11-05 13:48:28 -05:00
|
|
|
// ignore-tidy-linelength
|
|
|
|
|
2021-04-29 14:03:35 -05:00
|
|
|
use proc_macro::Literal;
|
|
|
|
|
|
|
|
pub fn test() {
|
2021-07-08 22:24:29 -05:00
|
|
|
test_display_literal();
|
2021-04-29 14:03:35 -05:00
|
|
|
test_parse_literal();
|
|
|
|
}
|
|
|
|
|
2021-07-08 22:24:29 -05:00
|
|
|
fn test_display_literal() {
|
2021-07-19 03:16:36 -05:00
|
|
|
assert_eq!(Literal::isize_unsuffixed(-10).to_string(), "-10");
|
|
|
|
assert_eq!(Literal::isize_suffixed(-10).to_string(), "-10isize");
|
2021-10-25 22:25:30 -05:00
|
|
|
assert_eq!(Literal::f32_unsuffixed(-10.0).to_string(), "-10.0");
|
|
|
|
assert_eq!(Literal::f32_suffixed(-10.0).to_string(), "-10f32");
|
|
|
|
assert_eq!(Literal::f64_unsuffixed(-10.0).to_string(), "-10.0");
|
|
|
|
assert_eq!(Literal::f64_suffixed(-10.0).to_string(), "-10f64");
|
2021-11-05 13:48:28 -05:00
|
|
|
assert_eq!(
|
|
|
|
Literal::f64_unsuffixed(1e100).to_string(),
|
|
|
|
"10000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.0",
|
|
|
|
);
|
2022-03-26 14:53:49 -05:00
|
|
|
|
|
|
|
assert_eq!(
|
|
|
|
Literal::string("a \t ❤ ' \" \u{1}").to_string(),
|
2022-03-26 15:08:50 -05:00
|
|
|
"\"a \\t ❤ ' \\\" \\u{1}\"",
|
2022-03-26 14:53:49 -05:00
|
|
|
);
|
2022-03-26 15:08:50 -05:00
|
|
|
assert_eq!(Literal::character('a').to_string(), "'a'");
|
|
|
|
assert_eq!(Literal::character('\t').to_string(), "'\\t'");
|
|
|
|
assert_eq!(Literal::character('❤').to_string(), "'❤'");
|
|
|
|
assert_eq!(Literal::character('\'').to_string(), "'\\''");
|
|
|
|
assert_eq!(Literal::character('"').to_string(), "'\"'");
|
2022-03-26 14:53:49 -05:00
|
|
|
assert_eq!(Literal::character('\u{1}').to_string(), "'\\u{1}'");
|
2023-09-23 13:48:00 -05:00
|
|
|
|
|
|
|
assert_eq!(Literal::byte_character(b'a').to_string(), "b'a'");
|
|
|
|
assert_eq!(Literal::byte_character(0).to_string(), "b'\\x00'");
|
2021-07-08 22:24:29 -05:00
|
|
|
}
|
|
|
|
|
2021-04-29 14:03:35 -05:00
|
|
|
fn test_parse_literal() {
|
|
|
|
assert_eq!("1".parse::<Literal>().unwrap().to_string(), "1");
|
|
|
|
assert_eq!("1.0".parse::<Literal>().unwrap().to_string(), "1.0");
|
|
|
|
assert_eq!("'a'".parse::<Literal>().unwrap().to_string(), "'a'");
|
2023-09-23 13:48:00 -05:00
|
|
|
assert_eq!("b'a'".parse::<Literal>().unwrap().to_string(), "b'a'");
|
2021-04-29 14:03:35 -05:00
|
|
|
assert_eq!("\"\n\"".parse::<Literal>().unwrap().to_string(), "\"\n\"");
|
|
|
|
assert_eq!("b\"\"".parse::<Literal>().unwrap().to_string(), "b\"\"");
|
|
|
|
assert_eq!("r##\"\"##".parse::<Literal>().unwrap().to_string(), "r##\"\"##");
|
|
|
|
assert_eq!("10ulong".parse::<Literal>().unwrap().to_string(), "10ulong");
|
2021-07-19 03:16:36 -05:00
|
|
|
assert_eq!("-10ulong".parse::<Literal>().unwrap().to_string(), "-10ulong");
|
2021-04-29 14:03:35 -05:00
|
|
|
|
2021-07-08 22:24:29 -05:00
|
|
|
assert!("true".parse::<Literal>().is_err());
|
|
|
|
assert!(".8".parse::<Literal>().is_err());
|
2021-04-29 14:03:35 -05:00
|
|
|
assert!("0 1".parse::<Literal>().is_err());
|
|
|
|
assert!("'a".parse::<Literal>().is_err());
|
|
|
|
assert!(" 0".parse::<Literal>().is_err());
|
|
|
|
assert!("0 ".parse::<Literal>().is_err());
|
|
|
|
assert!("/* comment */0".parse::<Literal>().is_err());
|
|
|
|
assert!("0/* comment */".parse::<Literal>().is_err());
|
|
|
|
assert!("0// comment".parse::<Literal>().is_err());
|
2021-07-08 22:24:29 -05:00
|
|
|
assert!("- 10".parse::<Literal>().is_err());
|
|
|
|
assert!("-'x'".parse::<Literal>().is_err());
|
2021-04-29 14:03:35 -05:00
|
|
|
}
|