Skip to content

Commit 4aed9a9

Browse files
committed
🚨 parser test for array access and assignment
1 parent dd04c69 commit 4aed9a9

File tree

1 file changed

+26
-0
lines changed

1 file changed

+26
-0
lines changed

PascalInterpreter/PascalInterpreterTests/ParserTests.swift

+26
Original file line numberDiff line numberDiff line change
@@ -492,4 +492,30 @@ class ParserTests: XCTestCase {
492492
let node = Program(name: "Main", block: block)
493493
XCTAssertEqual(result, node)
494494
}
495+
496+
func testProgramWithArray() {
497+
let program =
498+
"""
499+
program Main;
500+
var data: array [1..5] of Integer;
501+
502+
begin
503+
for i:=1 to length(data) do
504+
begin
505+
data[i] := i;
506+
end;
507+
writeln(data[2]);
508+
end.
509+
"""
510+
511+
let parser = Parser(program)
512+
let result = parser.parse()
513+
let dataDec = ArrayDeclaration(variable: Variable(name: "data"), type: VariableType(type: .integer), startIndex: 1, endIndex: 5)
514+
let writeln = FunctionCall(name: "writeln", actualParameters: [ArrayVariable(name: "data", index: Number.integer(2))])
515+
let loop = For(statement: Compound(children: [Assignment(left: ArrayVariable(name: "data", index: Variable(name: "i")), right: Variable(name: "i")), NoOp()]), variable: Variable(name: "i"), startValue: Number.integer(1), endValue: FunctionCall(name: "length", actualParameters: [Variable(name: "data")]))
516+
let compound = Compound(children: [loop, writeln, NoOp()])
517+
let block = Block(declarations: [dataDec], compound: compound)
518+
let node = Program(name: "Main", block: block)
519+
XCTAssertEqual(result, node)
520+
}
495521
}

0 commit comments

Comments
 (0)