Refactor more components to use enum
This commit is contained in:
@@ -93,18 +93,18 @@ class IfNodeTests: NodeTests {
|
||||
]
|
||||
|
||||
let parser = TokenParser(tokens: tokens)
|
||||
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
|
||||
assertSuccess(parser.parse()) { nodes in
|
||||
let node = nodes.first! as IfNode
|
||||
let trueNode = node.trueNodes.first! as TextNode
|
||||
let falseNode = node.falseNodes.first! as TextNode
|
||||
|
||||
XCTAssertTrue(error == nil)
|
||||
XCTAssertEqual(nodes!.count, 1)
|
||||
XCTAssertEqual(node.variable.variable, "value")
|
||||
XCTAssertEqual(node.trueNodes.count, 1)
|
||||
XCTAssertEqual(trueNode.text, "true")
|
||||
XCTAssertEqual(node.falseNodes.count, 1)
|
||||
XCTAssertEqual(falseNode.text, "false")
|
||||
XCTAssertEqual(nodes.count, 1)
|
||||
XCTAssertEqual(node.variable.variable, "value")
|
||||
XCTAssertEqual(node.trueNodes.count, 1)
|
||||
XCTAssertEqual(trueNode.text, "true")
|
||||
XCTAssertEqual(node.falseNodes.count, 1)
|
||||
XCTAssertEqual(falseNode.text, "false")
|
||||
}
|
||||
}
|
||||
|
||||
func testParseIfNot() {
|
||||
@@ -117,18 +117,18 @@ class IfNodeTests: NodeTests {
|
||||
]
|
||||
|
||||
let parser = TokenParser(tokens: tokens)
|
||||
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
|
||||
assertSuccess(parser.parse()) { nodes in
|
||||
let node = nodes.first! as IfNode
|
||||
let trueNode = node.trueNodes.first! as TextNode
|
||||
let falseNode = node.falseNodes.first! as TextNode
|
||||
|
||||
XCTAssertTrue(error == nil)
|
||||
XCTAssertEqual(nodes!.count, 1)
|
||||
XCTAssertEqual(node.variable.variable, "value")
|
||||
XCTAssertEqual(node.trueNodes.count, 1)
|
||||
XCTAssertEqual(trueNode.text, "true")
|
||||
XCTAssertEqual(node.falseNodes.count, 1)
|
||||
XCTAssertEqual(falseNode.text, "false")
|
||||
XCTAssertEqual(nodes.count, 1)
|
||||
XCTAssertEqual(node.variable.variable, "value")
|
||||
XCTAssertEqual(node.trueNodes.count, 1)
|
||||
XCTAssertEqual(trueNode.text, "true")
|
||||
XCTAssertEqual(node.falseNodes.count, 1)
|
||||
XCTAssertEqual(falseNode.text, "false")
|
||||
}
|
||||
}
|
||||
|
||||
func testParseIfWithoutEndIfError() {
|
||||
@@ -137,10 +137,7 @@ class IfNodeTests: NodeTests {
|
||||
]
|
||||
|
||||
let parser = TokenParser(tokens: tokens)
|
||||
let (nodes, error) = parser.parse()
|
||||
|
||||
XCTAssertTrue(nodes == nil)
|
||||
XCTAssertEqual(error!.description, "if: `endif` was not found.")
|
||||
assertFailure(parser.parse(), "if: `endif` was not found.")
|
||||
}
|
||||
|
||||
func testParseIfNotWithoutEndIfError() {
|
||||
@@ -149,10 +146,7 @@ class IfNodeTests: NodeTests {
|
||||
]
|
||||
|
||||
let parser = TokenParser(tokens: tokens)
|
||||
let (nodes, error) = parser.parse()
|
||||
|
||||
XCTAssertTrue(nodes == nil)
|
||||
XCTAssertEqual(error!.description, "ifnot: `endif` was not found.")
|
||||
assertFailure(parser.parse(), "ifnot: `endif` was not found.")
|
||||
}
|
||||
|
||||
// MARK: Rendering
|
||||
@@ -180,25 +174,23 @@ class NowNodeTests: NodeTests {
|
||||
func testParseDefaultNow() {
|
||||
let tokens = [ Token.Block(value: "now") ]
|
||||
let parser = TokenParser(tokens: tokens)
|
||||
let (nodes, error) = parser.parse()
|
||||
|
||||
let node = nodes!.first! as NowNode
|
||||
|
||||
XCTAssertTrue(error == nil)
|
||||
XCTAssertEqual(nodes!.count, 1)
|
||||
XCTAssertEqual(node.format.variable, "\"yyyy-MM-dd 'at' HH:mm\"")
|
||||
assertSuccess(parser.parse()) { nodes in
|
||||
let node = nodes.first! as NowNode
|
||||
XCTAssertEqual(nodes.count, 1)
|
||||
XCTAssertEqual(node.format.variable, "\"yyyy-MM-dd 'at' HH:mm\"")
|
||||
}
|
||||
}
|
||||
|
||||
func testParseNowWithFormat() {
|
||||
let tokens = [ Token.Block(value: "now \"HH:mm\"") ]
|
||||
let parser = TokenParser(tokens: tokens)
|
||||
let (nodes, error) = parser.parse()
|
||||
|
||||
let node = nodes!.first! as NowNode
|
||||
|
||||
XCTAssertTrue(error == nil)
|
||||
XCTAssertEqual(nodes!.count, 1)
|
||||
XCTAssertEqual(node.format.variable, "\"HH:mm\"")
|
||||
assertSuccess(parser.parse()) { nodes in
|
||||
let node = nodes.first! as NowNode
|
||||
XCTAssertEqual(nodes.count, 1)
|
||||
XCTAssertEqual(node.format.variable, "\"HH:mm\"")
|
||||
}
|
||||
}
|
||||
|
||||
// MARK: Rendering
|
||||
|
||||
@@ -8,12 +8,11 @@ class TokenParserTests: XCTestCase {
|
||||
Token.Text(value: "Hello World")
|
||||
])
|
||||
|
||||
let (nodes, error) = parser.parse()
|
||||
let node = nodes!.first as TextNode!
|
||||
|
||||
XCTAssertTrue(error == nil)
|
||||
XCTAssertEqual(nodes!.count, 1)
|
||||
XCTAssertEqual(node.text, "Hello World")
|
||||
assertSuccess(parser.parse()) { nodes in
|
||||
let node = nodes.first as TextNode!
|
||||
XCTAssertEqual(nodes.count, 1)
|
||||
XCTAssertEqual(node.text, "Hello World")
|
||||
}
|
||||
}
|
||||
|
||||
func testParsingVariableToken() {
|
||||
@@ -21,13 +20,11 @@ class TokenParserTests: XCTestCase {
|
||||
Token.Variable(value: "name")
|
||||
])
|
||||
|
||||
let (nodes, error) = parser.parse()
|
||||
let node = nodes!.first as VariableNode!
|
||||
let variable = node.variable
|
||||
|
||||
XCTAssertTrue(error == nil)
|
||||
XCTAssertEqual(nodes!.count, 1)
|
||||
XCTAssertEqual(variable, Variable("name"))
|
||||
assertSuccess(parser.parse()) { nodes in
|
||||
let node = nodes.first as VariableNode!
|
||||
XCTAssertEqual(nodes.count, 1)
|
||||
XCTAssertEqual(node.variable, Variable("name"))
|
||||
}
|
||||
}
|
||||
|
||||
func testParsingCommentToken() {
|
||||
@@ -35,9 +32,9 @@ class TokenParserTests: XCTestCase {
|
||||
Token.Comment(value: "Secret stuff!")
|
||||
])
|
||||
|
||||
let (nodes, error) = parser.parse()
|
||||
|
||||
XCTAssertEqual(nodes!.count, 0)
|
||||
assertSuccess(parser.parse()) { nodes in
|
||||
XCTAssertEqual(nodes.count, 0)
|
||||
}
|
||||
}
|
||||
|
||||
func testParsingTagToken() {
|
||||
@@ -45,9 +42,8 @@ class TokenParserTests: XCTestCase {
|
||||
Token.Block(value: "now"),
|
||||
])
|
||||
|
||||
let (nodes, error) = parser.parse()
|
||||
let node = nodes!.first as NowNode!
|
||||
XCTAssertTrue(error == nil)
|
||||
XCTAssertEqual(nodes!.count, 1)
|
||||
assertSuccess(parser.parse()) { nodes in
|
||||
XCTAssertEqual(nodes.count, 1)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,6 +2,24 @@ import Cocoa
|
||||
import XCTest
|
||||
import Stencil
|
||||
|
||||
func assertSuccess(result:TokenParser.Results, block:(([Node]) -> ())) {
|
||||
switch result {
|
||||
case .Success(let nodes):
|
||||
block(nodes)
|
||||
case .Error(let error):
|
||||
XCTAssert(false, "Unexpected error")
|
||||
}
|
||||
}
|
||||
|
||||
func assertFailure(result:TokenParser.Results, description:String) {
|
||||
switch result {
|
||||
case .Success(let nodes):
|
||||
XCTAssert(false, "Unexpected error")
|
||||
case .Error(let error):
|
||||
XCTAssertEqual("\(error)", description)
|
||||
}
|
||||
}
|
||||
|
||||
class StencilTests: XCTestCase {
|
||||
func testReadmeExample() {
|
||||
let templateString = "There are {{ articles.count }} articles.\n" +
|
||||
|
||||
Reference in New Issue
Block a user