mirror of
https://github.com/nicklockwood/SwiftFormat.git
synced 2026-05-17 10:30:35 +00:00
49 lines
2.2 KiB
Swift
Executable File
49 lines
2.2 KiB
Swift
Executable File
// Copyright © 2017 Schibsted. All rights reserved.
|
|
|
|
import XCTest
|
|
@testable import Layout
|
|
|
|
final class StringConstantTests: XCTestCase {
|
|
func testSimpleStringConstant() {
|
|
let node = LayoutNode(constants: ["strings.hello": "Hello World"])
|
|
let expression = LayoutExpression(expression: "{strings.hello}", type: .string, for: node)
|
|
XCTAssertEqual(try expression?.evaluate() as? String, "Hello World")
|
|
}
|
|
|
|
func testParameterizedStringConstant() {
|
|
let node = LayoutNode(constants: ["strings.hello": "Hello %s"])
|
|
let expression = LayoutExpression(expression: "{strings.hello('World')}", type: .string, for: node)
|
|
XCTAssertEqual(try expression?.evaluate() as? String, "Hello World")
|
|
}
|
|
|
|
func testParameterizedStringConstanWithNoArguments() {
|
|
let node = LayoutNode(constants: ["strings.hello": "Hello %% World"])
|
|
let expression = LayoutExpression(expression: "{strings.hello()}", type: .string, for: node)
|
|
XCTAssertEqual(try expression?.evaluate() as? String, "Hello % World")
|
|
}
|
|
|
|
func testInvalidParameterizedStringConstantReference() {
|
|
let node = LayoutNode(constants: ["strings.hello": "Hello %s"])
|
|
let expression = LayoutExpression(expression: "{strings.hello('World', 'Universe')}", type: .string, for: node)
|
|
XCTAssertThrowsError(try expression?.evaluate()) { error in
|
|
XCTAssert("\(error)".contains("Too many arguments"))
|
|
}
|
|
}
|
|
|
|
func testInvalidParameterizedStringConstantReference2() {
|
|
let node = LayoutNode(constants: ["strings.hello": "Hello %s"])
|
|
let expression = LayoutExpression(expression: "{strings.hello()}", type: .string, for: node)
|
|
XCTAssertThrowsError(try expression?.evaluate()) { error in
|
|
XCTAssert("\(error)".contains("Too few arguments"))
|
|
}
|
|
}
|
|
|
|
func testInvalidParameterizedStringConstantReference3() {
|
|
let node = LayoutNode(constants: ["strings.hello": "Hello %i"])
|
|
let expression = LayoutExpression(expression: "{strings.hello('World')}", type: .string, for: node)
|
|
XCTAssertThrowsError(try expression?.evaluate()) { error in
|
|
XCTAssert("\(error)".contains("Type mismatch"))
|
|
}
|
|
}
|
|
}
|