@Test fun a() { val ts = TestScheduler() val ps = PublishSubject.create() val s = TestSubscriber.create() val threshold = 3 ps.switchMap { value -> when { value > threshold -> Observable.timer(3, SECONDS, ts).map { value } else -> Observable.never() } }.subscribe(s) ps.onNext(1) ts.advanceTimeBy(5, SECONDS) ps.onNext(2) ts.advanceTimeBy(5, SECONDS) ps.onNext(3) ts.advanceTimeBy(2, SECONDS) ps.onNext(4) ts.advanceTimeBy(4, SECONDS) ps.onNext(5) ts.advanceTimeBy(4, SECONDS) s.assertValues(4, 5) }