@@ -25,8 +25,9 @@ class InterpreterTests: XCTestCase {
25
25
26
26
let interpeter = Interpreter ( program)
27
27
interpeter. interpret ( )
28
- let state = interpeter. getState ( )
29
- XCTAssert ( state == [ " a " : Value . number ( . integer( 2 ) ) ] )
28
+ let ( scalars, arrays) = interpeter. getState ( )
29
+ XCTAssert ( scalars == [ " A " : Value . number ( . integer( 2 ) ) ] )
30
+ XCTAssert ( arrays. count == 0 )
30
31
}
31
32
32
33
func testMoreComplexProgram( ) {
@@ -48,8 +49,9 @@ class InterpreterTests: XCTestCase {
48
49
49
50
let interpeter = Interpreter ( program)
50
51
interpeter. interpret ( )
51
- let state = interpeter. getState ( )
52
- XCTAssert ( state == [ " b " : Value . number ( . integer( 25 ) ) , " number " : Value . number ( . integer( 2 ) ) , " a " : Value . number ( . integer( 2 ) ) , " x " : Value . number ( . integer( 11 ) ) , " c " : Value . number ( . integer( 27 ) ) ] )
52
+ let ( scalars, arrays) = interpeter. getState ( )
53
+ XCTAssert ( scalars == [ " B " : Value . number ( . integer( 25 ) ) , " NUMBER " : Value . number ( . integer( 2 ) ) , " A " : Value . number ( . integer( 2 ) ) , " X " : Value . number ( . integer( 11 ) ) , " C " : Value . number ( . integer( 27 ) ) ] )
54
+ XCTAssert ( arrays. count == 0 )
53
55
}
54
56
55
57
func testProgramWithDeclarations( ) {
@@ -69,8 +71,9 @@ class InterpreterTests: XCTestCase {
69
71
70
72
let interpeter = Interpreter ( program)
71
73
interpeter. interpret ( )
72
- let state = interpeter. getState ( )
73
- XCTAssert ( state == [ " b " : Value . number ( . integer( 25 ) ) , " a " : Value . number ( . integer( 2 ) ) , " y " : Value . number ( . real( 5.9971428571428573 ) ) ] )
74
+ let ( scalars, arrays) = interpeter. getState ( )
75
+ XCTAssert ( scalars == [ " B " : Value . number ( . integer( 25 ) ) , " A " : Value . number ( . integer( 2 ) ) , " Y " : Value . number ( . real( 5.9971428571428573 ) ) ] )
76
+ XCTAssert ( arrays. count == 0 )
74
77
}
75
78
76
79
func testProgramWithProcedureCallAndNoParameters( ) {
@@ -94,8 +97,9 @@ class InterpreterTests: XCTestCase {
94
97
95
98
let interpeter = Interpreter ( program)
96
99
interpeter. interpret ( )
97
- let state = interpeter. getState ( )
98
- XCTAssert ( state == [ " x " : Value . number ( . real( 7 ) ) , " y " : Value . number ( . real( 5 ) ) ] )
100
+ let ( scalars, arrays) = interpeter. getState ( )
101
+ XCTAssert ( scalars == [ " X " : Value . number ( . real( 7 ) ) , " Y " : Value . number ( . real( 5 ) ) ] )
102
+ XCTAssert ( arrays. count == 0 )
99
103
}
100
104
101
105
func testProgramWithProcedureCallAndParameters( ) {
@@ -117,8 +121,9 @@ class InterpreterTests: XCTestCase {
117
121
118
122
let interpeter = Interpreter ( program)
119
123
interpeter. interpret ( )
120
- let state = interpeter. getState ( )
121
- XCTAssert ( state == [ " x " : Value . number ( . real( 5 ) ) , " y " : Value . number ( . real( 3 ) ) ] )
124
+ let ( scalars, arrays) = interpeter. getState ( )
125
+ XCTAssert ( scalars == [ " X " : Value . number ( . real( 5 ) ) , " Y " : Value . number ( . real( 3 ) ) ] )
126
+ XCTAssert ( arrays. count == 0 )
122
127
}
123
128
124
129
func testProgramWithRecursiveFunction( ) {
@@ -142,8 +147,9 @@ class InterpreterTests: XCTestCase {
142
147
143
148
let interpeter = Interpreter ( program)
144
149
interpeter. interpret ( )
145
- let state = interpeter. getState ( )
146
- XCTAssert ( state == [ " result " : Value . number ( . integer( 720 ) ) ] )
150
+ let ( scalars, arrays) = interpeter. getState ( )
151
+ XCTAssert ( scalars == [ " RESULT " : Value . number ( . integer( 720 ) ) ] )
152
+ XCTAssert ( arrays. count == 0 )
147
153
}
148
154
149
155
func testProgramWithRecursiveAndBuiltInFunctions( ) {
@@ -168,8 +174,9 @@ class InterpreterTests: XCTestCase {
168
174
169
175
let interpeter = Interpreter ( program)
170
176
interpeter. interpret ( )
171
- let state = interpeter. getState ( )
172
- XCTAssert ( state == [ " result " : Value . number ( . integer( 720 ) ) ] )
177
+ let ( scalars, arrays) = interpeter. getState ( )
178
+ XCTAssert ( scalars == [ " RESULT " : Value . number ( . integer( 720 ) ) ] )
179
+ XCTAssert ( arrays. count == 0 )
173
180
}
174
181
175
182
func testProgramWithRecursiveFunctionsAndParameterTheSameName( ) {
@@ -194,8 +201,9 @@ class InterpreterTests: XCTestCase {
194
201
195
202
let interpeter = Interpreter ( program)
196
203
interpeter. interpret ( )
197
- let state = interpeter. getState ( )
198
- XCTAssert ( state == [ " result " : Value . number ( . integer( 720 ) ) , " number " : Value . number ( . integer( 6 ) ) ] )
204
+ let ( scalars, arrays) = interpeter. getState ( )
205
+ XCTAssert ( scalars == [ " RESULT " : Value . number ( . integer( 720 ) ) , " NUMBER " : Value . number ( . integer( 6 ) ) ] )
206
+ XCTAssert ( arrays. count == 0 )
199
207
}
200
208
201
209
func testProgramWithRepeatUntil( ) {
@@ -215,8 +223,9 @@ class InterpreterTests: XCTestCase {
215
223
216
224
let interpeter = Interpreter ( program)
217
225
interpeter. interpret ( )
218
- let state = interpeter. getState ( )
219
- XCTAssert ( state == [ " x " : Value . number ( . integer( 6 ) ) ] )
226
+ let ( scalars, arrays) = interpeter. getState ( )
227
+ XCTAssert ( scalars == [ " X " : Value . number ( . integer( 6 ) ) ] )
228
+ XCTAssert ( arrays. count == 0 )
220
229
}
221
230
222
231
func testProgramWithForLoop( ) {
@@ -235,25 +244,30 @@ class InterpreterTests: XCTestCase {
235
244
236
245
let interpeter = Interpreter ( program)
237
246
interpeter. interpret ( )
238
- let state = interpeter. getState ( )
239
- XCTAssert ( state == [ " x " : Value . number ( . integer( 6 ) ) ] )
247
+ let ( scalars, arrays) = interpeter. getState ( )
248
+ XCTAssert ( scalars == [ " X " : Value . number ( . integer( 6 ) ) ] )
249
+ XCTAssert ( arrays. count == 0 )
240
250
}
241
251
242
252
func testProgramWithArray( ) {
243
- let program =
244
- """
245
- program Main;
246
- var data: array [1..5] of Integer;
247
-
248
- begin
249
- for i:=1 to 5 do
250
- begin
251
- data[i] := i;
252
- end;
253
- end.
254
- """
253
+ let program =
254
+ """
255
+ program Main;
256
+ var data: array [1..5] of Integer;
257
+
258
+ begin
259
+ for i:=1 to length(data) do
260
+ begin
261
+ data[i] := i;
262
+ end;
263
+ end.
264
+ """
255
265
256
266
let interpeter = Interpreter ( program)
257
267
interpeter. interpret ( )
268
+ let ( scalars, arrays) = interpeter. getState ( )
269
+ XCTAssert ( scalars == [ : ] )
270
+ XCTAssert ( arrays. count== 1 )
271
+ XCTAssert ( arrays [ " DATA " ] ! == [ Value . number ( . integer( 1 ) ) , Value . number ( . integer( 2 ) ) , Value . number ( . integer( 3 ) ) , Value . number ( . integer( 4 ) ) , Value . number ( . integer( 5 ) ) ] )
258
272
}
259
273
}
0 commit comments