Allow node parsing to return an error

Closes #5
This commit is contained in:
Kyle Fuller
2014-10-26 12:11:40 +00:00
parent aad8a1884c
commit 925c663555
5 changed files with 97 additions and 43 deletions

View File

@@ -101,12 +101,13 @@ class IfNodeTests: NodeTests {
]
let parser = TokenParser(tokens: tokens)
let nodes = parser.parse()
let node = nodes.first! as IfNode
let (nodes, error) = parser.parse()
let node = nodes!.first! as IfNode
let trueNode = node.trueNodes.first! as TextNode
let falseNode = node.falseNodes.first! as TextNode
XCTAssertEqual(nodes.count, 1)
XCTAssertTrue(error == nil)
XCTAssertEqual(nodes!.count, 1)
XCTAssertEqual(node.variable.variable, "value")
XCTAssertEqual(node.trueNodes.count, 1)
XCTAssertEqual(trueNode.text, "true")
@@ -124,12 +125,13 @@ class IfNodeTests: NodeTests {
]
let parser = TokenParser(tokens: tokens)
let nodes = parser.parse()
let node = nodes.first! as IfNode
let (nodes, error) = parser.parse()
let node = nodes!.first! as IfNode
let trueNode = node.trueNodes.first! as TextNode
let falseNode = node.falseNodes.first! as TextNode
XCTAssertEqual(nodes.count, 1)
XCTAssertTrue(error == nil)
XCTAssertEqual(nodes!.count, 1)
XCTAssertEqual(node.variable.variable, "value")
XCTAssertEqual(node.trueNodes.count, 1)
XCTAssertEqual(trueNode.text, "true")

View File

@@ -16,10 +16,11 @@ class TokenParserTests: XCTestCase {
Token.Text(value: "Hello World")
])
let nodes = parser.parse()
let node = nodes.first as TextNode!
let (nodes, error) = parser.parse()
let node = nodes!.first as TextNode!
XCTAssertEqual(nodes.count, 1)
XCTAssertTrue(error == nil)
XCTAssertEqual(nodes!.count, 1)
XCTAssertEqual(node.text, "Hello World")
}
@@ -28,11 +29,12 @@ class TokenParserTests: XCTestCase {
Token.Variable(value: "name")
])
let nodes = parser.parse()
let node = nodes.first as VariableNode!
let (nodes, error) = parser.parse()
let node = nodes!.first as VariableNode!
let variable = node.variable
XCTAssertEqual(nodes.count, 1)
XCTAssertTrue(error == nil)
XCTAssertEqual(nodes!.count, 1)
XCTAssertEqual(variable, Variable("name"))
}
@@ -41,9 +43,9 @@ class TokenParserTests: XCTestCase {
Token.Comment(value: "Secret stuff!")
])
let nodes = parser.parse()
let (nodes, error) = parser.parse()
XCTAssertEqual(nodes.count, 0)
XCTAssertEqual(nodes!.count, 0)
}
func testParsingTagToken() {
@@ -51,8 +53,9 @@ class TokenParserTests: XCTestCase {
Token.Block(value: "now"),
])
let nodes = parser.parse()
let node = nodes.first as NowNode!
XCTAssertEqual(nodes.count, 1)
let (nodes, error) = parser.parse()
let node = nodes!.first as NowNode!
XCTAssertTrue(error == nil)
XCTAssertEqual(nodes!.count, 1)
}
}