This commit is contained in:
Krunoslav Zaher 2015-12-25 20:30:40 +01:00
parent f183ac08e0
commit bee92f9700
10 changed files with 41 additions and 52 deletions

View File

@ -259,3 +259,12 @@ extension NSObject {
let deallocSelector = "dealloc" as Selector
let rxDeallocatingSelector = RX_selector("dealloc")
let rxDeallocatingSelectorReference = RX_reference_from_selector(rxDeallocatingSelector)
extension NSObject {
func rx_synchronized<T>(@noescape action: () -> T) -> T {
objc_sync_enter(self)
let result = action()
objc_sync_exit(self)
return result
}
}

View File

@ -330,6 +330,7 @@ extension NSError {
#endif
// MARK: Shared with RxSwift
#if !RX_NO_MODULE
@ -339,13 +340,4 @@ extension NSError {
fatalError(lastMessage)
}
extension NSObject {
func rx_synchronized<T>(@noescape action: () -> T) -> T {
objc_sync_enter(self)
let result = action()
objc_sync_exit(self)
return result
}
}
#endif

View File

@ -45,12 +45,3 @@ func decrementChecked(inout i: Int) throws -> Int {
i -= 1
return result
}
extension NSObject {
func rx_synchronized<T>(@noescape action: () -> T) -> T {
objc_sync_enter(self)
let result = action()
objc_sync_exit(self)
return result
}
}

View File

@ -50,23 +50,14 @@ public class SerialDispatchQueueScheduler: SchedulerType {
/**
Constructs new `SerialDispatchQueueScheduler` with internal serial queue named `internalSerialQueueName`.
- parameter internalSerialQueueName: Name of internal serial dispatch queue.
*/
public convenience init(internalSerialQueueName: String) {
self.init(internalSerialQueueName: internalSerialQueueName, serialQueueConfiguration: { _ -> Void in })
}
/**
Constructs new `SerialDispatchQueueScheduler` with internal serial queue named `internalSerialQueueName`.
Additional dispatch queue properties can be set after dispatch queue is created using `serialQueueConfiguration`.
- parameter internalSerialQueueName: Name of internal serial dispatch queue.
- parameter serialQueueConfiguration: Additional configuration of internal serial dispatch queue.
*/
public convenience init(internalSerialQueueName: String, serialQueueConfiguration: (dispatch_queue_t) -> Void) {
public convenience init(internalSerialQueueName: String, serialQueueConfiguration: ((dispatch_queue_t) -> Void)? = nil) {
let queue = dispatch_queue_create(internalSerialQueueName, DISPATCH_QUEUE_SERIAL)
serialQueueConfiguration(queue)
serialQueueConfiguration?(queue)
self.init(serialQueue: queue)
}
@ -81,15 +72,6 @@ public class SerialDispatchQueueScheduler: SchedulerType {
dispatch_set_target_queue(serialQueue, queue)
self.init(serialQueue: serialQueue)
}
/**
Constructs new `SerialDispatchQueueScheduler` that wraps on of the global concurrent dispatch queues.
- parameter globalConcurrentQueuePriority: Identifier for global dispatch queue with specified priority.
*/
public convenience init(globalConcurrentQueuePriority: DispatchQueueSchedulerPriority) {
self.init(globalConcurrentQueuePriority: globalConcurrentQueuePriority, internalSerialQueueName: "rx.global_dispatch_queue.serial.\(globalConcurrentQueuePriority)")
}
/**
Constructs new `SerialDispatchQueueScheduler` that wraps on of the global concurrent dispatch queues.
@ -97,7 +79,7 @@ public class SerialDispatchQueueScheduler: SchedulerType {
- parameter globalConcurrentQueuePriority: Identifier for global dispatch queue with specified priority.
- parameter internalSerialQueueName: Custom name for internal serial dispatch queue proxy.
*/
public convenience init(globalConcurrentQueuePriority: DispatchQueueSchedulerPriority, internalSerialQueueName: String) {
public convenience init(globalConcurrentQueuePriority: DispatchQueueSchedulerPriority, internalSerialQueueName: String = "rx.global_dispatch_queue.serial") {
var priority: Int = 0
switch globalConcurrentQueuePriority {
case .High:

View File

@ -0,0 +1,17 @@
//
// Driver+Extensions.swift
// Tests
//
// Created by Krunoslav Zaher on 12/25/15.
//
//
import Foundation
extension Driver : Equatable {
}
public func == <T>(lhs: Driver<T>, rhs: Driver<T>) -> Bool {
return lhs.asObservable() === rhs.asObservable()
}

View File

@ -8,7 +8,6 @@
import Foundation
import RxSwift
import RxCocoa
import RxTests
public func == <T>(lhs: Observable<T>, rhs: Observable<T>) -> Bool {
@ -31,10 +30,3 @@ public func == <T>(lhs: ColdObservable<T>, rhs: ColdObservable<T>) -> Bool {
return lhs === rhs
}
extension Driver : Equatable {
}
public func == <T>(lhs: Driver<T>, rhs: Driver<T>) -> Bool {
return lhs.asObservable() === rhs.asObservable()
}

View File

@ -9,7 +9,6 @@
import Foundation
import XCTest
import RxSwift
import CoreGraphics
var deallocated = false
var realTest: Anything? = nil

View File

@ -13,12 +13,12 @@ import RxBlocking
import RxTests
class ObservableConcurrencyTestBase : RxTest {
var lock = OS_SPINLOCK_INIT
var lock = NSLock()
func performLocked(action: () -> Void) {
OSSpinLockLock(&lock)
lock.lock()
action()
OSSpinLockUnlock(&lock)
lock.unlock()
}
override func tearDown() {

View File

@ -8,7 +8,6 @@
import XCTest
import RxSwift
import CoreLocation
import RxTests
#if TRACE_RESOURCES

View File

@ -118,6 +118,9 @@
C8CCB8E71C2DB52B000EDACC /* Driver+Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8CCB8E61C2DB52B000EDACC /* Driver+Test.swift */; };
C8CCB8E81C2DB52B000EDACC /* Driver+Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8CCB8E61C2DB52B000EDACC /* Driver+Test.swift */; };
C8CCB8E91C2DB52B000EDACC /* Driver+Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8CCB8E61C2DB52B000EDACC /* Driver+Test.swift */; };
C8CCB8EF1C2DBB0D000EDACC /* Driver+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8CCB8EE1C2DBB0D000EDACC /* Driver+Extensions.swift */; };
C8CCB8F01C2DBB0D000EDACC /* Driver+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8CCB8EE1C2DBB0D000EDACC /* Driver+Extensions.swift */; };
C8CCB8F11C2DBB0D000EDACC /* Driver+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8CCB8EE1C2DBB0D000EDACC /* Driver+Extensions.swift */; };
C8CDD7D41B52BEC40043F0C5 /* Observable+BlockingTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8CDD7D31B52BEC40043F0C5 /* Observable+BlockingTest.swift */; };
C8CDD7D51B52BEC40043F0C5 /* Observable+BlockingTest.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8CDD7D31B52BEC40043F0C5 /* Observable+BlockingTest.swift */; };
C8CF47661C1DA04700C3FA6E /* CLLocationManager+RxTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8CF47651C1DA04700C3FA6E /* CLLocationManager+RxTests.swift */; };
@ -244,6 +247,7 @@
C8C4B4D41C1772D700828BD5 /* RxObjCRuntimeState.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RxObjCRuntimeState.swift; sourceTree = "<group>"; };
C8C4B4DE1C17772500828BD5 /* SentMessageTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SentMessageTest.swift; sourceTree = "<group>"; };
C8CCB8E61C2DB52B000EDACC /* Driver+Test.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Driver+Test.swift"; sourceTree = "<group>"; };
C8CCB8EE1C2DBB0D000EDACC /* Driver+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Driver+Extensions.swift"; sourceTree = "<group>"; };
C8CDD7D31B52BEC40043F0C5 /* Observable+BlockingTest.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; lineEnding = 0; path = "Observable+BlockingTest.swift"; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.swift; };
C8CF47651C1DA04700C3FA6E /* CLLocationManager+RxTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "CLLocationManager+RxTests.swift"; sourceTree = "<group>"; };
C8E381221B2063CC008CDC33 /* Observable+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Observable+Extensions.swift"; sourceTree = "<group>"; };
@ -352,6 +356,7 @@
C811082A1AF50E2A001C13E4 /* RxCocoaTests */ = {
isa = PBXGroup;
children = (
C8CCB8EE1C2DBB0D000EDACC /* Driver+Extensions.swift */,
C8CCB8E61C2DB52B000EDACC /* Driver+Test.swift */,
C8E9D2BC1BD422D80079D0DB /* Control+RxTests.swift */,
C8E9D2C01BD4525B0079D0DB /* Control+RxTests+Cocoa.swift */,
@ -616,6 +621,7 @@
C87EC2F91C131A4E0060B19B /* DelegateProxyTest.swift in Sources */,
C8B787FA1AF55CDE00206D02 /* Observable+ConcurrencyTest.swift in Sources */,
C81108691AF50E2A001C13E4 /* RxTest.swift in Sources */,
C8CCB8EF1C2DBB0D000EDACC /* Driver+Extensions.swift in Sources */,
C81108671AF50E2A001C13E4 /* Observable+TimeTest.swift in Sources */,
C8C4B4DF1C17772500828BD5 /* SentMessageTest.swift in Sources */,
C89CDB961BCDA1F1002063D9 /* Observable+SubscriptionTest.swift in Sources */,
@ -685,6 +691,7 @@
C88BB8941B07E64B0064D411 /* Observable+TimeTest.swift in Sources */,
C8CDD7D51B52BEC40043F0C5 /* Observable+BlockingTest.swift in Sources */,
C8E381291B207D03008CDC33 /* PrimitiveHotObservable.swift in Sources */,
C8CCB8F01C2DBB0D000EDACC /* Driver+Extensions.swift in Sources */,
C8C4B4E01C17772500828BD5 /* SentMessageTest.swift in Sources */,
C868D0FA1BB76A29003D1474 /* PerformanceTools.swift in Sources */,
C88BB8971B07E64B0064D411 /* MySubject.swift in Sources */,
@ -745,6 +752,7 @@
C87EC2FB1C131A4E0060B19B /* DelegateProxyTest.swift in Sources */,
D2EBEB5A1BB9B7CC003A27DC /* PrimitiveHotObservable.swift in Sources */,
C8C4B4E11C17772500828BD5 /* SentMessageTest.swift in Sources */,
C8CCB8F11C2DBB0D000EDACC /* Driver+Extensions.swift in Sources */,
C89CDB981BCDA1F1002063D9 /* Observable+SubscriptionTest.swift in Sources */,
C87BB6B91C13A64000C66DF9 /* ControlPropertyTests.swift in Sources */,
D2EBEB6F1BB9B7EF003A27DC /* Observable+CreationTest.swift in Sources */,