File tree Expand file tree Collapse file tree 2 files changed +27
-9
lines changed
SwiftPascalInterpreter/SwiftPascalInterpreterTests Expand file tree Collapse file tree 2 files changed +27
-9
lines changed Original file line number Diff line number Diff line change 77//
88
99import Foundation
10-
1110import Foundation
12- import XCTest
1311@testable import SwiftPascalInterpreter
12+ import XCTest
1413
1514class 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}
Original file line number Diff line number Diff line change 77//
88
99import Foundation
10- import XCTest
1110@testable import SwiftPascalInterpreter
11+ import XCTest
1212
1313class 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 )
You can’t perform that action at this time.
0 commit comments