How to use SecondLevelType class

Best Mockingbird code snippet using SecondLevelType

PellicolaPresenter.swift

Source:PellicolaPresenter.swift Github

copy

Full Screen

1//2//  PellicolaPresenter.swift3//  Pellicola4//5//  Created by francesco bigagnoli on 13/11/2017.6//7import Foundation8import Photos9public final class PellicolaPresenter: NSObject {10    private let smartAlbumsType = AlbumType(type: .smartAlbum, subtypes: [.smartAlbumUserLibrary,11                                                                          .smartAlbumFavorites,12                                                                          .smartAlbumSelfPortraits,13                                                                          .smartAlbumScreenshots])14    15    private let otherAlbumsType = AlbumType(type: .album, subtypes: [.albumRegular,16                                                                     .albumMyPhotoStream,17                                                                     .albumCloudShared,18                                                                     .albumSyncedEvent,19                                                                     .albumSyncedAlbum])20    @objc public var didStartProcessingImages: (() -> Void)?21    @objc public var didFinishProcessingImages: (([URL]) -> Void)?22    @objc public var userDidCancel: (() -> Void)?23    @objc public var imageSize: CGSize = PHImageManagerMaximumSize24    private var minImageSizeToShow: CGSize = CGSize.zero25    26    private lazy var navigationController: PellicolaNavigationController = {27        return PellicolaNavigationController()28    }()29    30    var imagesDataStorage: ImagesDataStorage?31    var imagesDataFetcher: ImagesDataFetcher?32    33    var maxNumberOfSelections: Int? {34        return imagesDataStorage?.limit35    }36    37    var numberOfSelectedAssets: Int? {38        return imagesDataStorage?.images.count39    }40    41    let style: PellicolaStyleProtocol42    43    private lazy var centerBarButtonToolbar: UIBarButtonItem = {44        let infoBarButton = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil)45        infoBarButton.isEnabled = false46        let attributes = [ NSAttributedString.Key.foregroundColor: style.blackColor ]47        infoBarButton.setTitleTextAttributes(attributes, for: .normal)48        infoBarButton.setTitleTextAttributes(attributes, for: .disabled)49        return infoBarButton50    }()51    52    private lazy var toolBarItems: [UIBarButtonItem] = {53        return [54            UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil),55            centerBarButtonToolbar,56            UIBarButtonItem(barButtonSystemItem: .flexibleSpace, target: nil, action: nil)57        ]58    }()59    60    @objc public init(style: PellicolaStyleProtocol) {61        self.style = style62        super.init()63    }64    65    @objc(hideImagesSmallerThanSize:)66    public func hideImagesSmallerThan(size: CGSize) {67        self.minImageSizeToShow = size68    }69    70    /*71     72     Values for maxNumberOfSelections:73     74     - <=0 Unlimited75     - ==1 Single selection76     - >1  Limited selection77     */78    @objc public func present(on presentingViewController: UIViewController, maxNumberOfSelections: Int) {79        80        PHPhotoLibrary.requestAuthorization { [weak self] (status) in81            DispatchQueue.main.async {82                guard let sSelf = self else { return }83                guard case .authorized = status else {84                    let alert = sSelf.openSettingsAlert()85                    presentingViewController.present(alert, animated: true)86                    return87                }88                89                sSelf.setupPresenter(with: maxNumberOfSelections)90                guard let assetCollectionsVC = sSelf.createAssetsCollectionViewController(withType: sSelf.smartAlbumsType, secondLevelType: sSelf.otherAlbumsType, isRootLevel: true) else { return }91                sSelf.configureNavigationController(with: [assetCollectionsVC])92                presentingViewController.present(sSelf.navigationController, animated: true, completion: nil)93            }94        }95    }96        97    // MARK: - UI Configuration98    private func configureNavigationController(with viewControllers:[UIViewController]) {99        navigationController.toolbar.tintColor = style.blackColor100        navigationController.toolbar.barTintColor = style.toolbarBackgroundColor101        navigationController.statusBarStyle = style.statusBarStyle102        navigationController.modalPresentationStyle = .formSheet103        navigationController.setViewControllers(viewControllers, animated: false)104        105    }106    107    // MARK: - Helper method108    109    private func openSettingsAlert() -> UIAlertController {110        let title = style.alertAccessDeniedTitle ?? Pellicola.localizedString("alert_access_denied.title")111        let message = style.alertAccessDeniedMessage ?? Pellicola.localizedString("alert_access_denied.message")112        let alert = UIAlertController(title: title,113                                      message: message,114                                      preferredStyle: .alert)115        let okAction = UIAlertAction(title: Pellicola.localizedString("alert_access_denied.later"), style: .default, handler: { [weak self] _ in116            self?.userDidCancel?()117        })118        alert.addAction(okAction)119        120        let settingsAction = UIAlertAction(title: Pellicola.localizedString("alert_access_denied.settings"), style: .cancel, handler: { _ in121            UIApplication.shared.openURL(URL(string: UIApplication.openSettingsURLString)!)122        })123        alert.addAction(settingsAction)124        return alert125    }126    127    private func setupPresenter(with maxNumberOfSelections: Int) {128        let limit = maxNumberOfSelections <= 0 ? nil : maxNumberOfSelections129        imagesDataStorage = ImagesDataStorage(limit: limit)130        imagesDataFetcher = ImagesDataFetcher(targetSize: imageSize)131    }132    133    // MARK: - View Controller creation134    private func createAssetsCollectionViewController(withType albumType: AlbumType,135                                                      secondLevelType: AlbumType? = nil,136                                                      isRootLevel: Bool = true) -> AssetCollectionsViewController? {137        guard let imagesDataStorage = imagesDataStorage, let imagesDataFetcher = imagesDataFetcher else { return nil }138        let viewModel = AssetCollectionsViewModel(imagesDataStorage: imagesDataStorage,139                                                  imagesDataFetcher: imagesDataFetcher,140                                                  albumType: albumType,141                                                  secondLevelAlbumType: secondLevelType)142        viewModel.minAssetSize = minImageSizeToShow143        144        let leftBarButtonType: AssetCollectionsViewController.LeftBarButtonType = isRootLevel ? .dismiss : .back145        let assetCollectionsVC = AssetCollectionsViewController(viewModel: viewModel, style: style, leftBarButtonType: leftBarButtonType)146        assetCollectionsVC.didStartProcessingImages = { [weak self] in147            self?.didStartProcessingImages?()148        }149        150        assetCollectionsVC.didFinishProcessingImages = { [weak self] urls in151            self?.navigationController.dismiss(animated: true) {152                self?.didFinishProcessingImages?(urls)153            }154        }155        assetCollectionsVC.didCancel = { [weak self] in156            self?.dismiss()157        }158        assetCollectionsVC.didSelectAlbum = { [weak self] assetCollection in159            guard let sSelf = self,160                let assetsViewController = sSelf.createAssetsViewController(with: assetCollection) else { return }161            sSelf.navigationController.pushViewController(assetsViewController, animated: true)162        }163        164        assetCollectionsVC.didSelectSecondLevelEntry = { [weak self] in165            guard let sSelf = self,166                let secondLevelType = secondLevelType,167                let secondLevelVC = sSelf.createAssetsCollectionViewController(withType: secondLevelType, secondLevelType: nil, isRootLevel: false) else { return }168            sSelf.navigationController.pushViewController(secondLevelVC, animated: true)169        }170        171        assetCollectionsVC.setToolbarItems(toolBarItems, animated: false)172        return assetCollectionsVC173    }174    175    private func createAssetsViewController(with album: AlbumData) -> AssetsViewController? {176        guard let imagesDataStorage = imagesDataStorage,177            let imagesDataFetcher = imagesDataFetcher else { return nil }178        let viewModel = AssetsViewModel(imagesDataStorage: imagesDataStorage,179                                        imagesDataFetcher: imagesDataFetcher,180                                        albumData: album)181        let assetsViewController = AssetsViewController(viewModel: viewModel, style: style)182        183        assetsViewController.didStartProcessingImages = { [weak self] in184            self?.didStartProcessingImages?()185        }186        187        assetsViewController.didFinishProcessingImages = { [weak self] urls in188            self?.navigationController.dismiss(animated: true) {189                self?.didFinishProcessingImages?(urls)190            }191        }192        193        assetsViewController.didPeekOnAsset = { [weak self] asset in194            self?.createDetailAssetViewController(with: asset)195        }196        197        assetsViewController.shouldUpdateToolbar = { [weak self] in198            self?.updateToolbar()199        }200        201        assetsViewController.setToolbarItems(toolBarItems, animated: false)202        return assetsViewController203    }204    205    private func createDetailAssetViewController(with asset: PHAsset) -> DetailAssetViewController {206        let viewModel = DetailAssetViewModel(asset: asset)207        let detailViewController = DetailAssetViewController(viewModel: viewModel)208        return detailViewController209    }210    211    private func dismiss() {212        navigationController.dismiss(animated: true) { [weak self] in213            self?.userDidCancel?()214        }215    }216}217//MARK: - Toolbar218extension PellicolaPresenter {219    private func updateToolbar() {220        guard let numberOfSelectedAssets = numberOfSelectedAssets,221            maxNumberOfSelections != 0, numberOfSelectedAssets > 0 else {222            navigationController.setToolbarHidden(true, animated: true)223            return224        }225        226        var toolbarText = String(format: Pellicola.localizedString("selected_assets"),227                                 numberOfSelectedAssets)228        if let maxNumberOfSelections = maxNumberOfSelections {229            toolbarText = String(format: Pellicola.localizedString("selected_assets_with_limit"),230                                 numberOfSelectedAssets,231                                 maxNumberOfSelections)232        }233        234        centerBarButtonToolbar.title = toolbarText235        navigationController.setToolbarHidden(false, animated: true)236    }237}238private class PellicolaNavigationController: UINavigationController {239    var statusBarStyle: UIStatusBarStyle?240    override var preferredStatusBarStyle: UIStatusBarStyle { return self.statusBarStyle ?? .default }241}...

Full Screen

Full Screen

ClassScopedTypes.swift

Source:ClassScopedTypes.swift Github

copy

Full Screen

...5//  Created by Andrew Chang on 9/15/19.6//7import Foundation8open class TopLevelType {9  open class SecondLevelType {10    open class ThirdLevelInheritingTopLevelType: TopLevelType {11      func thirdLevelInheritingMethod() -> TopLevelType { return TopLevelType() }12    }13    open class ThirdLevelInheritingThirdLevelType: ThirdLevelType {14      func thirdLevelInheritingMethod() -> ThirdLevelType { return ThirdLevelType() }15    }16    open class ThirdLevelInheritingPartiallyQualifiedThirdLevelType: SecondLevelType.ThirdLevelType {17      func thirdLevelInheritingMethod() -> SecondLevelType.ThirdLevelType {18        return ThirdLevelType()19      }20    }21    open class ThirdLevelInheritingFullyQualifiedThirdLevelType: MockingbirdModuleTestsHost.TopLevelType.SecondLevelType.ThirdLevelType {22      func thirdLevelInheritingMethod()23        -> MockingbirdModuleTestsHost.TopLevelType.SecondLevelType.ThirdLevelType {24          return ThirdLevelType()25      }26    }27    open class ThirdLevelType {28      func thirdLevelMethod(param1: TopLevelType, param2: SecondLevelType) -> Bool { return true }29      public init() {}30    }31    32    func secondLevelMethod(param1: TopLevelType, param2: ThirdLevelType) -> Bool { return true }33    public init() {}34  }35  func topLevelMethod(param1: SecondLevelType, param2: SecondLevelType.ThirdLevelType) -> Bool {36    return true37  }38  public init() {}39}40public protocol ExternalModuleScoping {41  var topLevelType: TopLevelType { get }42  var secondLevelType: TopLevelType.SecondLevelType { get }43  var thirdLevelType: TopLevelType.SecondLevelType.ThirdLevelType { get }44}...

Full Screen

Full Screen

ExternalModuleClassScopedTypes.swift

Source:ExternalModuleClassScopedTypes.swift Github

copy

Full Screen

...6//7import Foundation8import MockingbirdModuleTestsHost9class SubclassingExternalTopLevelType: MockingbirdModuleTestsHost.TopLevelType {10  // Contextually qualified as `MockingbirdModuleTestsHost.TopLevelType.SecondLevelType`11  var secondLevelType: SecondLevelType12  public override init() {13    self.secondLevelType = MockingbirdModuleTestsHost.TopLevelType.SecondLevelType()14  }15}16class ImplementingExternalModuleScoping: ExternalModuleScoping {17  var topLevelType: MockingbirdModuleTestsHost.TopLevelType18  var secondLevelType: MockingbirdModuleTestsHost.TopLevelType.SecondLevelType19  var thirdLevelType: MockingbirdModuleTestsHost.TopLevelType.SecondLevelType.ThirdLevelType20  21  init() {22    self.topLevelType = MockingbirdModuleTestsHost.TopLevelType()23    self.secondLevelType = MockingbirdModuleTestsHost.TopLevelType.SecondLevelType()24    self.thirdLevelType = MockingbirdModuleTestsHost.TopLevelType.SecondLevelType.ThirdLevelType()25  }26}...

Full Screen

Full Screen

SecondLevelType

Using AI Code Generation

copy

Full Screen

1let secondLevelType = SecondLevelType()2secondLevelType.doSomething()3let firstLevelType = FirstLevelType()4firstLevelType.doSomething()5let firstLevelType = FirstLevelType()6firstLevelType.doSomething()7let firstLevelType = FirstLevelType()8firstLevelType.doSomething()9let firstLevelType = FirstLevelType()10firstLevelType.doSomething()11let firstLevelType = FirstLevelType()12firstLevelType.doSomething()13let firstLevelType = FirstLevelType()14firstLevelType.doSomething()15let firstLevelType = FirstLevelType()16firstLevelType.doSomething()17let firstLevelType = FirstLevelType()18firstLevelType.doSomething()19let firstLevelType = FirstLevelType()20firstLevelType.doSomething()21let firstLevelType = FirstLevelType()22firstLevelType.doSomething()23let firstLevelType = FirstLevelType()24firstLevelType.doSomething()25let firstLevelType = FirstLevelType()26firstLevelType.doSomething()27let firstLevelType = FirstLevelType()28firstLevelType.doSomething()

Full Screen

Full Screen

SecondLevelType

Using AI Code Generation

copy

Full Screen

1import Mockingbird2import MockingbirdTests3class FirstLevelType {4  init(secondLevelType: SecondLevelType) {5  }6}7func test() {8  let secondLevelType = mock(SecondLevelType.self)9  let firstLevelType = FirstLevelType(secondLevelType: secondLevelType)10  when(secondLevelType).method().thenReturn("Hello")11  print(firstLevelType.secondLevelType.method())12}13test()14  let secondLevelType = mock(SecondLevelType.self)15  let secondLevelType = mock(SecondLevelType.self)16  let firstLevelType = FirstLevelType(secondLevelType: secondLevelType)17  let firstLevelType = FirstLevelType(secondLevelType: secondLevelType)18  let firstLevelType = FirstLevelType(secondLevelType: secondLevelType)19  let firstLevelType = FirstLevelType(secondLevelType: secondLevelType)20  when(secondLevelType).method().thenReturn("Hello")21  when(secondLevelType).method().thenReturn("Hello")22  print(firstLevelType.secondLevelType.method

Full Screen

Full Screen

SecondLevelType

Using AI Code Generation

copy

Full Screen

1import MockingbirdFramework2let secondLevelType = SecondLevelType()3secondLevelType.secondLevelMethod()4import MockingbirdFramework5let firstLevelType = FirstLevelType()6firstLevelType.firstLevelMethod()7import MockingbirdFramework8let thirdLevelType = ThirdLevelType()9thirdLevelType.thirdLevelMethod()10import MockingbirdFramework11let firstLevelType = FirstLevelType()12firstLevelType.firstLevelMethod()13import MockingbirdFramework14let secondLevelType = SecondLevelType()15secondLevelType.secondLevelMethod()16import MockingbirdFramework17let thirdLevelType = ThirdLevelType()18thirdLevelType.thirdLevelMethod()

Full Screen

Full Screen

SecondLevelType

Using AI Code Generation

copy

Full Screen

1import MockingbirdTests2let secondLevelType = SecondLevelType()3secondLevelType.doSomething()4import MockingbirdTests5let firstLevelType = FirstLevelType()6firstLevelType.doSomething()7public class FirstLevelType {8    public init() {}9    public func doSomething() {10        print("FirstLevelType.doSomething")11    }12}13public class SecondLevelType {14    public init() {}15    public func doSomething() {16        print("SecondLevelType.doSomething")17    }18}19import XCTest20import MockingbirdTests21class MockingbirdTestsTests: XCTestCase {22    func testExample() {23        let firstLevelType = FirstLevelType()24        firstLevelType.doSomething()25    }26}27public class FirstLevelType {28    public init() {}29    public func doSomething() {30        print("FirstLevelType.doSomething")31    }32}33public class SecondLevelType {34    public init() {}35    public func doSomething() {36        print("SecondLevelType.doSomething")37    }38}39import XCTest40import MockingbirdTests41class MockingbirdTestsTests: XCTestCase {42    func testExample() {43        let firstLevelType = FirstLevelType()44        firstLevelType.doSomething()45    }46}

Full Screen

Full Screen

SecondLevelType

Using AI Code Generation

copy

Full Screen

1import MockingbirdTests2import MockingbirdTests3import MockingbirdTests4import MockingbirdTests5import MockingbirdTests6import MockingbirdTests7import MockingbirdTests8import MockingbirdTests9import MockingbirdTests10import Mock

Full Screen

Full Screen

SecondLevelType

Using AI Code Generation

copy

Full Screen

1var secondLevelInstance = SecondLevelType()2secondLevelInstance.method1()3secondLevelInstance.method2()4secondLevelInstance.method3()5secondLevelInstance.method4()6var secondLevelInstance = SecondLevelType()7secondLevelInstance.method1()8secondLevelInstance.method2()9secondLevelInstance.method3()10secondLevelInstance.method4()11var secondLevelInstance = SecondLevelType()12secondLevelInstance.method1()13secondLevelInstance.method2()14secondLevelInstance.method3()15secondLevelInstance.method4()16var secondLevelInstance = SecondLevelType()17secondLevelInstance.method1()18secondLevelInstance.method2()19secondLevelInstance.method3()20secondLevelInstance.method4()21var secondLevelInstance = SecondLevelType()22secondLevelInstance.method1()23secondLevelInstance.method2()24secondLevelInstance.method3()25secondLevelInstance.method4()26var secondLevelInstance = SecondLevelType()27secondLevelInstance.method1()28secondLevelInstance.method2()29secondLevelInstance.method3()30secondLevelInstance.method4()31var secondLevelInstance = SecondLevelType()32secondLevelInstance.method1()33secondLevelInstance.method2()34secondLevelInstance.method3()35secondLevelInstance.method4()36var secondLevelInstance = SecondLevelType()37secondLevelInstance.method1()38secondLevelInstance.method2()39secondLevelInstance.method3()40secondLevelInstance.method4()41var secondLevelInstance = SecondLevelType()42secondLevelInstance.method1()43secondLevelInstance.method2()44secondLevelInstance.method3()45secondLevelInstance.method4()

Full Screen

Full Screen

SecondLevelType

Using AI Code Generation

copy

Full Screen

1let secondLevelType = SecondLevelType()2secondLevelType.doSomething()3import MyClass4var myClass = MyClass()5But I get an error saying that "Use of unresolved identifier 'MyClass'". I have tried importing the module using the following syntax:6import module_name.MyClass7import module_name8var myClass = MyClass()9How do I import a class into my playground?10import MyClass11var myClass = MyClass()12But I get an error saying that "Use of unresolved identifier 'MyClass'". I have tried importing the module using the following syntax:13import module_name.MyClass14import module_name15var myClass = MyClass()16How do I import a class into my playground?

Full Screen

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Mockingbird automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful