Files
swiftpm-mustache/Tests/HummingbirdMustacheTests/TemplateRendererTests.swift
2021-03-11 16:58:49 +00:00

83 lines
2.9 KiB
Swift

import XCTest
@testable import HummingbirdMustache
final class TemplateRendererTests: XCTestCase {
func testText() throws {
let template = try HBTemplate("test text")
XCTAssertEqual(template.render("test"), "test text")
}
func testStringVariable() throws {
let template = try HBTemplate("test {{.}}")
XCTAssertEqual(template.render("text"), "test text")
}
func testIntegerVariable() throws {
let template = try HBTemplate("test {{.}}")
XCTAssertEqual(template.render(101), "test 101")
}
func testDictionary() throws {
let template = try HBTemplate("test {{value}} {{bool}}")
XCTAssertEqual(template.render(["value": "test2", "bool": true]), "test test2 true")
}
func testArraySection() throws {
let template = try HBTemplate("test {{#value}}*{{.}}{{/value}}")
XCTAssertEqual(template.render(["value": ["test2", "bool"]]), "test *test2*bool")
XCTAssertEqual(template.render(["value": []]), "test ")
}
func testBooleanSection() throws {
let template = try HBTemplate("test {{#.}}Yep{{/.}}")
XCTAssertEqual(template.render(true), "test Yep")
XCTAssertEqual(template.render(false), "test ")
}
func testIntegerSection() throws {
let template = try HBTemplate("test {{#.}}{{.}}{{/.}}")
XCTAssertEqual(template.render(23), "test 23")
XCTAssertEqual(template.render(0), "test ")
}
func testStringSection() throws {
let template = try HBTemplate("test {{#.}}{{.}}{{/.}}")
XCTAssertEqual(template.render("Hello"), "test Hello")
}
func testInvertedSection() throws {
let template = try HBTemplate("test {{^.}}Inverted{{/.}}")
XCTAssertEqual(template.render(true), "test ")
XCTAssertEqual(template.render(false), "test Inverted")
}
func testMirror() throws {
struct Test {
let string: String
}
let template = try HBTemplate("test {{string}}")
XCTAssertEqual(template.render(Test(string: "string")), "test string")
}
func testOptionalMirror() throws {
struct Test {
let string: String?
}
let template = try HBTemplate("test {{string}}")
XCTAssertEqual(template.render(Test(string: "string")), "test string")
XCTAssertEqual(template.render(Test(string: nil)), "test ")
}
func testOptionalSequence() throws {
struct Test {
let string: String?
}
let template = try HBTemplate("test {{#string}}*{{.}}{{/string}}")
XCTAssertEqual(template.render(Test(string: "string")), "test *string")
XCTAssertEqual(template.render(Test(string: nil)), "test ")
let template2 = try HBTemplate("test {{^string}}*{{/string}}")
XCTAssertEqual(template2.render(Test(string: "string")), "test ")
XCTAssertEqual(template2.render(Test(string: nil)), "test *")
}
}