diff --git a/Tests/RxSwiftTests/Observable+MergeTests.swift b/Tests/RxSwiftTests/Observable+MergeTests.swift index 1c7f65d65..45a19736f 100644 --- a/Tests/RxSwiftTests/Observable+MergeTests.swift +++ b/Tests/RxSwiftTests/Observable+MergeTests.swift @@ -2057,7 +2057,33 @@ extension ObservableMergeTest { Subscription(850, 950) ]) } - + + func testFlatMap_Complete_OuterNotComplete_DoesNotKeepSelectorAlive() { + let scheduler = TestScheduler(initialClock: 0) + + let xs = scheduler.createHotObservable([ + .next(100, 1), + .completed(200) + ]) + + var object = Optional.some(TestObject()) + + let disposable = xs + .flatMap { [object] _ in + _ = object + return Observable.never() + } + .subscribe() + defer { + disposable.dispose() + } + + weak var weakObject = object + object = nil + + XCTAssertNil(weakObject) + } + func testFlatMap_Complete_ErrorOuter() { let scheduler = TestScheduler(initialClock: 0) @@ -2308,7 +2334,7 @@ extension ObservableMergeTest { XCTAssertEqual(xs.recordedEvents[6].value.element!.subscriptions, [ ]) } - + func testFlatMap_SelectorThrows() { let scheduler = TestScheduler(initialClock: 0) @@ -3062,3 +3088,6 @@ extension ObservableMergeTest { } #endif } + +private class TestObject { +}