@@ -380,4 +380,51 @@ public void call() {
380380 @ SuppressWarnings ("serial" )
381381 private class TestException extends Throwable {
382382 }
383+
384+ @ Test
385+ public void testSwitchIssue737 () {
386+ // https://github.com/Netflix/RxJava/issues/737
387+ Observable <Observable <String >> source = Observable .create (new Observable .OnSubscribeFunc <Observable <String >>() {
388+ @ Override
389+ public Subscription onSubscribe (Observer <? super Observable <String >> observer ) {
390+ publishNext (observer , 0 , Observable .create (new Observable .OnSubscribeFunc <String >() {
391+ @ Override
392+ public Subscription onSubscribe (Observer <? super String > observer ) {
393+ publishNext (observer , 10 , "1-one" );
394+ publishNext (observer , 20 , "1-two" );
395+ // The following events will be ignored
396+ publishNext (observer , 30 , "1-three" );
397+ publishCompleted (observer , 40 );
398+ return Subscriptions .empty ();
399+ }
400+ }));
401+ publishNext (observer , 25 , Observable .create (new Observable .OnSubscribeFunc <String >() {
402+ @ Override
403+ public Subscription onSubscribe (Observer <? super String > observer ) {
404+ publishNext (observer , 10 , "2-one" );
405+ publishNext (observer , 20 , "2-two" );
406+ publishNext (observer , 30 , "2-three" );
407+ publishCompleted (observer , 40 );
408+ return Subscriptions .empty ();
409+ }
410+ }));
411+ publishCompleted (observer , 30 );
412+ return Subscriptions .empty ();
413+ }
414+ });
415+
416+ Observable <String > sampled = Observable .create (OperationSwitch .switchDo (source ));
417+ sampled .subscribe (observer );
418+
419+ scheduler .advanceTimeTo (1000 , TimeUnit .MILLISECONDS );
420+
421+ InOrder inOrder = inOrder (observer );
422+ inOrder .verify (observer , times (1 )).onNext ("1-one" );
423+ inOrder .verify (observer , times (1 )).onNext ("1-two" );
424+ inOrder .verify (observer , times (1 )).onNext ("2-one" );
425+ inOrder .verify (observer , times (1 )).onNext ("2-two" );
426+ inOrder .verify (observer , times (1 )).onNext ("2-three" );
427+ inOrder .verify (observer , times (1 )).onCompleted ();
428+ inOrder .verifyNoMoreInteractions ();
429+ }
383430}
0 commit comments