mirror of
https://github.com/nicklockwood/SwiftFormat.git
synced 2026-05-17 10:30:35 +00:00
62 lines
2.2 KiB
Swift
Executable File
62 lines
2.2 KiB
Swift
Executable File
// Copyright © 2017 Schibsted. All rights reserved.
|
|
|
|
import XCTest
|
|
@testable import Layout
|
|
|
|
private func url(forXml name: String) throws -> URL {
|
|
guard let url = Bundle(for: LayoutViewControllerTests.self)
|
|
.url(forResource: name, withExtension: "xml")
|
|
else {
|
|
throw NSError(domain: "Could not locate: \(name).xml", code: 0)
|
|
}
|
|
return url
|
|
}
|
|
|
|
final class LayoutViewControllerTests: XCTestCase {
|
|
/// Test class which overrides layoutDidLoad(_:)
|
|
private final class TestLayoutViewController: UIViewController, LayoutLoading {
|
|
var layoutDidLoadLayoutNode: LayoutNode?
|
|
var layoutDidLoadLayoutNodeCallCount = 0
|
|
|
|
func layoutDidLoad(_ layoutNode: LayoutNode) {
|
|
layoutDidLoadLayoutNodeCallCount += 1
|
|
layoutDidLoadLayoutNode = layoutNode
|
|
}
|
|
}
|
|
|
|
func testLayoutDidLoadWithValidXML() throws {
|
|
let viewController = TestLayoutViewController()
|
|
try viewController.loadLayout(withContentsOfURL: url(forXml: "LayoutDidLoad_Valid"))
|
|
|
|
XCTAssertNotNil(viewController.layoutDidLoadLayoutNode)
|
|
XCTAssertEqual(viewController.layoutNode, viewController.layoutDidLoadLayoutNode)
|
|
XCTAssertEqual(viewController.layoutDidLoadLayoutNodeCallCount, 1)
|
|
}
|
|
|
|
func testLayoutDidLoadWithInvalidXML() throws {
|
|
let viewController = TestLayoutViewController()
|
|
try viewController.loadLayout(withContentsOfURL: url(forXml: "LayoutDidLoad_Invalid"))
|
|
|
|
XCTAssertNil(viewController.layoutDidLoadLayoutNode)
|
|
XCTAssertEqual(viewController.layoutDidLoadLayoutNodeCallCount, 0)
|
|
}
|
|
|
|
func testLoadedLayoutDoesNotRetainItself() throws {
|
|
weak var controller: TestLayoutViewController?
|
|
weak var view: UIView?
|
|
weak var node: LayoutNode?
|
|
try autoreleasepool {
|
|
let vc = TestLayoutViewController()
|
|
try vc.loadLayout(withContentsOfURL: url(forXml: "LayoutDidLoad_Valid"))
|
|
node = vc.layoutNode
|
|
XCTAssertNotNil(node)
|
|
view = node?.view
|
|
XCTAssertNotNil(view)
|
|
controller = vc
|
|
}
|
|
XCTAssertNil(controller)
|
|
XCTAssertNil(view)
|
|
XCTAssertNil(node)
|
|
}
|
|
}
|