//===----------------------------------------------------------------------===// // // This source file is part of the SwiftLibs open source project // // Copyright (c) 2023 Röck+Cöde VoF. and the SwiftLibs project authors // Licensed under the EUPL 1.2 or later. // // See LICENSE.txt for license information // See CONTRIBUTORS.txt for the list of SwiftLibs project authors // //===----------------------------------------------------------------------===// #if canImport(UIKit) && !os(watchOS) import SwiftLibsCoordination import UIKit // MARK: - Test coordinators class SomeCoordinator: Coordinator { // MARK: Properties var children: [Coordinator] = [] var router: Router // MARK: Initialisers init(router: Router) { self.router = router } // MARK: Functions func present(animated: Bool, onDismiss: (() -> Void)?) { router.present( SomeViewController(), animated: animated, onDismiss: onDismiss ) } } class SomeOtherCoordinator: Coordinator { // MARK: Properties var children: [Coordinator] = [] var router: Router // MARK: Initialisers init(router: Router) { self.router = router } // MARK: Functions func present(animated: Bool, onDismiss: (() -> Void)?) { router.present( SomeOtherViewController(), animated: animated, onDismiss: onDismiss ) } } // MARK: - SpyRouter class SpyRouter: Router { // MARK: Enumerations enum State { case initialised case presented case dismissed } // MARK: Properties var state: State = .initialised var viewController: UIViewController? var animated: Bool? var onDismiss: OnDismissedClosure? // MARK: Functions func present( _ viewController: UIViewController, animated: Bool, onDismiss: OnDismissedClosure? ) { self.viewController = viewController self.animated = animated self.onDismiss = onDismiss self.state = .presented } func dismiss(animated: Bool) { self.animated = animated self.state = .dismissed } } // MARK: - Test view controllers class SomeViewController: UIViewController {} class SomeOtherViewController: UIViewController {} #endif