phonograph/phono-pestgros/src/identifier_tests.rs
2026-02-13 08:09:17 +00:00

37 lines
935 B
Rust

//! Unit tests for identifier and object name parsing within expressions.
use crate::{Expr, escape_identifier};
#[test]
fn escaper_escapes() {
assert_eq!(escape_identifier("hello"), r#""hello""#);
assert_eq!(escape_identifier("hello world"), r#""hello world""#);
assert_eq!(
escape_identifier(r#""hello" "world""#),
r#""""hello"" ""world""""#
);
}
#[test]
fn qualified_obj_name_parses() {
assert_eq!(
Expr::try_from(r#""""Hello"", World! 四十二".deep_thought"#),
Ok(Expr::ObjName(vec![
r#""Hello", World! 四十二"#.to_owned(),
"deep_thought".to_owned(),
])),
);
}
#[test]
fn misquoted_ident_fails_to_parse() {
assert!(Expr::try_from(r#""Hello, "World!""#).is_err());
}
#[test]
fn unquoted_ident_lowercased() {
assert_eq!(
Expr::try_from("HeLlO_WoRlD"),
Ok(Expr::ObjName(vec!["hello_world".to_owned()])),
);
}