Skip to content

Commit 46544c3

Browse files
committed
Add more unit tests
1 parent 5d94e52 commit 46544c3

File tree

1 file changed

+188
-25
lines changed

1 file changed

+188
-25
lines changed

rxjava-core/src/test/java/rx/ObservableTests.java

Lines changed: 188 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -953,15 +953,8 @@ public void testRangeWithScheduler() {
953953

954954
@Test
955955
public void testStartWithAction() {
956-
TestScheduler scheduler = new TestScheduler();
957-
958956
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());
965958
}
966959

967960
@Test(expected = RuntimeException.class)
@@ -972,44 +965,214 @@ public void call() {
972965
throw new RuntimeException("Some error");
973966
}
974967
};
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);
975988

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();
978992
}
979993

980994
@Test
981-
public void testStartWithFunc() {
995+
public void testStartWhenSubscribeRunAfterAction() {
982996
TestScheduler scheduler = new TestScheduler();
983997

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+
9841005
@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();
9871018

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>() {
9881058
@Override
989-
public String answer(InvocationOnMock invocation) throws Throwable {
1059+
public String call() {
9901060
return "one";
9911061
}
1062+
};
1063+
assertEquals("one", Observable.start(func).toBlockingObservable().single());
1064+
}
9921065

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+
};
9941087

9951088
Observable<String> observable = Observable.start(func, scheduler);
996-
scheduler.advanceTimeBy(1, TimeUnit.MILLISECONDS);
9971089

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();
10011103
}
10021104

1003-
@Test(expected = RuntimeException.class)
1004-
public void testStartWithFuncError() {
1105+
@Test
1106+
public void testStartWhenSubscribeRunAfterFunc() {
1107+
TestScheduler scheduler = new TestScheduler();
1108+
10051109
Func0<String> func = new Func0<String>() {
10061110
@Override
10071111
public String call() {
1008-
throw new RuntimeException("Some error");
1112+
return "one";
10091113
}
10101114
};
10111115

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();
10141129
}
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

Comments
 (0)