Skip to content

Commit 7f5651b

Browse files
committed
🚨 better Lexer tests
1 parent 11be1c6 commit 7f5651b

File tree

2 files changed

+42
-2
lines changed

2 files changed

+42
-2
lines changed

PascalInterpreter/PascalInterpreter/FatalError.swift

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ import Foundation
1111
/**
1212
Taken from https://medium.com/@marcosantadev/how-to-test-fatalerror-in-swift-e1be9ff11a29
1313
*/
14-
/*func fatalError(_ message: @autoclosure () -> String = "", file: StaticString = #file, line: UInt = #line) -> Never {
14+
func fatalError(_ message: @autoclosure () -> String = "", file: StaticString = #file, line: UInt = #line) -> Never {
1515
FatalErrorUtil.fatalErrorClosure(message(), file, line)
16-
}*/
16+
}
1717

1818
struct FatalErrorUtil {
1919

PascalInterpreter/PascalInterpreterTests/LexerTests.swift

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -390,4 +390,44 @@ class LexerTests: XCTestCase {
390390
XCTAssert(lexer.getNextToken() == .assign)
391391
XCTAssert(lexer.getNextToken() == .constant(.integer(8)))
392392
}
393+
394+
func testComparisons() {
395+
let lexer = Lexer("x = 5; a <4; 5 > 8")
396+
XCTAssert(lexer.getNextToken() == .id("x"))
397+
XCTAssert(lexer.getNextToken() == .equals)
398+
XCTAssert(lexer.getNextToken() == .constant(.integer(5)))
399+
XCTAssert(lexer.getNextToken() == .semi)
400+
XCTAssert(lexer.getNextToken() == .id("a"))
401+
XCTAssert(lexer.getNextToken() == .lessThan)
402+
XCTAssert(lexer.getNextToken() == .constant(.integer(4)))
403+
XCTAssert(lexer.getNextToken() == .semi)
404+
XCTAssert(lexer.getNextToken() == .constant(.integer(5)))
405+
XCTAssert(lexer.getNextToken() == .greaterThan)
406+
XCTAssert(lexer.getNextToken() == .constant(.integer(8)))
407+
XCTAssert(lexer.getNextToken() == .eof)
408+
}
409+
410+
func testDataTypes() {
411+
let lexer = Lexer("a: Integer; b: Real; c: Boolean; c:= true; c:=false")
412+
XCTAssert(lexer.getNextToken() == .id("a"))
413+
XCTAssert(lexer.getNextToken() == .colon)
414+
XCTAssert(lexer.getNextToken() == .type(.integer))
415+
XCTAssert(lexer.getNextToken() == .semi)
416+
XCTAssert(lexer.getNextToken() == .id("b"))
417+
XCTAssert(lexer.getNextToken() == .colon)
418+
XCTAssert(lexer.getNextToken() == .type(.real))
419+
XCTAssert(lexer.getNextToken() == .semi)
420+
XCTAssert(lexer.getNextToken() == .id("c"))
421+
XCTAssert(lexer.getNextToken() == .colon)
422+
XCTAssert(lexer.getNextToken() == .type(.boolean))
423+
XCTAssert(lexer.getNextToken() == .semi)
424+
XCTAssert(lexer.getNextToken() == .id("c"))
425+
XCTAssert(lexer.getNextToken() == .assign)
426+
XCTAssert(lexer.getNextToken() == .constant(.boolean(true)))
427+
XCTAssert(lexer.getNextToken() == .semi)
428+
XCTAssert(lexer.getNextToken() == .id("c"))
429+
XCTAssert(lexer.getNextToken() == .assign)
430+
XCTAssert(lexer.getNextToken() == .constant(.boolean(false)))
431+
XCTAssert(lexer.getNextToken() == .eof)
432+
}
393433
}

0 commit comments

Comments
 (0)