From 3e1005a95c508430a66910dbc9a61b087fca9d3e Mon Sep 17 00:00:00 2001 From: Daniel Thorpe Date: Tue, 15 Sep 2015 12:06:56 +0100 Subject: [PATCH] [OPR-83]: Adds convenience to operation & group. --- Operations/Operations/GroupOperation.swift | 4 ++++ Operations/Operations/Operation.swift | 4 ++-- Operations/Queue/OperationQueue.swift | 6 ------ OperationsTests/GroupOperationTests.swift | 15 +++++++++++++++ 4 files changed, 21 insertions(+), 8 deletions(-) diff --git a/Operations/Operations/GroupOperation.swift b/Operations/Operations/GroupOperation.swift index bed74522f..76dd7f0f1 100644 --- a/Operations/Operations/GroupOperation.swift +++ b/Operations/Operations/GroupOperation.swift @@ -68,6 +68,10 @@ public class GroupOperation: Operation { queue.addOperation(operation) } + public func addOperations(operations: [NSOperation]) { + queue.addOperations(operations, waitUntilFinished: false) + } + final func aggregateError(error: ErrorType) { aggregateErrors.append(error) } diff --git a/Operations/Operations/Operation.swift b/Operations/Operations/Operation.swift index 438eb5ec9..b9355888d 100644 --- a/Operations/Operations/Operation.swift +++ b/Operations/Operations/Operation.swift @@ -386,8 +386,8 @@ extension NSOperation { } /// Add multiple depdendencies to the operation. - func addDependencies(dependencies: [NSOperation]) { - dependencies.map { self.addDependency($0) } + public func addDependencies(dependencies: [NSOperation]) { + dependencies.map(addDependency) } } diff --git a/Operations/Queue/OperationQueue.swift b/Operations/Queue/OperationQueue.swift index 91f22cd73..b6602c639 100644 --- a/Operations/Queue/OperationQueue.swift +++ b/Operations/Queue/OperationQueue.swift @@ -80,12 +80,6 @@ public class OperationQueue: NSOperationQueue { public override func addOperations(ops: [AnyObject], waitUntilFinished wait: Bool) { if let ops = ops as? [NSOperation] { ops.map(addOperation) - - if wait { - for operation in operations { - operation.waitUntilFinished() - } - } } } diff --git a/OperationsTests/GroupOperationTests.swift b/OperationsTests/GroupOperationTests.swift index a71d19589..5f943abd3 100644 --- a/OperationsTests/GroupOperationTests.swift +++ b/OperationsTests/GroupOperationTests.swift @@ -63,6 +63,21 @@ class GroupOperationTests: OperationTests { waitForExpectationsWithTimeout(5, handler: nil) XCTAssertTrue(group.finished) } + + func test__that_adding_multiple_operations_to_a_group_works() { + let group = GroupOperation(operations: []) + let operations: [TestOperation] = (0..<3).map { _ in TestOperation() } + group.addOperations(operations) + + addCompletionBlockToTestOperation(group, withExpectation: expectationWithDescription("Test: \(__FUNCTION__)")) + runOperation(group) + waitForExpectationsWithTimeout(3, handler: nil) + + XCTAssertTrue(group.finished) + XCTAssertTrue(operations[0].didExecute) + XCTAssertTrue(operations[1].didExecute) + XCTAssertTrue(operations[2].didExecute) + } }