mirror of
https://github.com/nicklockwood/SwiftFormat.git
synced 2026-06-16 10:34:34 +00:00
99 lines
3.0 KiB
Swift
Executable File
99 lines
3.0 KiB
Swift
Executable File
// Copyright © 2017 Schibsted. All rights reserved.
|
|
|
|
import XCTest
|
|
@testable import Layout
|
|
|
|
private final class TestView: UIView {
|
|
@objc var nestedTestView = TestView()
|
|
|
|
@objc override class var expressionTypes: [String: RuntimeType] {
|
|
var types = super.expressionTypes
|
|
types["backgroundColor"] = .unavailable("For reasons")
|
|
return types
|
|
}
|
|
}
|
|
|
|
private final class TestObject: NSObject {
|
|
@objc var testView = TestView()
|
|
@objc var testPoint = CGPoint(x: 1, y: 2)
|
|
@objc var testRect = CGRect(x: 1, y: 2, width: 3, height: 4)
|
|
}
|
|
|
|
final class PropertiesTests: XCTestCase {
|
|
// MARK: Property types
|
|
|
|
func testPropertyType() {
|
|
let result = TestObject.allPropertyTypes()["testView"]
|
|
let expected = RuntimeType(TestView.self)
|
|
let control = RuntimeType(NSObject.self)
|
|
XCTAssertEqual(result, expected)
|
|
XCTAssertNotEqual(result, control)
|
|
}
|
|
|
|
func testNestedPropertyType() {
|
|
let result = TestObject.allPropertyTypes()["testView.backgroundColor"]
|
|
XCTAssertNil(result) // Not supoported yet
|
|
}
|
|
|
|
func testCGPointPropertyType() throws {
|
|
let result = try XCTUnwrap(TestObject.allPropertyTypes()["testPoint"])
|
|
let expected = RuntimeType(CGPoint.self)
|
|
let control = RuntimeType(NSValue.self)
|
|
XCTAssertEqual(result, expected)
|
|
XCTAssertNotEqual(result, control)
|
|
}
|
|
|
|
func testCGPointNestedPropertyType() {
|
|
let result = TestObject.allPropertyTypes()["testPoint.x"]
|
|
let expected = RuntimeType(CGFloat.self)
|
|
XCTAssertEqual(result, expected)
|
|
}
|
|
|
|
func testCGRectNestedPropertyType() {
|
|
let result = TestObject.allPropertyTypes()["testRect.size.width"]
|
|
let expected = RuntimeType(CGFloat.self)
|
|
XCTAssertEqual(result, expected)
|
|
}
|
|
|
|
// MARK: View property types
|
|
|
|
func testViewPropertyType() {
|
|
let result = TestView.expressionTypes["backgroundColor"]
|
|
let expected = RuntimeType.unavailable("For reasons")
|
|
XCTAssertEqual(result, expected)
|
|
}
|
|
|
|
func testViewNestedPropertyType() {
|
|
let result = TestView.expressionTypes["nestedTestView.backgroundColor"]
|
|
XCTAssertNil(result) // Not supoported yet
|
|
}
|
|
|
|
func testViewDoubleNestedPropertyType() {
|
|
let result = TestView.expressionTypes["layer.contentsCenter.x"]
|
|
let expected = RuntimeType(CGFloat.self)
|
|
XCTAssertEqual(result, expected)
|
|
}
|
|
|
|
// MARK: Unavailable properties
|
|
|
|
func testNonexistentPropertyType() {
|
|
let result = TestObject.allPropertyTypes()["foo"]
|
|
XCTAssertNil(result)
|
|
}
|
|
|
|
func testNestedNonexistentPropertyType() {
|
|
let result = TestObject.allPropertyTypes()["testPoint.foo"]
|
|
XCTAssertNil(result)
|
|
}
|
|
|
|
func testUnavailablePropertyType() {
|
|
let result = TestView.expressionTypes["frame"]
|
|
XCTAssertEqual(result?.isAvailable, false)
|
|
}
|
|
|
|
func testNestedUnavailablePropertyType() {
|
|
let result = TestView.expressionTypes["frame.origin.x"]
|
|
XCTAssertEqual(result?.isAvailable, false)
|
|
}
|
|
}
|