Linux porting changes.

This commit is contained in:
Krunoslav Zaher 2015-12-25 22:31:58 +01:00
parent 78c83fdaad
commit e2819880f0
11 changed files with 69 additions and 55 deletions

View File

@ -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
}
}

View File

@ -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()
})

View File

@ -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

View File

@ -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
}

View File

@ -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)
}
}

View File

@ -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)
}
}

View File

@ -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)
}
}

View File

@ -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
}
}

View File

@ -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 */,

View 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
}

View File

@ -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
}