mirror of
https://github.com/ReactiveX/RxSwift.git
synced 2024-10-05 22:47:15 +03:00
Linux porting changes.
This commit is contained in:
parent
78c83fdaad
commit
e2819880f0
@ -168,33 +168,22 @@ public struct Queue<T>: SequenceType {
|
||||
- returns: Generator of contained elements.
|
||||
*/
|
||||
public func generate() -> Generator {
|
||||
return QueueGenerator(queue: self)
|
||||
var i = dequeueIndex
|
||||
var count = _count
|
||||
|
||||
return anyGenerator {
|
||||
if count == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
count -= 1
|
||||
if i >= self._storage.count {
|
||||
i -= self._storage.count
|
||||
}
|
||||
|
||||
let element = self._storage[i]
|
||||
i += 1
|
||||
return element
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class QueueGenerator<Element> : AnyGenerator<Element> {
|
||||
let _queue: Queue<Element>
|
||||
var _i: Int
|
||||
var _remaining: Int
|
||||
|
||||
init(queue: Queue<Element>) {
|
||||
_queue = queue
|
||||
_i = queue.dequeueIndex
|
||||
_remaining = queue.count
|
||||
}
|
||||
|
||||
override func next() -> Element? {
|
||||
if _remaining == 0 {
|
||||
return nil
|
||||
}
|
||||
|
||||
_remaining -= 1
|
||||
if _i >= _queue._storage.count {
|
||||
_i -= _queue._storage.count
|
||||
}
|
||||
|
||||
let element = _queue._storage[_i]
|
||||
_i += 1
|
||||
return element
|
||||
}
|
||||
}
|
@ -20,7 +20,7 @@ class ControlEventTests : RxTest {
|
||||
let expectSubscribeOffMainThread = expectationWithDescription("Did subscribe off main thread")
|
||||
|
||||
let controlProperty = ControlEvent(events: Observable.deferred { () -> Observable<Int> in
|
||||
XCTAssertTrue(NSThread.isMainThread())
|
||||
XCTAssertTrue(isMainThread())
|
||||
observedOnMainThread = true
|
||||
return hotObservable.asObservable()
|
||||
})
|
||||
|
@ -20,7 +20,7 @@ class ControlPropertyTests : RxTest {
|
||||
let expectSubscribeOffMainThread = expectationWithDescription("Did subscribe off main thread")
|
||||
|
||||
let controlProperty = ControlProperty(values: Observable.deferred { () -> Observable<Int> in
|
||||
XCTAssertTrue(NSThread.isMainThread())
|
||||
XCTAssertTrue(isMainThread())
|
||||
observedOnMainThread = true
|
||||
return hotObservable.asObservable()
|
||||
}, valueSink: AnyObserver { n in
|
||||
|
@ -38,7 +38,7 @@ extension DriverTest {
|
||||
|
||||
backgroundScheduler.schedule(()) { _ in
|
||||
_ = driver.asObservable().subscribe { e in
|
||||
XCTAssertTrue(NSThread.isMainThread())
|
||||
XCTAssertTrue(isMainThread())
|
||||
switch e {
|
||||
case .Next(let element):
|
||||
firstElements.append(element)
|
||||
@ -49,7 +49,7 @@ extension DriverTest {
|
||||
}
|
||||
}
|
||||
_ = driver.asDriver().asObservable().subscribe { e in
|
||||
XCTAssertTrue(NSThread.isMainThread())
|
||||
XCTAssertTrue(isMainThread())
|
||||
switch e {
|
||||
case .Next(let element):
|
||||
secondElements.append(element)
|
||||
@ -319,7 +319,7 @@ extension DriverTest {
|
||||
func testAsDriver_map() {
|
||||
let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()
|
||||
let driver = hotObservable.asDriver(onErrorJustReturn: -1).map { (n: Int) -> Int in
|
||||
XCTAssertTrue(NSThread.isMainThread())
|
||||
XCTAssertTrue(isMainThread())
|
||||
return n + 1
|
||||
}
|
||||
|
||||
@ -342,7 +342,7 @@ extension DriverTest {
|
||||
func testAsDriver_filter() {
|
||||
let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()
|
||||
let driver = hotObservable.asDriver(onErrorJustReturn: -1).filter { n in
|
||||
XCTAssertTrue(NSThread.isMainThread())
|
||||
XCTAssertTrue(isMainThread())
|
||||
return n % 2 == 0
|
||||
}
|
||||
|
||||
@ -498,7 +498,7 @@ extension DriverTest {
|
||||
var events = [Event<Int>]()
|
||||
|
||||
let driver = hotObservable.asDriver(onErrorJustReturn: -1).doOn { e in
|
||||
XCTAssertTrue(NSThread.isMainThread())
|
||||
XCTAssertTrue(isMainThread())
|
||||
|
||||
events.append(e)
|
||||
}
|
||||
@ -605,7 +605,7 @@ extension DriverTest {
|
||||
func testAsDriver_flatMap() {
|
||||
let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()
|
||||
let driver = hotObservable.asDriver(onErrorJustReturn: -1).flatMap { (n: Int) -> Driver<Int> in
|
||||
XCTAssertTrue(NSThread.isMainThread())
|
||||
XCTAssertTrue(isMainThread())
|
||||
return Driver.just(n + 1)
|
||||
}
|
||||
|
||||
@ -629,7 +629,7 @@ extension DriverTest {
|
||||
func testAsDriver_merge() {
|
||||
let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()
|
||||
let driver = hotObservable.asDriver(onErrorJustReturn: -1).map { (n: Int) -> Driver<Int> in
|
||||
XCTAssertTrue(NSThread.isMainThread())
|
||||
XCTAssertTrue(isMainThread())
|
||||
return Driver.just(n + 1)
|
||||
}.merge()
|
||||
|
||||
@ -649,7 +649,7 @@ extension DriverTest {
|
||||
func testAsDriver_merge2() {
|
||||
let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()
|
||||
let driver = hotObservable.asDriver(onErrorJustReturn: -1).map { (n: Int) -> Driver<Int> in
|
||||
XCTAssertTrue(NSThread.isMainThread())
|
||||
XCTAssertTrue(isMainThread())
|
||||
return Driver.just(n + 1)
|
||||
}.merge(maxConcurrent: 1)
|
||||
|
||||
@ -708,7 +708,7 @@ extension DriverTest {
|
||||
func testAsDriver_scan() {
|
||||
let hotObservable = BackgroundThreadPrimitiveHotObservable<Int>()
|
||||
let driver = hotObservable.asDriver(onErrorJustReturn: -1).scan(0) { (a: Int, n: Int) -> Int in
|
||||
XCTAssertTrue(NSThread.isMainThread())
|
||||
XCTAssertTrue(isMainThread())
|
||||
return a + n
|
||||
}
|
||||
|
||||
|
@ -12,7 +12,7 @@ import XCTest
|
||||
|
||||
class BackgroundThreadPrimitiveHotObservable<ElementType: Equatable> : PrimitiveHotObservable<ElementType> {
|
||||
override func subscribe<O : ObserverType where O.E == E>(observer: O) -> Disposable {
|
||||
XCTAssertTrue(!NSThread.isMainThread())
|
||||
XCTAssertTrue(!isMainThread())
|
||||
return super.subscribe(observer)
|
||||
}
|
||||
}
|
@ -12,7 +12,7 @@ import XCTest
|
||||
|
||||
class MainThreadPrimitiveHotObservable<ElementType: Equatable> : PrimitiveHotObservable<ElementType> {
|
||||
override func subscribe<O : ObserverType where O.E == E>(observer: O) -> Disposable {
|
||||
XCTAssertTrue(NSThread.isMainThread())
|
||||
XCTAssertTrue(isMainThread())
|
||||
return super.subscribe(observer)
|
||||
}
|
||||
}
|
@ -31,7 +31,7 @@ extension ObservableBlockingTest {
|
||||
XCTFail("It should fail")
|
||||
}
|
||||
catch let e {
|
||||
XCTAssertTrue(e as NSError === testError)
|
||||
XCTAssertErrorEqual(e, testError)
|
||||
}
|
||||
}
|
||||
|
||||
@ -68,7 +68,7 @@ extension ObservableBlockingTest {
|
||||
XCTFail()
|
||||
}
|
||||
catch let e {
|
||||
XCTAssertTrue(e as NSError === testError)
|
||||
XCTAssertErrorEqual(e, testError)
|
||||
}
|
||||
}
|
||||
|
||||
@ -105,7 +105,7 @@ extension ObservableBlockingTest {
|
||||
XCTFail()
|
||||
}
|
||||
catch let e {
|
||||
XCTAssertTrue(e as NSError === testError)
|
||||
XCTAssertErrorEqual(e, testError)
|
||||
}
|
||||
}
|
||||
|
||||
@ -169,7 +169,7 @@ extension ObservableBlockingTest {
|
||||
XCTFail()
|
||||
}
|
||||
catch let e {
|
||||
XCTAssertTrue(e as NSError === testError)
|
||||
XCTAssertErrorEqual(e, testError)
|
||||
}
|
||||
}
|
||||
|
||||
@ -255,7 +255,7 @@ extension ObservableBlockingTest {
|
||||
XCTFail()
|
||||
}
|
||||
catch let e {
|
||||
XCTAssertTrue(e as NSError === testError)
|
||||
XCTAssertErrorEqual(e, testError)
|
||||
}
|
||||
XCTAssertEqual(predicateVals, [42, 43])
|
||||
}
|
||||
@ -266,7 +266,7 @@ extension ObservableBlockingTest {
|
||||
XCTFail()
|
||||
}
|
||||
catch let e {
|
||||
XCTAssertTrue(e as NSError === testError)
|
||||
XCTAssertErrorEqual(e, testError)
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -63,11 +63,11 @@ extension SubjectConcurrencyTest {
|
||||
}
|
||||
}
|
||||
else if state == 1 {
|
||||
XCTAssertTrue(!NSThread.currentThread().isMainThread)
|
||||
XCTAssertTrue(!isMainThread())
|
||||
state = 2
|
||||
}
|
||||
else if state == 2 {
|
||||
XCTAssertTrue(NSThread.currentThread().isMainThread)
|
||||
XCTAssertTrue(isMainThread())
|
||||
allDone = true
|
||||
}
|
||||
}
|
||||
|
@ -25,6 +25,10 @@
|
||||
C810EED11C2DE85C000033CE /* PerformanceTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = C810EECF1C2DE85C000033CE /* PerformanceTools.swift */; };
|
||||
C810EED21C2DE85C000033CE /* PerformanceTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = C810EECF1C2DE85C000033CE /* PerformanceTools.swift */; };
|
||||
C810EED31C2DE85C000033CE /* PerformanceTools.swift in Sources */ = {isa = PBXBuildFile; fileRef = C810EECF1C2DE85C000033CE /* PerformanceTools.swift */; };
|
||||
C810EED51C2DEBD1000033CE /* Foundation+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C810EED41C2DEBD1000033CE /* Foundation+Extensions.swift */; };
|
||||
C810EED61C2DEBD1000033CE /* Foundation+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C810EED41C2DEBD1000033CE /* Foundation+Extensions.swift */; };
|
||||
C810EED71C2DEBD1000033CE /* Foundation+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C810EED41C2DEBD1000033CE /* Foundation+Extensions.swift */; };
|
||||
C810EED81C2DEBD1000033CE /* Foundation+Extensions.swift in Sources */ = {isa = PBXBuildFile; fileRef = C810EED41C2DEBD1000033CE /* Foundation+Extensions.swift */; };
|
||||
C811084D1AF50E2A001C13E4 /* NSNotificationCenterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C811082B1AF50E2A001C13E4 /* NSNotificationCenterTests.swift */; };
|
||||
C81108501AF50E2A001C13E4 /* TestConnectableObservable.swift in Sources */ = {isa = PBXBuildFile; fileRef = C81108311AF50E2A001C13E4 /* TestConnectableObservable.swift */; };
|
||||
C81108531AF50E2A001C13E4 /* MySubject.swift in Sources */ = {isa = PBXBuildFile; fileRef = C81108341AF50E2A001C13E4 /* MySubject.swift */; };
|
||||
@ -203,6 +207,7 @@
|
||||
C80DDEDF1BCEE898006A1832 /* MainThreadPrimitiveHotObservable.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MainThreadPrimitiveHotObservable.swift; sourceTree = "<group>"; };
|
||||
C810EEC71C2DE7CF000033CE /* TestErrors.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestErrors.swift; sourceTree = "<group>"; };
|
||||
C810EECF1C2DE85C000033CE /* PerformanceTools.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PerformanceTools.swift; sourceTree = "<group>"; };
|
||||
C810EED41C2DEBD1000033CE /* Foundation+Extensions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "Foundation+Extensions.swift"; sourceTree = "<group>"; };
|
||||
C81108201AF50E11001C13E4 /* AllTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = AllTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
||||
C81108241AF50E11001C13E4 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
||||
C811082B1AF50E2A001C13E4 /* NSNotificationCenterTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = NSNotificationCenterTests.swift; sourceTree = "<group>"; };
|
||||
@ -355,6 +360,7 @@
|
||||
C88FA4F81C25BF6A00CCFEA4 /* RxMutableBox.swift */,
|
||||
C8A32CF61C2DE7A5008FE809 /* Recorded+Timeless.swift */,
|
||||
C810EEC71C2DE7CF000033CE /* TestErrors.swift */,
|
||||
C810EED41C2DEBD1000033CE /* Foundation+Extensions.swift */,
|
||||
);
|
||||
path = Tests;
|
||||
sourceTree = "<group>";
|
||||
@ -655,6 +661,7 @@
|
||||
C87BB6BB1C13A75600C66DF9 /* ControlEventTests.swift in Sources */,
|
||||
C8BCD3FE1C14BCAD005F1280 /* NSLayoutConstraint+RxTests.swift in Sources */,
|
||||
C81108641AF50E2A001C13E4 /* Observable+MultipleTest.swift in Sources */,
|
||||
C810EED51C2DEBD1000033CE /* Foundation+Extensions.swift in Sources */,
|
||||
C8FDC5F81B2B5B7E0065F8D9 /* ElementIndexPair.swift in Sources */,
|
||||
C8E381231B2063CC008CDC33 /* Observable+Extensions.swift in Sources */,
|
||||
C84B8FC21B89D0D500C9CCCF /* BagTest.swift in Sources */,
|
||||
@ -689,6 +696,7 @@
|
||||
files = (
|
||||
C810EED31C2DE85C000033CE /* PerformanceTools.swift in Sources */,
|
||||
C868D10C1BB950D4003D1474 /* main.swift in Sources */,
|
||||
C810EED81C2DEBD1000033CE /* Foundation+Extensions.swift in Sources */,
|
||||
);
|
||||
runOnlyForDeploymentPostprocessing = 0;
|
||||
};
|
||||
@ -728,6 +736,7 @@
|
||||
C88BB8A41B07E64B0064D411 /* Observable.Extensions.swift in Sources */,
|
||||
C868D0F71BB75EAE003D1474 /* RxTest.swift in Sources */,
|
||||
C84B8FC31B89D0D500C9CCCF /* BagTest.swift in Sources */,
|
||||
C810EED61C2DEBD1000033CE /* Foundation+Extensions.swift in Sources */,
|
||||
C87BB6B81C13A64000C66DF9 /* ControlPropertyTests.swift in Sources */,
|
||||
C8BCD3FC1C14B914005F1280 /* NSView+RxTests.swift in Sources */,
|
||||
C897EC3C1B10E000009C2CB0 /* BehaviorSubjectTest.swift in Sources */,
|
||||
@ -792,6 +801,7 @@
|
||||
C87BB6BD1C13A75600C66DF9 /* ControlEventTests.swift in Sources */,
|
||||
C8BCD4001C14BCAD005F1280 /* NSLayoutConstraint+RxTests.swift in Sources */,
|
||||
C80DDEE21BCEE898006A1832 /* MainThreadPrimitiveHotObservable.swift in Sources */,
|
||||
C810EED71C2DEBD1000033CE /* Foundation+Extensions.swift in Sources */,
|
||||
D2EBEB6C1BB9B7EF003A27DC /* Observable+BindingTest.swift in Sources */,
|
||||
D2EBEB621BB9B7E5003A27DC /* ElementIndexPair.swift in Sources */,
|
||||
D2EBEB701BB9B7EF003A27DC /* Observable+MultipleTest.swift in Sources */,
|
||||
|
13
Tests/Tests/Foundation+Extensions.swift
Normal file
13
Tests/Tests/Foundation+Extensions.swift
Normal file
@ -0,0 +1,13 @@
|
||||
//
|
||||
// Foundation+Extensions.swift
|
||||
// Tests
|
||||
//
|
||||
// Created by Krunoslav Zaher on 12/25/15.
|
||||
//
|
||||
//
|
||||
|
||||
import Foundation
|
||||
|
||||
func isMainThread() -> Bool {
|
||||
return NSThread.currentThread().isMainThread
|
||||
}
|
@ -37,12 +37,14 @@ func XCTAssertEqualAnyObjectArrayOfArrays(lhs: [[AnyObject]], _ rhs: [[AnyObject
|
||||
|
||||
return zip(lhs, rhs).reduce(true) { acc, n in
|
||||
let pointerValuesAreEqual: Bool
|
||||
if let firstPointer = (n.0 as? NSValue)?.pointerValue, secondPointer = (n.1 as? NSValue)?.pointerValue {
|
||||
pointerValuesAreEqual = firstPointer == secondPointer
|
||||
}
|
||||
else {
|
||||
pointerValuesAreEqual = false
|
||||
}
|
||||
#if !os(Linux)
|
||||
if let firstPointer = (n.0 as? NSValue)?.pointerValue, secondPointer = (n.1 as? NSValue)?.pointerValue {
|
||||
pointerValuesAreEqual = firstPointer == secondPointer
|
||||
}
|
||||
else {
|
||||
pointerValuesAreEqual = false
|
||||
}
|
||||
#endif
|
||||
let res = n.0.isEqual(n.1) || pointerValuesAreEqual
|
||||
return acc && res
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user