1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
//===----------------------------------------------------------------------===//
//
// This source file is part of the Swift.org open source project
//
// Copyright (c) 2014 - 2018 Apple Inc. and the Swift project authors
// Licensed under Apache License v2.0 with Runtime Library Exception
//
// See http://swift.org/LICENSE.txt for license information
// See http://swift.org/CONTRIBUTORS.txt for the list of Swift project authors
//
//===----------------------------------------------------------------------===//
import XCTest
import XCPlayground
#if os(macOS)
import AppKit
fileprivate typealias ViewType = NSView
fileprivate typealias ViewControllerType = NSViewController
#elseif os(iOS) || os(tvOS)
import UIKit
fileprivate typealias ViewType = UIView
fileprivate typealias ViewControllerType = UIViewController
#endif
// This is intentionally redefined here in the tests, as this string cannot change as it has clients which refer to it by the string value rather than by symbol.
let playgroundPageLiveViewDidChangeNotification = Notification.Name(rawValue: "XCPlaygroundPageLiveViewDidChangeNotification")
class LiveViewTests: XCTestCase {
override func setUp() {
super.setUp()
// Put setup code here. This method is called before the invocation of each test method in the class.
}
override func tearDown() {
XCPlaygroundPage.currentPage.liveView = nil
super.tearDown()
}
func testLiveViewWithView() {
let view = ViewType()
// Test setting to a view
expectation(forNotification: playgroundPageLiveViewDidChangeNotification, object: XCPlaygroundPage.currentPage) { (notification) in
guard let userInfoView = notification.userInfo?["XCPlaygroundPageLiveView"] as? ViewType else { return false }
guard notification.userInfo?["XCPlaygroundPageLiveViewController"] == nil else { return false }
XCTAssertEqual(userInfoView, view)
return true
}
XCPlaygroundPage.currentPage.liveView = view
waitForExpectations(timeout: 0.1, handler: nil)
// Test setting back to nil
expectation(forNotification: playgroundPageLiveViewDidChangeNotification, object: XCPlaygroundPage.currentPage) { (notification) in
guard notification.userInfo?["XCPlaygroundPageLiveView"] == nil else { return false }
guard notification.userInfo?["XCPlaygroundPageLiveViewController"] == nil else { return false }
return true
}
XCPlaygroundPage.currentPage.liveView = nil
waitForExpectations(timeout: 0.1, handler: nil)
}
func testLiveViewWithViewController() {
let viewController = ViewControllerType()
// Test setting to a view controller
expectation(forNotification: playgroundPageLiveViewDidChangeNotification, object: XCPlaygroundPage.currentPage) { (notification) in
guard let userInfoViewController = notification.userInfo?["XCPlaygroundPageLiveViewController"] as? ViewControllerType else { return false }
guard notification.userInfo?["XCPlaygroundPageLiveView"] == nil else { return false }
XCTAssertEqual(userInfoViewController, viewController)
return true
}
XCPlaygroundPage.currentPage.liveView = viewController
waitForExpectations(timeout: 0.1, handler: nil)
// Test setting back to nil
expectation(forNotification: playgroundPageLiveViewDidChangeNotification, object: XCPlaygroundPage.currentPage) { (notification) in
guard notification.userInfo?["XCPlaygroundPageLiveView"] == nil else { return false }
guard notification.userInfo?["XCPlaygroundPageLiveViewController"] == nil else { return false }
return true
}
XCPlaygroundPage.currentPage.liveView = nil
waitForExpectations(timeout: 0.1, handler: nil)
}
// MARK: Deprecated Functions
func testXCPShowView() {
let view = ViewType()
expectation(forNotification: playgroundPageLiveViewDidChangeNotification, object: XCPlaygroundPage.currentPage) { (notification) in
guard let userInfoView = notification.userInfo?["XCPlaygroundPageLiveView"] as? ViewType else { return false }
XCTAssertEqual(userInfoView, view)
return true
}
XCPShowView(identifier: "", view: view)
waitForExpectations(timeout: 0.1, handler: nil)
}
}
|