Replace raw UTF8 parser with String parser (#6)
* Replace UTF8 parser with String based one * swift format * Add parsing errors that include context about where error is * Remove old error tests
This commit is contained in:
79
Tests/HummingbirdMustacheTests/ErrorTests.swift
Normal file
79
Tests/HummingbirdMustacheTests/ErrorTests.swift
Normal file
@@ -0,0 +1,79 @@
|
||||
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)")
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user