@@ -34,7 +34,15 @@ class SemanticAnalyzerTests: XCTestCase {
3434 let node = parser. parse ( )
3535
3636 let analyzer = SemanticAnalyzer ( )
37- analyzer. analyze ( node: node)
37+ let state = analyzer. analyze ( node: node)
38+ XCTAssert ( state. keys. count == 1 )
39+ XCTAssert ( state [ " global " ] != nil )
40+ XCTAssert ( state [ " global " ] !. level == 1 )
41+ XCTAssert ( state [ " global " ] !. lookup ( " y " ) != nil )
42+ XCTAssert ( state [ " global " ] !. lookup ( " a " ) != nil )
43+ XCTAssert ( state [ " global " ] !. lookup ( " b " ) != nil )
44+ XCTAssert ( state [ " global " ] !. lookup ( " number " ) != nil )
45+ XCTAssert ( state [ " global " ] !. lookup ( " c " ) == nil )
3846 }
3947
4048 func testSemanticAnalyzerAssignUndeclaredVariable( ) {
@@ -59,7 +67,7 @@ class SemanticAnalyzerTests: XCTestCase {
5967
6068 let analyzer = SemanticAnalyzer ( )
6169 expectFatalError ( expectedMessage: " Symbol(indetifier) not found 'x' " ) {
62- analyzer. analyze ( node: node)
70+ _ = analyzer. analyze ( node: node)
6371 }
6472 }
6573
@@ -79,7 +87,7 @@ class SemanticAnalyzerTests: XCTestCase {
7987
8088 let analyzer = SemanticAnalyzer ( )
8189 expectFatalError ( expectedMessage: " Symbol(indetifier) not found 'y' " ) {
82- analyzer. analyze ( node: node)
90+ _ = analyzer. analyze ( node: node)
8391 }
8492 }
8593
@@ -100,7 +108,7 @@ class SemanticAnalyzerTests: XCTestCase {
100108
101109 let analyzer = SemanticAnalyzer ( )
102110 expectFatalError ( expectedMessage: " Duplicate identifier 'y' found " ) {
103- analyzer. analyze ( node: node)
111+ _ = analyzer. analyze ( node: node)
104112 }
105113 }
106114
@@ -125,7 +133,19 @@ class SemanticAnalyzerTests: XCTestCase {
125133 let node = parser. parse ( )
126134
127135 let analyzer = SemanticAnalyzer ( )
128- analyzer. analyze ( node: node)
136+ let state = analyzer. analyze ( node: node)
137+ XCTAssert ( state. keys. count == 2 )
138+ XCTAssert ( state [ " global " ] != nil )
139+ XCTAssert ( state [ " global " ] !. level == 1 )
140+ XCTAssert ( state [ " global " ] !. lookup ( " x " ) != nil )
141+ XCTAssert ( state [ " global " ] !. lookup ( " y " ) != nil )
142+ XCTAssert ( state [ " global " ] !. lookup ( " a " ) == nil )
143+ XCTAssert ( state. keys. count == 2 )
144+ XCTAssert ( state [ " Alpha " ] != nil )
145+ XCTAssert ( state [ " Alpha " ] !. level == 2 )
146+ XCTAssert ( state [ " Alpha " ] !. lookup ( " x " ) != nil )
147+ XCTAssert ( state [ " Alpha " ] !. lookup ( " y " ) != nil )
148+ XCTAssert ( state [ " Alpha " ] !. lookup ( " a " ) != nil )
129149 }
130150
131151 func testSemanticAnalyzerUndeclaredProcedure( ) {
@@ -150,7 +170,7 @@ class SemanticAnalyzerTests: XCTestCase {
150170
151171 let analyzer = SemanticAnalyzer ( )
152172 expectFatalError ( expectedMessage: " Symbol(procedure) not found 'Beta' " ) {
153- analyzer. analyze ( node: node)
173+ _ = analyzer. analyze ( node: node)
154174 }
155175 }
156176
@@ -175,7 +195,19 @@ class SemanticAnalyzerTests: XCTestCase {
175195 let node = parser. parse ( )
176196
177197 let analyzer = SemanticAnalyzer ( )
178- analyzer. analyze ( node: node)
198+ let state = analyzer. analyze ( node: node)
199+ XCTAssert ( state. keys. count == 2 )
200+ XCTAssert ( state [ " global " ] != nil )
201+ XCTAssert ( state [ " global " ] !. level == 1 )
202+ XCTAssert ( state [ " global " ] !. lookup ( " x " ) != nil )
203+ XCTAssert ( state [ " global " ] !. lookup ( " y " ) != nil )
204+ XCTAssert ( state [ " global " ] !. lookup ( " a " ) == nil )
205+ XCTAssert ( state. keys. count == 2 )
206+ XCTAssert ( state [ " Alpha " ] != nil )
207+ XCTAssert ( state [ " Alpha " ] !. level == 2 )
208+ XCTAssert ( state [ " Alpha " ] !. lookup ( " x " ) != nil )
209+ XCTAssert ( state [ " Alpha " ] !. lookup ( " y " ) != nil )
210+ XCTAssert ( state [ " Alpha " ] !. lookup ( " a " ) == nil )
179211 }
180212
181213 func testSemanticAnalyzerProcedureUndeclaredVariable( ) {
@@ -200,13 +232,13 @@ class SemanticAnalyzerTests: XCTestCase {
200232
201233 let analyzer = SemanticAnalyzer ( )
202234 expectFatalError ( expectedMessage: " Symbol(indetifier) not found 'b' " ) {
203- analyzer. analyze ( node: node)
235+ _ = analyzer. analyze ( node: node)
204236 }
205237 }
206238
207239 func testSemanticAnalyzerProcedureCallWithoutParameter( ) {
208240 let program =
209- """
241+ """
210242 program Main;
211243 var x, y: real;
212244
@@ -226,13 +258,13 @@ class SemanticAnalyzerTests: XCTestCase {
226258
227259 let analyzer = SemanticAnalyzer ( )
228260 expectFatalError ( expectedMessage: " Procedure called with wrong number of parameters 'Alpha' " ) {
229- analyzer. analyze ( node: node)
261+ _ = analyzer. analyze ( node: node)
230262 }
231263 }
232264
233265 func testSemanticAnalyzerProcedureCallWithParameter( ) {
234266 let program =
235- """
267+ """
236268 program Main;
237269 var x, y: real;
238270
@@ -251,12 +283,24 @@ class SemanticAnalyzerTests: XCTestCase {
251283 let node = parser. parse ( )
252284
253285 let analyzer = SemanticAnalyzer ( )
254- analyzer. analyze ( node: node)
286+ let state = analyzer. analyze ( node: node)
287+ XCTAssert ( state. keys. count == 2 )
288+ XCTAssert ( state [ " global " ] != nil )
289+ XCTAssert ( state [ " global " ] !. level == 1 )
290+ XCTAssert ( state [ " global " ] !. lookup ( " x " ) != nil )
291+ XCTAssert ( state [ " global " ] !. lookup ( " y " ) != nil )
292+ XCTAssert ( state [ " global " ] !. lookup ( " a " ) == nil )
293+ XCTAssert ( state. keys. count == 2 )
294+ XCTAssert ( state [ " Alpha " ] != nil )
295+ XCTAssert ( state [ " Alpha " ] !. level == 2 )
296+ XCTAssert ( state [ " Alpha " ] !. lookup ( " x " ) != nil )
297+ XCTAssert ( state [ " Alpha " ] !. lookup ( " y " ) != nil )
298+ XCTAssert ( state [ " Alpha " ] !. lookup ( " a " ) != nil )
255299 }
256300
257301 func testSemanticAnalyzerProcedureCallWithParameterWrongType( ) {
258302 let program =
259- """
303+ """
260304 program Main;
261305 var x, y: real;
262306
@@ -276,7 +320,7 @@ class SemanticAnalyzerTests: XCTestCase {
276320
277321 let analyzer = SemanticAnalyzer ( )
278322 expectFatalError ( expectedMessage: " Cannot assing Real to Integer parameter in procedure call 'Alpha' " ) {
279- analyzer. analyze ( node: node)
323+ _ = analyzer. analyze ( node: node)
280324 }
281325 }
282326}
0 commit comments