3939import rx .functions .Action1 ;
4040import rx .functions .Func1 ;
4141import rx .functions .Func2 ;
42+ import rx .schedulers .TestScheduler ;
4243import rx .observers .TestSubscriber ;
4344import rx .schedulers .Schedulers ;
4445import rx .subscriptions .Subscriptions ;
4546
47+
4648public class SingleTest {
4749
4850 @ Test
@@ -436,7 +438,7 @@ public void call() {
436438 fail ("timed out waiting for latch" );
437439 }
438440 }
439-
441+
440442 @ Test
441443 public void testBackpressureAsObservable () {
442444 Single <String > s = Single .create (new OnSubscribe <String >() {
@@ -462,7 +464,7 @@ public void onStart() {
462464
463465 ts .assertValue ("hello" );
464466 }
465-
467+
466468 @ Test
467469 public void testToObservable () {
468470 Observable <String > a = Single .just ("a" ).toObservable ();
@@ -648,4 +650,43 @@ public void doOnSuccessShouldNotSwallowExceptionThrownByAction() {
648650
649651 verify (action ).call (eq ("value" ));
650652 }
653+
654+ @ Test
655+ public void delayWithSchedulerShouldDelayCompletion () {
656+ TestScheduler scheduler = new TestScheduler ();
657+ Single <Integer > single = Single .just (1 ).delay (100 , TimeUnit .DAYS , scheduler );
658+
659+ TestSubscriber <Integer > subscriber = new TestSubscriber <Integer >();
660+ single .subscribe (subscriber );
661+
662+ subscriber .assertNotCompleted ();
663+ scheduler .advanceTimeBy (99 , TimeUnit .DAYS );
664+ subscriber .assertNotCompleted ();
665+ scheduler .advanceTimeBy (91 , TimeUnit .DAYS );
666+ subscriber .assertCompleted ();
667+ subscriber .assertValue (1 );
668+ }
669+
670+ @ Test
671+ public void delayWithSchedulerShouldShortCutWithFailure () {
672+ TestScheduler scheduler = new TestScheduler ();
673+ final RuntimeException expected = new RuntimeException ();
674+ Single <Integer > single = Single .create (new OnSubscribe <Integer >() {
675+ @ Override
676+ public void call (SingleSubscriber <? super Integer > singleSubscriber ) {
677+ singleSubscriber .onSuccess (1 );
678+ singleSubscriber .onError (expected );
679+ }
680+ }).delay (100 , TimeUnit .DAYS , scheduler );
681+
682+ TestSubscriber <Integer > subscriber = new TestSubscriber <Integer >();
683+ single .subscribe (subscriber );
684+
685+ subscriber .assertNotCompleted ();
686+ scheduler .advanceTimeBy (99 , TimeUnit .DAYS );
687+ subscriber .assertNotCompleted ();
688+ scheduler .advanceTimeBy (91 , TimeUnit .DAYS );
689+ subscriber .assertNoValues ();
690+ subscriber .assertError (expected );
691+ }
651692}
0 commit comments