@@ -953,15 +953,8 @@ public void testRangeWithScheduler() {
953
953
954
954
@ Test
955
955
public void testStartWithAction () {
956
- TestScheduler scheduler = new TestScheduler ();
957
-
958
956
Action0 action = mock (Action0 .class );
959
- Observable <Void > observable = Observable .start (action , scheduler );
960
- scheduler .advanceTimeBy (1 , TimeUnit .MILLISECONDS );
961
-
962
- assertEquals (null , observable .toBlockingObservable ().single ());
963
- assertEquals (null , observable .toBlockingObservable ().single ());
964
- verify (action , times (1 )).call ();
957
+ assertEquals (null , Observable .start (action ).toBlockingObservable ().single ());
965
958
}
966
959
967
960
@ Test (expected = RuntimeException .class )
@@ -972,44 +965,214 @@ public void call() {
972
965
throw new RuntimeException ("Some error" );
973
966
}
974
967
};
968
+ Observable .start (action ).toBlockingObservable ().single ();
969
+ }
970
+
971
+ @ Test
972
+ public void testStartWhenSubscribeRunBeforeAction () {
973
+ TestScheduler scheduler = new TestScheduler ();
974
+
975
+ Action0 action = mock (Action0 .class );
976
+
977
+ Observable <Void > observable = Observable .start (action , scheduler );
978
+
979
+ @ SuppressWarnings ("unchecked" )
980
+ Observer <Void > observer = mock (Observer .class );
981
+ observable .subscribe (observer );
982
+
983
+ InOrder inOrder = inOrder (observer );
984
+ inOrder .verifyNoMoreInteractions ();
985
+
986
+ // Run action
987
+ scheduler .advanceTimeBy (100 , TimeUnit .MILLISECONDS );
975
988
976
- Observable <Void > observable = Observable .start (action );
977
- observable .toBlockingObservable ().single ();
989
+ inOrder .verify (observer , times (1 )).onNext (null );
990
+ inOrder .verify (observer , times (1 )).onCompleted ();
991
+ inOrder .verifyNoMoreInteractions ();
978
992
}
979
993
980
994
@ Test
981
- public void testStartWithFunc () {
995
+ public void testStartWhenSubscribeRunAfterAction () {
982
996
TestScheduler scheduler = new TestScheduler ();
983
997
998
+ Action0 action = mock (Action0 .class );
999
+
1000
+ Observable <Void > observable = Observable .start (action , scheduler );
1001
+
1002
+ // Run action
1003
+ scheduler .advanceTimeBy (100 , TimeUnit .MILLISECONDS );
1004
+
984
1005
@ SuppressWarnings ("unchecked" )
985
- Func0 <String > func = (Func0 <String >) mock (Func0 .class );
986
- doAnswer (new Answer <String >() {
1006
+ Observer <Void > observer = mock (Observer .class );
1007
+ observable .subscribe (observer );
1008
+
1009
+ InOrder inOrder = inOrder (observer );
1010
+ inOrder .verify (observer , times (1 )).onNext (null );
1011
+ inOrder .verify (observer , times (1 )).onCompleted ();
1012
+ inOrder .verifyNoMoreInteractions ();
1013
+ }
1014
+
1015
+ @ Test
1016
+ public void testStartWithActionAndMultipleObservers () {
1017
+ TestScheduler scheduler = new TestScheduler ();
987
1018
1019
+ Action0 action = mock (Action0 .class );
1020
+
1021
+ Observable <Void > observable = Observable .start (action , scheduler );
1022
+
1023
+ scheduler .advanceTimeBy (100 , TimeUnit .MILLISECONDS );
1024
+
1025
+ @ SuppressWarnings ("unchecked" )
1026
+ Observer <Void > observer1 = mock (Observer .class );
1027
+ @ SuppressWarnings ("unchecked" )
1028
+ Observer <Void > observer2 = mock (Observer .class );
1029
+ @ SuppressWarnings ("unchecked" )
1030
+ Observer <Void > observer3 = mock (Observer .class );
1031
+
1032
+ observable .subscribe (observer1 );
1033
+ observable .subscribe (observer2 );
1034
+ observable .subscribe (observer3 );
1035
+
1036
+ InOrder inOrder ;
1037
+ inOrder = inOrder (observer1 );
1038
+ inOrder .verify (observer1 , times (1 )).onNext (null );
1039
+ inOrder .verify (observer1 , times (1 )).onCompleted ();
1040
+ inOrder .verifyNoMoreInteractions ();
1041
+
1042
+ inOrder = inOrder (observer2 );
1043
+ inOrder .verify (observer2 , times (1 )).onNext (null );
1044
+ inOrder .verify (observer2 , times (1 )).onCompleted ();
1045
+ inOrder .verifyNoMoreInteractions ();
1046
+
1047
+ inOrder = inOrder (observer3 );
1048
+ inOrder .verify (observer3 , times (1 )).onNext (null );
1049
+ inOrder .verify (observer3 , times (1 )).onCompleted ();
1050
+ inOrder .verifyNoMoreInteractions ();
1051
+
1052
+ verify (action , times (1 )).call ();
1053
+ }
1054
+
1055
+ @ Test
1056
+ public void testStartWithFunc () {
1057
+ Func0 <String > func = new Func0 <String >() {
988
1058
@ Override
989
- public String answer ( InvocationOnMock invocation ) throws Throwable {
1059
+ public String call () {
990
1060
return "one" ;
991
1061
}
1062
+ };
1063
+ assertEquals ("one" , Observable .start (func ).toBlockingObservable ().single ());
1064
+ }
992
1065
993
- }).when (func ).call ();
1066
+ @ Test (expected = RuntimeException .class )
1067
+ public void testStartWithFuncError () {
1068
+ Func0 <String > func = new Func0 <String >() {
1069
+ @ Override
1070
+ public String call () {
1071
+ throw new RuntimeException ("Some error" );
1072
+ }
1073
+ };
1074
+ Observable .start (func ).toBlockingObservable ().single ();
1075
+ }
1076
+
1077
+ @ Test
1078
+ public void testStartWhenSubscribeRunBeforeFunc () {
1079
+ TestScheduler scheduler = new TestScheduler ();
1080
+
1081
+ Func0 <String > func = new Func0 <String >() {
1082
+ @ Override
1083
+ public String call () {
1084
+ return "one" ;
1085
+ }
1086
+ };
994
1087
995
1088
Observable <String > observable = Observable .start (func , scheduler );
996
- scheduler .advanceTimeBy (1 , TimeUnit .MILLISECONDS );
997
1089
998
- assertEquals ("one" , observable .toBlockingObservable ().single ());
999
- assertEquals ("one" , observable .toBlockingObservable ().single ());
1000
- verify (func , times (1 )).call ();
1090
+ @ SuppressWarnings ("unchecked" )
1091
+ Observer <String > observer = mock (Observer .class );
1092
+ observable .subscribe (observer );
1093
+
1094
+ InOrder inOrder = inOrder (observer );
1095
+ inOrder .verifyNoMoreInteractions ();
1096
+
1097
+ // Run func
1098
+ scheduler .advanceTimeBy (100 , TimeUnit .MILLISECONDS );
1099
+
1100
+ inOrder .verify (observer , times (1 )).onNext ("one" );
1101
+ inOrder .verify (observer , times (1 )).onCompleted ();
1102
+ inOrder .verifyNoMoreInteractions ();
1001
1103
}
1002
1104
1003
- @ Test (expected = RuntimeException .class )
1004
- public void testStartWithFuncError () {
1105
+ @ Test
1106
+ public void testStartWhenSubscribeRunAfterFunc () {
1107
+ TestScheduler scheduler = new TestScheduler ();
1108
+
1005
1109
Func0 <String > func = new Func0 <String >() {
1006
1110
@ Override
1007
1111
public String call () {
1008
- throw new RuntimeException ( "Some error" ) ;
1112
+ return "one" ;
1009
1113
}
1010
1114
};
1011
1115
1012
- Observable <String > observable = Observable .start (func );
1013
- observable .toBlockingObservable ().single ();
1116
+ Observable <String > observable = Observable .start (func , scheduler );
1117
+
1118
+ // Run func
1119
+ scheduler .advanceTimeBy (100 , TimeUnit .MILLISECONDS );
1120
+
1121
+ @ SuppressWarnings ("unchecked" )
1122
+ Observer <String > observer = mock (Observer .class );
1123
+ observable .subscribe (observer );
1124
+
1125
+ InOrder inOrder = inOrder (observer );
1126
+ inOrder .verify (observer , times (1 )).onNext ("one" );
1127
+ inOrder .verify (observer , times (1 )).onCompleted ();
1128
+ inOrder .verifyNoMoreInteractions ();
1014
1129
}
1015
- }
1130
+
1131
+ @ Test
1132
+ public void testStartWithFuncAndMultipleObservers () {
1133
+ TestScheduler scheduler = new TestScheduler ();
1134
+
1135
+ @ SuppressWarnings ("unchecked" )
1136
+ Func0 <String > func = (Func0 <String >) mock (Func0 .class );
1137
+ doAnswer (new Answer <String >() {
1138
+ @ Override
1139
+ public String answer (InvocationOnMock invocation ) throws Throwable {
1140
+ return "one" ;
1141
+ }
1142
+ }).when (func ).call ();
1143
+
1144
+ Observable <String > observable = Observable .start (func , scheduler );
1145
+
1146
+ scheduler .advanceTimeBy (100 , TimeUnit .MILLISECONDS );
1147
+
1148
+ @ SuppressWarnings ("unchecked" )
1149
+ Observer <String > observer1 = mock (Observer .class );
1150
+ @ SuppressWarnings ("unchecked" )
1151
+ Observer <String > observer2 = mock (Observer .class );
1152
+ @ SuppressWarnings ("unchecked" )
1153
+ Observer <String > observer3 = mock (Observer .class );
1154
+
1155
+ observable .subscribe (observer1 );
1156
+ observable .subscribe (observer2 );
1157
+ observable .subscribe (observer3 );
1158
+
1159
+ InOrder inOrder ;
1160
+ inOrder = inOrder (observer1 );
1161
+ inOrder .verify (observer1 , times (1 )).onNext ("one" );
1162
+ inOrder .verify (observer1 , times (1 )).onCompleted ();
1163
+ inOrder .verifyNoMoreInteractions ();
1164
+
1165
+ inOrder = inOrder (observer2 );
1166
+ inOrder .verify (observer2 , times (1 )).onNext ("one" );
1167
+ inOrder .verify (observer2 , times (1 )).onCompleted ();
1168
+ inOrder .verifyNoMoreInteractions ();
1169
+
1170
+ inOrder = inOrder (observer3 );
1171
+ inOrder .verify (observer3 , times (1 )).onNext ("one" );
1172
+ inOrder .verify (observer3 , times (1 )).onCompleted ();
1173
+ inOrder .verifyNoMoreInteractions ();
1174
+
1175
+ verify (func , times (1 )).call ();
1176
+ }
1177
+
1178
+ }
0 commit comments