//! 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");
    }
}
