Custom renderable fixups (#13)

* Mark HBMustacheCustomRenderable public

* Add HBMustacheCustomRenderable tests

* swift format
This commit is contained in:
Adam Fowler
2021-05-03 16:55:10 +01:00
committed by GitHub
parent a2569dd667
commit c65a7956c8
2 changed files with 22 additions and 2 deletions

View File

@@ -14,7 +14,7 @@
import Foundation import Foundation
protocol HBMustacheCustomRenderable { public protocol HBMustacheCustomRenderable {
var renderText: String { get } var renderText: String { get }
var isNull: Bool { get } var isNull: Bool { get }
} }

View File

@@ -12,7 +12,7 @@
// //
//===----------------------------------------------------------------------===// //===----------------------------------------------------------------------===//
@testable import HummingbirdMustache import HummingbirdMustache
import XCTest import XCTest
final class TemplateRendererTests: XCTestCase { final class TemplateRendererTests: XCTestCase {
@@ -245,6 +245,26 @@ final class TemplateRendererTests: XCTestCase {
""") """)
} }
/// test HBMustacheCustomRenderable
func testCustomRenderable() throws {
let template = try HBMustacheTemplate(string: "{{.}}")
let template1 = try HBMustacheTemplate(string: "{{#.}}not null{{/.}}")
let template2 = try HBMustacheTemplate(string: "{{^.}}null{{/.}}")
struct Object: HBMustacheCustomRenderable {
let value: String
var renderText: String { self.value.uppercased() }
var isNull: Bool { self.value == "null" }
}
let testObject = Object(value: "test")
let nullObject = Object(value: "null")
XCTAssertEqual(template.render(testObject), "TEST")
XCTAssertEqual(template1.render(testObject), "not null")
XCTAssertEqual(template1.render(nullObject), "")
XCTAssertEqual(template2.render(testObject), "")
XCTAssertEqual(template2.render(nullObject), "null")
}
func testPerformance() throws { func testPerformance() throws {
let template = try HBMustacheTemplate(string: """ let template = try HBMustacheTemplate(string: """
{{#repo}} {{#repo}}