RxSwift/Tests/RxCocoaTests/ControlPropertyTests.swift

51 lines
1.3 KiB
Swift

//
// ControlPropertyTests.swift
// RxTests
//
// Created by Krunoslav Zaher on 12/6/15.
// Copyright © 2015 Krunoslav Zaher. All rights reserved.
//
import Foundation
import XCTest
import RxCocoa
import RxSwift
class ControlPropertyTests : RxTest {
func testObservingIsAlwaysHappeningOnMainThread() {
let hotObservable = MainThreadPrimitiveHotObservable<Int>()
var observedOnMainThread = false
let expectSubscribeOffMainThread = expectation(description: "Did subscribe off main thread")
let controlProperty = ControlProperty(values: Observable.deferred { () -> Observable<Int> in
XCTAssertTrue(isMainThread())
observedOnMainThread = true
return hotObservable.asObservable()
}, valueSink: AnyObserver { n in
})
doOnBackgroundThread {
let d = controlProperty.asObservable().subscribe { n in
}
let d2 = controlProperty.subscribe { n in
}
doOnMainThread {
d.dispose()
d2.dispose()
expectSubscribeOffMainThread.fulfill()
}
}
waitForExpectations(timeout: 1.0) { error in
XCTAssertNil(error)
}
XCTAssertTrue(observedOnMainThread)
}
}