use crate::lexer::*; use crate::parser::*; #[test] fn test_parse_empty_function() { let tokens = tokenize("fn main() {}"); let tree = parse(tokens); assert!(tree.is_ok()) } #[test] fn test_parse_function_with_return() { let raw = " fn main() { return 1; } "; let tokens = tokenize(raw); let tree = parse(tokens); assert!(tree.is_ok()) } #[test] fn test_parse_missing_semicolon() { let raw = " fn main() { return 1 } "; let tokens = tokenize(raw); let tree = parse(tokens); assert!(tree.is_err()) } #[test] fn test_parse_no_function_context() { let raw = " let x = 1; "; let tokens = tokenize(raw); let tree = parse(tokens); assert!(tree.is_err()) } #[test] fn test_parse_multiple_functions() { let raw = " fn foo() { let x = 2; return x; } fn bar() { let y = 5; return y; } "; let tokens = tokenize(raw); let tree = parse(tokens); assert!(tree.is_ok()) } #[test] fn test_parse_variable_declaration() { let raw = " fn main() { let x = 1; return x; } "; let tokens = tokenize(raw); let tree = parse(tokens); assert!(tree.is_ok()) }