Skip to content

Commit 49e5195

Browse files
committed
🚨 unit tests for parser and interpreter
1 parent f99c213 commit 49e5195

File tree

2 files changed

+27
-9
lines changed

2 files changed

+27
-9
lines changed

SwiftPascalInterpreter/SwiftPascalInterpreterTests/InterpreterTests.swift

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -7,28 +7,27 @@
77
//
88

99
import Foundation
10-
1110
import Foundation
12-
import XCTest
1311
@testable import SwiftPascalInterpreter
12+
import XCTest
1413

1514
class InterpreterTests: XCTestCase {
1615
func testSingleInteger() {
1716
let interpeter = Interpreter("3")
18-
let result = interpeter.expr()
17+
let result = interpeter.eval()
1918
XCTAssert(result == 3)
2019
}
2120

2221
func testMultipleIntegers() {
2322
let interpeter = Interpreter("1+2*3")
24-
let result = interpeter.expr()
23+
let result = interpeter.eval()
2524
XCTAssert(result == 7)
2625
}
2726

2827
func testParentheses() {
29-
XCTAssert(Interpreter("2 * (7 + 3)").expr() == 20)
30-
XCTAssert(Interpreter("7 + 3 * (10 / (12 / (3 + 1) - 1))").expr() == 22)
31-
XCTAssert(Interpreter("7 + 3 * (10 / (12 / (3 + 1) - 1)) / (2 + 3) - 5 - 3 + (8)").expr() == 10)
32-
XCTAssert(Interpreter("7 + (((3 + 2)))").expr() == 12)
28+
XCTAssert(Interpreter("2 * (7 + 3)").eval() == 20)
29+
XCTAssert(Interpreter("7 + 3 * (10 / (12 / (3 + 1) - 1))").eval() == 22)
30+
XCTAssert(Interpreter("7 + 3 * (10 / (12 / (3 + 1) - 1)) / (2 + 3) - 5 - 3 + (8)").eval() == 10)
31+
XCTAssert(Interpreter("7 + (((3 + 2)))").eval() == 12)
3332
}
3433
}

SwiftPascalInterpreter/SwiftPascalInterpreterTests/ParserTests.swift

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@
77
//
88

99
import Foundation
10-
import XCTest
1110
@testable import SwiftPascalInterpreter
11+
import XCTest
1212

1313
class ParserTests: XCTestCase {
1414
func testNumber() {
@@ -18,6 +18,25 @@ class ParserTests: XCTestCase {
1818
XCTAssert(result == node)
1919
}
2020

21+
func testBinaryOperation() {
22+
let three = AST.number(3)
23+
let two = AST.number(2)
24+
let multiplication = AST.binaryOperation(left: three, operation: .mult, right: two)
25+
let node = AST.binaryOperation(left: multiplication, operation: .div, right: two)
26+
let parser = Parser("3 * 2 / 2")
27+
let result = parser.expr()
28+
XCTAssert(result == node)
29+
}
30+
31+
func testBinaryOperationOnSamePriority() {
32+
let one = AST.number(1)
33+
let sum = AST.binaryOperation(left: one, operation: .plus, right: one)
34+
let node = AST.binaryOperation(left: sum, operation: .plus, right: one)
35+
let parser = Parser("1 + 1 + 1")
36+
let result = parser.expr()
37+
XCTAssert(result == node)
38+
}
39+
2140
func testBinaryOperationOnTwoNumberAndParentheses() {
2241
let one = AST.number(1)
2342
let two = AST.number(2)

0 commit comments

Comments
 (0)