67 lines
1.6 KiB
Rust
67 lines
1.6 KiB
Rust
|
|
//! Quick parser test to debug parsing issues
|
||
|
|
|
||
|
|
#[cfg(test)]
|
||
|
|
mod tests {
|
||
|
|
use crate::lsp::document::Document;
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn test_simple_character() {
|
||
|
|
let input = "character Alice { age: 7 }";
|
||
|
|
let doc = Document::new(input.to_string());
|
||
|
|
|
||
|
|
println!("Parse errors: {:?}", doc.parse_errors);
|
||
|
|
if doc.ast.is_some() {
|
||
|
|
println!("SUCCESS: Parsed AST");
|
||
|
|
} else {
|
||
|
|
println!("FAILED: No AST produced");
|
||
|
|
}
|
||
|
|
|
||
|
|
assert!(doc.ast.is_some(), "Should parse simple character");
|
||
|
|
assert!(doc.parse_errors.is_empty(), "Should have no parse errors");
|
||
|
|
}
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn test_species_first() {
|
||
|
|
let input = r#"
|
||
|
|
species Human {
|
||
|
|
intelligence: high
|
||
|
|
}
|
||
|
|
|
||
|
|
character Alice: Human {
|
||
|
|
age: 7
|
||
|
|
}
|
||
|
|
"#;
|
||
|
|
let doc = Document::new(input.to_string());
|
||
|
|
|
||
|
|
if !doc.parse_errors.is_empty() {
|
||
|
|
for err in &doc.parse_errors {
|
||
|
|
eprintln!("Parse error: {}", err.message);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
assert!(doc.ast.is_some(), "Should parse species and character");
|
||
|
|
assert!(doc.parse_errors.is_empty(), "Should have no parse errors");
|
||
|
|
}
|
||
|
|
|
||
|
|
#[test]
|
||
|
|
fn test_with_prose() {
|
||
|
|
let input = r#"
|
||
|
|
character Alice {
|
||
|
|
age: 7
|
||
|
|
---backstory
|
||
|
|
A curious girl
|
||
|
|
---
|
||
|
|
}
|
||
|
|
"#;
|
||
|
|
let doc = Document::new(input.to_string());
|
||
|
|
|
||
|
|
if !doc.parse_errors.is_empty() {
|
||
|
|
for err in &doc.parse_errors {
|
||
|
|
eprintln!("Parse error: {}", err.message);
|
||
|
|
}
|
||
|
|
}
|
||
|
|
|
||
|
|
assert!(doc.ast.is_some(), "Should parse character with prose");
|
||
|
|
}
|
||
|
|
}
|