Skip to content

Commit b753147

Browse files
committed
Fix the 'null' issue in the default equality
1 parent 35d8005 commit b753147

File tree

2 files changed

+24
-8
lines changed

2 files changed

+24
-8
lines changed

rxjava-core/src/main/java/rx/Observable.java

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2315,6 +2315,9 @@ public static <T> Observable<Boolean> sequenceEqual(Observable<? extends T> firs
23152315
return sequenceEqual(first, second, new Func2<T, T, Boolean>() {
23162316
@Override
23172317
public Boolean call(T first, T second) {
2318+
if(first == null) {
2319+
return second == null;
2320+
}
23182321
return first.equals(second);
23192322
}
23202323
});

rxjava-core/src/test/java/rx/operators/OperationSequenceEqualTests.java

Lines changed: 21 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@
2525

2626
import rx.Observable;
2727
import rx.Observer;
28+
import rx.util.functions.Func2;
2829

2930
public class OperationSequenceEqualTests {
3031

@@ -104,18 +105,30 @@ public void testWithEmpty3() {
104105
}
105106

106107
@Test
107-
public void testWithEqualityError() {
108+
public void testWithNull1() {
108109
Observable<Boolean> observable = Observable.sequenceEqual(
109110
Observable.from((String) null), Observable.from("one"));
111+
verifyResult(observable, false);
112+
}
110113

111-
@SuppressWarnings("unchecked")
112-
Observer<Boolean> observer = mock(Observer.class);
113-
observable.subscribe(observer);
114+
@Test
115+
public void testWithNull2() {
116+
Observable<Boolean> observable = Observable.sequenceEqual(
117+
Observable.from((String) null), Observable.from((String) null));
118+
verifyResult(observable, true);
119+
}
114120

115-
InOrder inOrder = inOrder(observer);
116-
inOrder.verify(observer, times(1)).onError(
117-
isA(NullPointerException.class));
118-
inOrder.verifyNoMoreInteractions();
121+
@Test
122+
public void testWithEqualityError() {
123+
Observable<Boolean> observable = Observable.sequenceEqual(
124+
Observable.from("one"), Observable.from("one"),
125+
new Func2<String, String, Boolean>() {
126+
@Override
127+
public Boolean call(String t1, String t2) {
128+
throw new TestException();
129+
}
130+
});
131+
verifyError(observable);
119132
}
120133

121134
private void verifyResult(Observable<Boolean> observable, boolean result) {

0 commit comments

Comments
 (0)