diff --git a/Tests/RxCocoaTests/SharedSequence+OperatorTest.swift b/Tests/RxCocoaTests/SharedSequence+OperatorTest.swift index 3f04ee8a1..72f7af7eb 100644 --- a/Tests/RxCocoaTests/SharedSequence+OperatorTest.swift +++ b/Tests/RxCocoaTests/SharedSequence+OperatorTest.swift @@ -57,6 +57,49 @@ extension SharedSequenceOperatorTests { } } +// MARK: compactMap +extension SharedSequenceOperatorTests { + func testAsDriver_compactMap() { + let hotObservable = BackgroundThreadPrimitiveHotObservable() + let driver = hotObservable.asDriver(onErrorJustReturn: "-1").compactMap { (n: String) -> Int? in + XCTAssertTrue(DispatchQueue.isMain) + return Int(n) + } + + let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) { + XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable]) + + hotObservable.on(.next("1")) + hotObservable.on(.next("2")) + hotObservable.on(.error(testError)) + + XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable]) + } + + XCTAssertEqual(results, [1, 2, -1]) + } + + func testAsDriver_compactMapNil() { + let hotObservable = BackgroundThreadPrimitiveHotObservable() + let driver = hotObservable.asDriver(onErrorJustReturn: "-1").compactMap { (n: String) -> Int? in + XCTAssertTrue(DispatchQueue.isMain) + return Int(n) + } + + let results = subscribeTwiceOnBackgroundSchedulerAndOnlyOneSubscription(driver) { + XCTAssertTrue(hotObservable.subscriptions == [SubscribedToHotObservable]) + + hotObservable.on(.next("1")) + hotObservable.on(.next("a")) + hotObservable.on(.error(testError)) + + XCTAssertTrue(hotObservable.subscriptions == [UnsunscribedFromHotObservable]) + } + + XCTAssertEqual(results, [1, -1]) + } +} + // MARK: filter extension SharedSequenceOperatorTests { func testAsDriver_filter() { diff --git a/Tests/RxSwiftTests/MaybeTest.swift b/Tests/RxSwiftTests/MaybeTest.swift index ec3b7773d..abecac041 100644 --- a/Tests/RxSwiftTests/MaybeTest.swift +++ b/Tests/RxSwiftTests/MaybeTest.swift @@ -586,6 +586,31 @@ extension MaybeTest { ]) } + func test_compactMap() { + let scheduler = TestScheduler(initialClock: 0) + + let res = scheduler.start { + (Maybe.just("1").compactMap(Int.init) as Maybe).asObservable() + } + + XCTAssertEqual(res.events, [ + .next(200, 1), + .completed(200) + ]) + } + + func test_compactMapNil() { + let scheduler = TestScheduler(initialClock: 0) + + let res = scheduler.start { + (Maybe.just("a").compactMap(Int.init) as Maybe).asObservable() + } + + XCTAssertEqual(res.events, [ + .completed(200) + ]) + } + func test_flatMap() { let scheduler = TestScheduler(initialClock: 0) diff --git a/Tests/RxSwiftTests/SingleTest.swift b/Tests/RxSwiftTests/SingleTest.swift index 00b8192dc..ea589ad62 100644 --- a/Tests/RxSwiftTests/SingleTest.swift +++ b/Tests/RxSwiftTests/SingleTest.swift @@ -535,6 +535,31 @@ extension SingleTest { ]) } + func test_compactMap() { + let scheduler = TestScheduler(initialClock: 0) + + let res = scheduler.start { + (Single.just("1").compactMap(Int.init) as Maybe).asObservable() + } + + XCTAssertEqual(res.events, [ + .next(200, 1), + .completed(200) + ]) + } + + func test_compactMapNil() { + let scheduler = TestScheduler(initialClock: 0) + + let res = scheduler.start { + (Single.just("a").compactMap(Int.init) as Maybe).asObservable() + } + + XCTAssertEqual(res.events, [ + .completed(200) + ]) + } + func test_flatMap() { let scheduler = TestScheduler(initialClock: 0)