Custom renderable fixups (#13)
* Mark HBMustacheCustomRenderable public * Add HBMustacheCustomRenderable tests * swift format
This commit is contained in:
@@ -14,7 +14,7 @@
|
||||
|
||||
import Foundation
|
||||
|
||||
protocol HBMustacheCustomRenderable {
|
||||
public protocol HBMustacheCustomRenderable {
|
||||
var renderText: String { get }
|
||||
var isNull: Bool { get }
|
||||
}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
||||
@testable import HummingbirdMustache
|
||||
import HummingbirdMustache
|
||||
import XCTest
|
||||
|
||||
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 {
|
||||
let template = try HBMustacheTemplate(string: """
|
||||
{{#repo}}
|
||||
|
||||
Reference in New Issue
Block a user