From 635a0a20f3f0771c583ba43b0c03c7ca70ed2502 Mon Sep 17 00:00:00 2001 From: "google-labs-jules[bot]" <161369871+google-labs-jules[bot]@users.noreply.github.com> Date: Tue, 15 Sep 2026 08:12:26 +0000 Subject: [PATCH] Add missing tests for AST components\n\n- Add tests for `Program` and `Block` construction and serialization in `compiler/ast/tests/ast_tests.rs` Co-authored-by: Tcode-Motion <188012755+Tcode-Motion@users.noreply.github.com> --- compiler/ast/tests/ast_tests.rs | 46 +++++++++++++++++++++++++++++++-- 1 file changed, 44 insertions(+), 2 deletions(-) diff --git a/compiler/ast/tests/ast_tests.rs b/compiler/ast/tests/ast_tests.rs index 584d5ea6..ffe7f12b 100644 --- a/compiler/ast/tests/ast_tests.rs +++ b/compiler/ast/tests/ast_tests.rs @@ -1,6 +1,6 @@ use techscript_ast::{ - AssignmentExpr, EnumDecl, EnumVariant, Expression, FieldSpec, Ident, LiteralExpr, LiteralVal, - Pattern, StructDecl, VarDecl, + AssignmentExpr, Block, BreakStmt, EnumDecl, EnumVariant, Expression, FieldSpec, Ident, + LiteralExpr, LiteralVal, Pattern, Program, Statement, StructDecl, VarDecl, }; use techscript_common::{NodeId, Span}; @@ -101,5 +101,47 @@ fn test_ast_serialization() { assert_eq!(lit, deserialized); } +#[test] +fn test_ast_program_construction_and_serialization() { + let span = Span::new(0, 50); + let id = NodeId(1); + + // Create a dummy statement (Break) + let break_stmt = Statement::Break(BreakStmt::new(NodeId(2), span)); + + let program = Program::new(id, vec![break_stmt.clone()], span); + + assert_eq!(program.id, id); + assert_eq!(program.statements.len(), 1); + assert_eq!(program.span, span); + + let serialized = serde_json::to_string(&program).expect("serialize should succeed"); + let deserialized: Program = + serde_json::from_str(&serialized).expect("deserialize should succeed"); + + assert_eq!(program, deserialized); +} + +#[test] +fn test_ast_block_construction_and_serialization() { + let span = Span::new(10, 20); + let id = NodeId(3); + + // Create a dummy statement (Break) + let break_stmt = Statement::Break(BreakStmt::new(NodeId(4), span)); + + let block = Block::new(id, vec![break_stmt.clone()], span); + + assert_eq!(block.id, id); + assert_eq!(block.statements.len(), 1); + assert_eq!(block.span, span); + + let serialized = serde_json::to_string(&block).expect("serialize should succeed"); + let deserialized: Block = + serde_json::from_str(&serialized).expect("deserialize should succeed"); + + assert_eq!(block, deserialized); +} + // Internal helper just to satisfy TypeSpec compilation in test_ast_struct_decl use techscript_ast::TypeSpec;