How to use BasicOperation class

Best Mockingbird code snippet using BasicOperation

CoreAsynchronousOperationTests.swift

Source:CoreAsynchronousOperationTests.swift Github

copy

Full Screen

...25	func testOperationMain() {26		// Make sure main() gets called27		let mainExpectation = expectation(description: "Calls main")28		29		let operation = BasicOperation(mainExpectation: mainExpectation)30		31		let operationQueue = OperationQueue()32		operationQueue.addOperation(operation)33		34		waitForExpectations(timeout: 5.0, handler: nil)35		XCTAssert(operation.finishClosures == nil)36	}37	38	func testOperationCancel() {39		// Cancel skips main, but still calls finish40		let finishExpectation = expectation(description: "Calls finish closure")41		let mainExpectation = expectation(description: "Does not call main")42		mainExpectation.isInverted = true43		44		let operation = BasicOperation(mainExpectation: mainExpectation)45		operation.addFinishClosure { _ in46			finishExpectation.fulfill()47		}48		operation.cancel()49		50		let operationQueue = OperationQueue()51		operationQueue.addOperation(operation)52		53		waitForExpectations(timeout: 1.0, handler: nil)54		XCTAssert(operation.isCancelled)55	}56    57    func testOperationFinishClosure() {58		// The closure passes in the finished operation as a parameter59		let finishExpectation = expectation(description: "Calls finish closure")60		61		let operation = BasicOperation()62		operation.addFinishClosure { sourceOperation in63			XCTAssert(sourceOperation === operation)64			finishExpectation.fulfill()65		}66		67		let operationQueue = OperationQueue()68		operationQueue.addOperation(operation)69		70		waitForExpectations(timeout: 5.0, handler: nil)71		// We expect the internal copy of the closures to be gone after finish() is performed72		XCTAssert(operation.finishClosures!.count == 0)73    }74	75	func testOperationDeinit() {76		// We expect the operation to deinit, even with the closure referencing the operation77		let deinitExpectation = expectation(description: "Calls deinit")78		let finishExpectation = expectation(description: "Calls finish closure")79		80		var operation: CoreAsynchronousOperation! = DeinitOperation(deinitExpectation: deinitExpectation)81		var operationReference = operation82		operation.addFinishClosure { sourceOperation in83			XCTAssert(sourceOperation === operationReference) // This captures a reference84			operationReference = nil85			finishExpectation.fulfill()86		}87		88		let operationQueue = OperationQueue()89		operationQueue.addOperation(operation)90		operation = nil91		92		waitForExpectations(timeout: 5.0, handler: nil)93	}94	95	func testOperationLinking() {96		// We expect the parameter to be assigned to operation2, which gets called after operation197		let finishExpectation = expectation(description: "Calls finish closure")98		99		let operation2 = BasicOperation()100		let operation1 = BasicOperation(parameterValue: 1)101//		operation1.link(to: operation2) { sourceOperation, dependentOperation in102//			// We expect this to happen after operation1's main()103//			dependentOperation.parameter = sourceOperation.parameter104//		}105		operation1.link(to: operation2, performing: copyParameter)106		operation2.addFinishClosure { _ in107			operation1.parameter = 2108			finishExpectation.fulfill()109		}110		111		let operationQueue = OperationQueue()112		operationQueue.addOperation(operation2)113		operationQueue.addOperation(operation1)114		115		waitForExpectations(timeout: 5.0, handler: nil)116		XCTAssert(operation1.parameter == 2)117		XCTAssert(operation2.parameter == 1)118	}119	120	fileprivate func copyParameter(from source: BasicOperation, to dependent: BasicOperation) {121		// We expect this to happen after operation1's main()122		dependent.parameter = source.parameter123	}124}125// MARK: - Subject classes126fileprivate class TestOperation: CoreAsynchronousOperation {127	128	override func main() {129		finish()130	}131}132fileprivate class BasicOperation: ParameterOperation {133	134	weak var mainExpectation: XCTestExpectation?135	136	init(parameterValue: Int = 0, mainExpectation: XCTestExpectation? = nil) {137		self.mainExpectation = mainExpectation138		super.init(parameterValue: parameterValue)139	}140	141	override func main() {142		mainExpectation?.fulfill()143		super.main()144	}145}146fileprivate class DeinitOperation: TestOperation {...

Full Screen

Full Screen

NetworkManager.swift

Source:NetworkManager.swift Github

copy

Full Screen

...10struct AnyResponse: Codable {}11// MARK: - Routing server host12public enum ServerHost { case marvel, meep, unowned }13public protocol NetworkManager {14    func request(_ operation: BasicOperation<Data?>)15}16public class NetworkManagerImpl: NetworkManager {17    private let appConfiguration: AppConfiguration18    19    private var isConnectedToInternet: Bool? { return NetworkReachabilityManager()?.isReachable }20    21    public init(appConfiguration: AppConfiguration) {22        self.appConfiguration = appConfiguration23    }24    25    public func request(_ operation: BasicOperation<Data?>) {26        basicValidation(withOperation: operation).response { [weak self] response in27            switch response.result {28            case .success(let value):29                print("Operation Success: \(operation.endpoint)")30                let handleResponse = operation.handleResponse(response: value)31                operation.success(handleResponse)32            case .failure(let error):33                let handleErrorResponse = operation.handleError(response: response.data)34                self?.handleError(error, onOperation: operation, response: handleErrorResponse)35            }36        }37    }38    39    private func basicValidation<T>(withOperation operation: BasicOperation<T>) -> DataRequest {40        return request(withOperation: operation)41            .validate(statusCode: 200..<300)42            .validate(contentType: [operation.mimeType])43    }44    45    private func request<T>(withOperation operation: BasicOperation<T>) -> DataRequest {46        return simpleRequest(withOperation: operation)47    }48    49    private func simpleRequest<T>(withOperation operation: BasicOperation<T>) -> DataRequest {50        let serverHost = setupServerHost(serverHost: operation.serverHost, parameters: operation.params)51        52        let url = "\(serverHost.url)\(operation.endpoint)"53        let parameters = serverHost.params54        55        let debugMsg = "Execute \(operation.method.rawValue) => \(url) with Params: \(parameters)"56        print("\(operation.isMultipart ? "\(debugMsg) and is Multipart" : debugMsg)")57        58        return AF.request(url, method: operation.method, parameters: parameters, encoding: operation.encoding, headers: operationHeader(operation: operation))59    }60    61    private func operationHeader<T>(operation: BasicOperation<T>) -> HTTPHeaders {62        return HTTPHeaders(operation.headers)63    }64    65    private func handleError<T>(_ error: AFError, onOperation operation: BasicOperation<T>, response: Any?) {66        print("Operation Error: \(operation.endpoint) Error \(error.asAFError?.responseCode ?? 0): \(error.asAFError?.errorDescription ?? error.localizedDescription)")67    }68    69    private func addAuthorization(parameters: Parameters) -> Parameters {70        let ts = TimeInterval(NSDate().timeIntervalSince1970)71        let hash = "\(ts)\(appConfiguration.privateKeyMarvel)\(appConfiguration.publicKeyMarvel)".hashMD5()72        73        var parameters = parameters74        parameters["ts"] = "\(ts)"75        parameters["apikey"] = appConfiguration.publicKeyMarvel76        parameters["hash"] = hash77        78        return parameters79    }...

Full Screen

Full Screen

Operations.swift

Source:Operations.swift Github

copy

Full Screen

1    enum BasicOperation {2        case addition3        case subtraction4        case multiplication5        case division6        7        var selectedOperation: BasicOperation {8            switch self {9            case .addition:10                return BasicOperation.addition11            case .subtraction:12                return BasicOperation.subtraction13            case .multiplication:14                return BasicOperation.multiplication15            case .division:16                return BasicOperation.division17            }18        }19    }...

Full Screen

Full Screen

BasicOperation

Using AI Code Generation

copy

Full Screen

1func test() {2    let operation = BasicOperation()3    operation.execute()4}5func test() {6    let operation = BasicOperation()7    operation.execute()8}9func test() {10    let operation = BasicOperation()11    operation.execute()12}13func test() {14    let operation = BasicOperation()15    operation.execute()16}17func test() {18    let operation = BasicOperation()19    operation.execute()20}21func test() {22    let operation = BasicOperation()23    operation.execute()24}25func test() {26    let operation = BasicOperation()27    operation.execute()28}29func test() {30    let operation = BasicOperation()31    operation.execute()32}33func test() {34    let operation = BasicOperation()35    operation.execute()36}37func test() {38    let operation = BasicOperation()39    operation.execute()40}41func test() {42    let operation = BasicOperation()43    operation.execute()44}45func test() {46    let operation = BasicOperation()47    operation.execute()48}49func test() {50    let operation = BasicOperation()51    operation.execute()52}53func test() {54    let operation = BasicOperation()55    operation.execute()56}57func test() {

Full Screen

Full Screen

BasicOperation

Using AI Code Generation

copy

Full Screen

1import Mockingbird2import Foundation3class BasicOperation {4    func addTwoNumbers(num1: Int, num2: Int) -> Int {5    }6}7import Mockingbird8import Foundation9class AdvancedOperation {10    func addTwoNumbers(num1: Int, num2: Int) -> Int {11    }12}13import Mockingbird14import Foundation15class AdvancedOperation {16    func addTwoNumbers(num1: Int, num2: Int) -> Int {17    }18}19import Mockingbird20import Foundation21class AdvancedOperation {22    func addTwoNumbers(num1: Int, num2: Int) -> Int {23    }24}25import Mockingbird26import Foundation27class AdvancedOperation {28    func addTwoNumbers(num1: Int, num2: Int) -> Int {29    }30}31import Mockingbird32import Foundation33class AdvancedOperation {34    func addTwoNumbers(num1: Int, num2: Int) -> Int {35    }36}37import Mockingbird38import Foundation39class AdvancedOperation {40    func addTwoNumbers(num1: Int, num2: Int) -> Int {41    }42}43import Mockingbird44import Foundation45class AdvancedOperation {46    func addTwoNumbers(num1: Int, num2: Int) -> Int {47    }48}49import Mockingbird50import Foundation51class AdvancedOperation {52    func addTwoNumbers(num

Full Screen

Full Screen

BasicOperation

Using AI Code Generation

copy

Full Screen

1import Foundation2import Mockingbird3class BasicOperation: Operation {4    override func main() {5    }6}7let operation = BasicOperation()8operation.start()9import Foundation10import Mockingbird11class BasicOperation: Operation {12    override func main() {13    }14}15let operation = BasicOperation()16operation.start()17import Foundation18import Mockingbird19class BasicOperation: Operation {20    override func main() {21    }22}23let operation = BasicOperation()24operation.start()25import Foundation26import Mockingbird27class BasicOperation: Operation {28    override func main() {29    }30}31let operation = BasicOperation()32operation.start()33import Foundation34import Mockingbird35class BasicOperation: Operation {36    override func main() {37    }38}39let operation = BasicOperation()40operation.start()41import Foundation42import Mockingbird43class BasicOperation: Operation {44    override func main() {45    }46}47let operation = BasicOperation()48operation.start()49import Foundation50import Mockingbird51class BasicOperation: Operation {52    override func main() {53    }54}55let operation = BasicOperation()56operation.start()57import Foundation58import Mockingbird59class BasicOperation: Operation {60    override func main() {61    }62}63let operation = BasicOperation()64operation.start()65import Foundation66import Mockingbird67class BasicOperation: Operation {68    override func main() {69    }70}71let operation = BasicOperation()72operation.start()

Full Screen

Full Screen

BasicOperation

Using AI Code Generation

copy

Full Screen

1import Mockingbird2import XCTest3class BasicOperationTests: XCTestCase {4    func testBasicOperation() {5        let operation = BasicOperation()6        let expectation = self.expectation(description: "Operation should complete")7        operation.completionBlock = {8            expectation.fulfill()9        }10        operation.start()11        waitForExpectations(timeout: 1.0, handler: nil)12        XCTAssertTrue(operation.isFinished)13        XCTAssertTrue(operation.isExecuted)14    }15}16import Mockingbird17import XCTest18class BasicOperationTests: XCTestCase {19    func testBasicOperation() {20        let operation = BasicOperation()21        let expectation = self.expectation(description: "Operation should complete")22        operation.completionBlock = {23            expectation.fulfill()24        }25        operation.start()26        waitForExpectations(timeout: 1.0, handler: nil)27        XCTAssertTrue(operation.isFinished)28        XCTAssertTrue(operation.isExecuted)29    }30}31import Mockingbird32import XCTest33class BasicOperationTests: XCTestCase {34    func testBasicOperation() {35        let operation = BasicOperation()36        let expectation = self.expectation(description: "Operation should complete")37        operation.completionBlock = {38            expectation.fulfill()39        }40        operation.start()41        waitForExpectations(timeout: 1.0, handler: nil)42        XCTAssertTrue(operation.isFinished)43        XCTAssertTrue(operation.isExecuted)44    }45}46import Mockingbird47import XCTest48class BasicOperationTests: XCTestCase {49    func testBasicOperation() {50        let operation = BasicOperation()51        let expectation = self.expectation(description: "Operation should complete")52        operation.completionBlock = {53            expectation.fulfill()54        }55        operation.start()56        waitForExpectations(timeout: 1.0, handler: nil)57        XCTAssertTrue(operation.isFinished)58        XCTAssertTrue(operation.isExecuted)59    }60}61import Mockingbird62import XCTest63class BasicOperationTests: XCTestCase {64    func testBasicOperation() {65        let operation = BasicOperation()66        let expectation = self.expectation(description: "Operation should complete")

Full Screen

Full Screen

BasicOperation

Using AI Code Generation

copy

Full Screen

1import Mockingbird2let mock = mock(BasicOperation.self)3given(mock.addTwoNumbers(a: any(), b: any())) ~> 104let result = mock.addTwoNumbers(a: 5, b: 5)5import Mockingbird6let mock = mock(BasicOperation.self)7given(mock.addTwoNumbers(a: any(), b: any())) ~> 208let result = mock.addTwoNumbers(a: 10, b: 10)

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.

Most used methods in BasicOperation

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful