* Replace UTF8 parser with String based one * swift format * Add parsing errors that include context about where error is * Remove old error tests
80 lines
2.5 KiB
Swift
80 lines
2.5 KiB
Swift
import HummingbirdMustache
|
|
import XCTest
|
|
|
|
final class ErrorTests: XCTestCase {
|
|
func testSectionCloseNameIncorrect() {
|
|
XCTAssertThrowsError(try HBMustacheTemplate(string: """
|
|
{{#test}}
|
|
{{.}}
|
|
{{/test2}}
|
|
""")) { error in
|
|
switch error {
|
|
case let error as HBMustacheTemplate.ParserError:
|
|
XCTAssertEqual(error.error as? HBMustacheTemplate.Error, .sectionCloseNameIncorrect)
|
|
XCTAssertEqual(error.context.line, "{{/test2}}")
|
|
XCTAssertEqual(error.context.lineNumber, 3)
|
|
XCTAssertEqual(error.context.columnNumber, 4)
|
|
|
|
default:
|
|
XCTFail("\(error)")
|
|
}
|
|
}
|
|
}
|
|
|
|
func testUnfinishedName() {
|
|
XCTAssertThrowsError(try HBMustacheTemplate(string: """
|
|
{{#test}}
|
|
{{name}
|
|
{{/test2}}
|
|
""")) { error in
|
|
switch error {
|
|
case let error as HBMustacheTemplate.ParserError:
|
|
XCTAssertEqual(error.error as? HBMustacheTemplate.Error, .unfinishedName)
|
|
XCTAssertEqual(error.context.line, "{{name}")
|
|
XCTAssertEqual(error.context.lineNumber, 2)
|
|
XCTAssertEqual(error.context.columnNumber, 7)
|
|
|
|
default:
|
|
XCTFail("\(error)")
|
|
}
|
|
}
|
|
}
|
|
|
|
func testExpectedSectionEnd() {
|
|
XCTAssertThrowsError(try HBMustacheTemplate(string: """
|
|
{{#test}}
|
|
{{.}}
|
|
""")) { error in
|
|
switch error {
|
|
case let error as HBMustacheTemplate.ParserError:
|
|
XCTAssertEqual(error.error as? HBMustacheTemplate.Error, .expectedSectionEnd)
|
|
XCTAssertEqual(error.context.line, "{{.}}")
|
|
XCTAssertEqual(error.context.lineNumber, 2)
|
|
XCTAssertEqual(error.context.columnNumber, 6)
|
|
|
|
default:
|
|
XCTFail("\(error)")
|
|
}
|
|
}
|
|
}
|
|
|
|
func testInvalidSetDelimiter() {
|
|
XCTAssertThrowsError(try HBMustacheTemplate(string: """
|
|
{{=<% %>=}}
|
|
<%.%>
|
|
<%={{}}=%>
|
|
""")) { error in
|
|
switch error {
|
|
case let error as HBMustacheTemplate.ParserError:
|
|
XCTAssertEqual(error.error as? HBMustacheTemplate.Error, .invalidSetDelimiter)
|
|
XCTAssertEqual(error.context.line, "<%={{}}=%>")
|
|
XCTAssertEqual(error.context.lineNumber, 3)
|
|
XCTAssertEqual(error.context.columnNumber, 4)
|
|
|
|
default:
|
|
XCTFail("\(error)")
|
|
}
|
|
}
|
|
}
|
|
}
|