diff --git a/src/lib.rs b/src/lib.rs index 1c43c3f..3b1062d 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -2,3 +2,13 @@ mod error; mod lexer; mod scanner; mod token; + +use std::error::Error; + +pub fn compile(_template: &str) -> Result> { + todo!("Implement compilation process") +} + +// re-export important types or functions from modules here, e.g. +// pub use lexer::Lexer; +// that should be part of the public API diff --git a/tests/compile.rs b/tests/compile.rs new file mode 100644 index 0000000..cc6bb2b --- /dev/null +++ b/tests/compile.rs @@ -0,0 +1,45 @@ +use django_template_ast::compile; + +#[test] +#[should_panic] +fn test_empty_template() { + let result = compile(""); + assert!(result.is_ok()); + assert_eq!(result.unwrap(), ""); +} + +#[test] +#[should_panic] +fn test_simple_template() { + let result = compile("Hello, {{ name }}!"); + assert!(result.is_ok()); + // You'll need to adjust this expected output based on your actual implementation + assert_eq!(result.unwrap(), "Hello, {{ name }}!"); +} + +#[test] +#[should_panic] +fn test_invalid_template() { + let result = compile("{% invalid %}"); + assert!(result.is_err()); +} + +#[test] +#[should_panic] +fn test_complex_template() { + let template = r#" + {% if user.is_authenticated %} + Hello, {{ user.name }}! + {% else %} + Please log in. + {% endif %} + "#; + let result = compile(template); + assert!(result.is_ok()); + + if let Ok(compiled) = result { + assert!(compiled.contains("Hello") && compiled.contains("Please log in")); + } else { + panic!("Compilation failed unexpectedly"); + } +}