63 lines
1.7 KiB
Swift
63 lines
1.7 KiB
Swift
import Foundation
|
|
import XCTest
|
|
import Stencil
|
|
|
|
@objc class Object : NSObject {
|
|
let title = "Hello World"
|
|
}
|
|
|
|
class VariableTests: XCTestCase {
|
|
var context:Context!
|
|
|
|
override func setUp() {
|
|
context = Context(dictionary: [
|
|
"name": "Kyle",
|
|
"contacts": [ "Katie", "Orta", ],
|
|
"profiles": [ "github": "kylef", ],
|
|
"object": Object(),
|
|
])
|
|
}
|
|
|
|
func testResolvingStringLiteral() {
|
|
let variable = Variable("\"name\"")
|
|
let result = variable.resolve(context) as! String
|
|
XCTAssertEqual(result, "name")
|
|
}
|
|
|
|
func testResolvingVariable() {
|
|
let variable = Variable("name")
|
|
let result = variable.resolve(context) as! String
|
|
XCTAssertEqual(result, "Kyle")
|
|
}
|
|
|
|
func testResolvingItemFromDictionary() {
|
|
let variable = Variable("profiles.github")
|
|
let result = variable.resolve(context) as! String
|
|
XCTAssertEqual(result, "kylef")
|
|
}
|
|
|
|
func testResolvingItemFromArrayWithIndex() {
|
|
let variable = Variable("contacts.0")
|
|
let result = variable.resolve(context) as! String
|
|
XCTAssertEqual(result, "Katie")
|
|
}
|
|
|
|
func testResolvingFirstItemFromArray() {
|
|
let variable = Variable("contacts.first")
|
|
let result = variable.resolve(context) as! String
|
|
XCTAssertEqual(result, "Katie")
|
|
}
|
|
|
|
func testResolvingLastItemFromArray() {
|
|
let variable = Variable("contacts.last")
|
|
let result = variable.resolve(context) as! String
|
|
XCTAssertEqual(result, "Orta")
|
|
}
|
|
|
|
func testResolvingValueViaKVO() {
|
|
let variable = Variable("object.title")
|
|
let result = variable.resolve(context) as! String
|
|
XCTAssertEqual(result, "Hello World")
|
|
}
|
|
}
|