mirror of
https://github.com/zhigang1992/GitHawk.git
synced 2026-01-12 22:47:34 +08:00
173 lines
7.0 KiB
Swift
173 lines
7.0 KiB
Swift
//
|
|
// SplitViewTests.swift
|
|
// Freetime
|
|
//
|
|
// Created by Ryan Nystrom on 9/10/17.
|
|
// Copyright © 2017 Ryan Nystrom. All rights reserved.
|
|
//
|
|
|
|
import XCTest
|
|
@testable import Freetime
|
|
|
|
class RootViewController: UIViewController, PrimaryViewController {}
|
|
|
|
class SplitViewTests: XCTestCase {
|
|
|
|
func test_whenSeparating_withPrimaryAndOtherVCs_thatSplitVCIsSeparated_andResultHasNonPrimary() {
|
|
let masterTab = UITabBarController()
|
|
|
|
let leftNav = UINavigationController()
|
|
let left = UIViewController()
|
|
leftNav.pushViewController(left, animated: false)
|
|
|
|
let rightNav = UINavigationController()
|
|
let right1 = RootViewController()
|
|
let right2 = RootViewController()
|
|
let right3 = UIViewController()
|
|
let right4 = UIViewController()
|
|
right2.hidesBottomBarWhenPushed = true
|
|
rightNav.pushViewController(right1, animated: false)
|
|
rightNav.pushViewController(right2, animated: false)
|
|
rightNav.pushViewController(right3, animated: false)
|
|
rightNav.pushViewController(right4, animated: false)
|
|
masterTab.viewControllers = [leftNav, rightNav]
|
|
masterTab.selectedIndex = 1
|
|
|
|
let split = UISplitViewController()
|
|
split.viewControllers = [masterTab]
|
|
|
|
let delegate = SplitViewControllerDelegate()
|
|
|
|
let result = delegate.splitViewController(split, separateSecondaryFrom: masterTab)
|
|
|
|
let resultTab = (split.viewControllers[0] as! UITabBarController)
|
|
let resultLeft = resultTab.viewControllers![0] as! UINavigationController
|
|
let resultRight = resultTab.viewControllers![1] as! UINavigationController
|
|
XCTAssertEqual(resultTab, masterTab)
|
|
XCTAssertEqual(resultLeft, leftNav)
|
|
XCTAssertEqual(resultRight, rightNav)
|
|
XCTAssertEqual(resultTab.selectedViewController, rightNav)
|
|
XCTAssertEqual(resultRight.viewControllers.count, 2)
|
|
XCTAssertEqual(resultRight.viewControllers[0], right1)
|
|
XCTAssertEqual(resultRight.viewControllers[1], right2)
|
|
|
|
let resultDetailVCs = (result as! UINavigationController).viewControllers
|
|
XCTAssertEqual(resultDetailVCs.count, 2)
|
|
XCTAssertEqual(resultDetailVCs[0], right3)
|
|
XCTAssertEqual(resultDetailVCs[1], right4)
|
|
}
|
|
|
|
func test_whenSeparating_withSinglePrimary_thatSplitVCIsSeparated_andResultHasPlaceholder() {
|
|
let masterTab = UITabBarController()
|
|
|
|
let leftNav = UINavigationController()
|
|
let left = UIViewController()
|
|
leftNav.pushViewController(left, animated: false)
|
|
|
|
let rightNav = UINavigationController()
|
|
let right1 = RootViewController()
|
|
rightNav.pushViewController(right1, animated: false)
|
|
masterTab.viewControllers = [leftNav, rightNav]
|
|
masterTab.selectedIndex = 1
|
|
|
|
let split = UISplitViewController()
|
|
split.viewControllers = [masterTab]
|
|
|
|
let delegate = SplitViewControllerDelegate()
|
|
|
|
let result = delegate.splitViewController(split, separateSecondaryFrom: masterTab)
|
|
|
|
let resultTab = (split.viewControllers[0] as! UITabBarController)
|
|
let resultLeft = resultTab.viewControllers![0] as! UINavigationController
|
|
let resultRight = resultTab.viewControllers![1] as! UINavigationController
|
|
XCTAssertEqual(resultTab, masterTab)
|
|
XCTAssertEqual(resultLeft, leftNav)
|
|
XCTAssertEqual(resultRight, rightNav)
|
|
XCTAssertEqual(resultTab.selectedViewController, rightNav)
|
|
XCTAssertEqual(resultRight.viewControllers.count, 1)
|
|
XCTAssertEqual(resultRight.viewControllers[0], right1)
|
|
|
|
let resultDetailVCs = (result as! UINavigationController).viewControllers
|
|
XCTAssertEqual(resultDetailVCs.count, 1)
|
|
XCTAssert(resultDetailVCs[0] is SplitPlaceholderViewController)
|
|
}
|
|
|
|
func test_whenCollapsing_withVCsStackedOnMasterAndDetail_thatVCsStackedOnSelectedNav() {
|
|
let masterTab = UITabBarController()
|
|
|
|
let leftNav = UINavigationController()
|
|
let left = UIViewController()
|
|
leftNav.pushViewController(left, animated: false)
|
|
|
|
let rightNav = UINavigationController()
|
|
let right1 = RootViewController()
|
|
let right2 = RootViewController()
|
|
rightNav.pushViewController(right1, animated: false)
|
|
rightNav.pushViewController(right2, animated: false)
|
|
masterTab.viewControllers = [leftNav, rightNav]
|
|
masterTab.selectedIndex = 1
|
|
|
|
let detailNav = UINavigationController()
|
|
let detail1 = UIViewController()
|
|
let detail2 = UIViewController()
|
|
detailNav.pushViewController(detail1, animated: false)
|
|
detailNav.pushViewController(detail2, animated: false)
|
|
|
|
let split = UISplitViewController()
|
|
split.viewControllers = [masterTab, detailNav]
|
|
|
|
let delegate = SplitViewControllerDelegate()
|
|
|
|
_ = delegate.splitViewController(split, collapseSecondary: detailNav, onto: masterTab)
|
|
|
|
let resultTab = split.viewControllers[0] as! UITabBarController
|
|
XCTAssertEqual(resultTab.viewControllers?.count, 2)
|
|
XCTAssertEqual(resultTab.selectedViewController, rightNav)
|
|
XCTAssertEqual(rightNav.viewControllers.count, 4)
|
|
XCTAssertEqual(rightNav.viewControllers[0], right1)
|
|
XCTAssertEqual(rightNav.viewControllers[1], right2)
|
|
XCTAssertEqual(rightNav.viewControllers[2], detail1)
|
|
XCTAssertEqual(rightNav.viewControllers[3], detail2)
|
|
|
|
XCTAssertFalse(rightNav.viewControllers[0].hidesBottomBarWhenPushed)
|
|
XCTAssertFalse(rightNav.viewControllers[1].hidesBottomBarWhenPushed)
|
|
XCTAssertTrue(rightNav.viewControllers[2].hidesBottomBarWhenPushed)
|
|
XCTAssertTrue(rightNav.viewControllers[3].hidesBottomBarWhenPushed)
|
|
}
|
|
|
|
func test_whenCollapsing_withPlaceholderStackedOnDetail_thatVCsStackedWithoutPlaceholder() {
|
|
let masterTab = UITabBarController()
|
|
|
|
let leftNav = UINavigationController()
|
|
let left = UIViewController()
|
|
leftNav.pushViewController(left, animated: false)
|
|
|
|
let rightNav = UINavigationController()
|
|
let right1 = RootViewController()
|
|
let right2 = RootViewController()
|
|
rightNav.pushViewController(right1, animated: false)
|
|
rightNav.pushViewController(right2, animated: false)
|
|
masterTab.viewControllers = [leftNav, rightNav]
|
|
masterTab.selectedIndex = 1
|
|
|
|
let detailNav = UINavigationController()
|
|
let detail1 = SplitPlaceholderViewController()
|
|
detailNav.pushViewController(detail1, animated: false)
|
|
|
|
let split = UISplitViewController()
|
|
split.viewControllers = [masterTab, detailNav]
|
|
|
|
let delegate = SplitViewControllerDelegate()
|
|
|
|
_ = delegate.splitViewController(split, collapseSecondary: detailNav, onto: masterTab)
|
|
|
|
let resultTab = split.viewControllers[0] as! UITabBarController
|
|
XCTAssertEqual(resultTab.viewControllers?.count, 2)
|
|
XCTAssertEqual(resultTab.selectedViewController, rightNav)
|
|
XCTAssertEqual(rightNav.viewControllers.count, 2)
|
|
XCTAssertEqual(rightNav.viewControllers[0], right1)
|
|
XCTAssertEqual(rightNav.viewControllers[1], right2)
|
|
}
|
|
|
|
}
|