Skip to content

Commit 9783bb1

Browse files
authored
Merge pull request #136 from Tcode-Motion/add-ast-tests-7892946119788546522
🧪 Add missing tests for AST components Program and Block
2 parents 5a4f94c + 635a0a2 commit 9783bb1

1 file changed

Lines changed: 44 additions & 2 deletions

File tree

‎compiler/ast/tests/ast_tests.rs‎

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use techscript_ast::{
2-
AssignmentExpr, EnumDecl, EnumVariant, Expression, FieldSpec, Ident, LiteralExpr, LiteralVal,
3-
Pattern, StructDecl, VarDecl,
2+
AssignmentExpr, Block, BreakStmt, EnumDecl, EnumVariant, Expression, FieldSpec, Ident,
3+
LiteralExpr, LiteralVal, Pattern, Program, Statement, StructDecl, VarDecl,
44
};
55
use techscript_common::{NodeId, Span};
66

@@ -101,5 +101,47 @@ fn test_ast_serialization() {
101101
assert_eq!(lit, deserialized);
102102
}
103103

104+
#[test]
105+
fn test_ast_program_construction_and_serialization() {
106+
let span = Span::new(0, 50);
107+
let id = NodeId(1);
108+
109+
// Create a dummy statement (Break)
110+
let break_stmt = Statement::Break(BreakStmt::new(NodeId(2), span));
111+
112+
let program = Program::new(id, vec![break_stmt.clone()], span);
113+
114+
assert_eq!(program.id, id);
115+
assert_eq!(program.statements.len(), 1);
116+
assert_eq!(program.span, span);
117+
118+
let serialized = serde_json::to_string(&program).expect("serialize should succeed");
119+
let deserialized: Program =
120+
serde_json::from_str(&serialized).expect("deserialize should succeed");
121+
122+
assert_eq!(program, deserialized);
123+
}
124+
125+
#[test]
126+
fn test_ast_block_construction_and_serialization() {
127+
let span = Span::new(10, 20);
128+
let id = NodeId(3);
129+
130+
// Create a dummy statement (Break)
131+
let break_stmt = Statement::Break(BreakStmt::new(NodeId(4), span));
132+
133+
let block = Block::new(id, vec![break_stmt.clone()], span);
134+
135+
assert_eq!(block.id, id);
136+
assert_eq!(block.statements.len(), 1);
137+
assert_eq!(block.span, span);
138+
139+
let serialized = serde_json::to_string(&block).expect("serialize should succeed");
140+
let deserialized: Block =
141+
serde_json::from_str(&serialized).expect("deserialize should succeed");
142+
143+
assert_eq!(block, deserialized);
144+
}
145+
104146
// Internal helper just to satisfy TypeSpec compilation in test_ast_struct_decl
105147
use techscript_ast::TypeSpec;

0 commit comments

Comments
 (0)