Skip to content

Commit 1e5f6da

Browse files
committed
🚨 adding procedure related tests for semantic analyzer
1 parent 941bb40 commit 1e5f6da

File tree

1 file changed

+50
-0
lines changed

1 file changed

+50
-0
lines changed

PascalInterpreter/PascalInterpreterTests/SemanticAnalyzer.swift

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,4 +103,54 @@ class SemanticAnalyzerTests: XCTestCase {
103103
analyzer.analyze(node: node)
104104
}
105105
}
106+
107+
func testSemanticAnalyzerProcedure() {
108+
let program =
109+
"""
110+
program Main;
111+
var x, y: real;
112+
113+
procedure Alpha(a : integer);
114+
var y : integer;
115+
begin
116+
x := a + x + y;
117+
end;
118+
119+
begin { Main }
120+
121+
end. { Main }
122+
"""
123+
124+
let parser = Parser(program)
125+
let node = parser.parse()
126+
127+
let analyzer = SemanticAnalyzer()
128+
analyzer.analyze(node: node)
129+
}
130+
131+
func testSemanticAnalyzerProcedureUndeclaredVariable() {
132+
let program =
133+
"""
134+
program Main;
135+
var x, y: real;
136+
137+
procedure Alpha(a : integer);
138+
var y : integer;
139+
begin
140+
x := a + x + b;
141+
end;
142+
143+
begin { Main }
144+
145+
end. { Main }
146+
"""
147+
148+
let parser = Parser(program)
149+
let node = parser.parse()
150+
151+
let analyzer = SemanticAnalyzer()
152+
expectFatalError(expectedMessage: "Symbol(indetifier) not found 'b'") {
153+
analyzer.analyze(node: node)
154+
}
155+
}
106156
}

0 commit comments

Comments
 (0)