Skip to content

Commit e654e9b

Browse files
vanniktechakarnokd
authored andcommitted
2.x: Fix Flowable + Single elementAt and elementAtOrError operators on empty sources (#4681)
1 parent 27e8dad commit e654e9b

File tree

6 files changed

+84
-4
lines changed

6 files changed

+84
-4
lines changed

src/main/java/io/reactivex/internal/operators/flowable/FlowableElementAtMaybe.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -97,7 +97,7 @@ public void onError(Throwable t) {
9797
@Override
9898
public void onComplete() {
9999
s = SubscriptionHelper.CANCELLED;
100-
if (index <= count && !done) {
100+
if (!done) {
101101
done = true;
102102
actual.onComplete();
103103
}

src/main/java/io/reactivex/internal/operators/flowable/FlowableElementAtSingle.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -103,7 +103,7 @@ public void onError(Throwable t) {
103103
@Override
104104
public void onComplete() {
105105
s = SubscriptionHelper.CANCELLED;
106-
if (index <= count && !done) {
106+
if (!done) {
107107
done = true;
108108

109109
T v = defaultValue;

src/main/java/io/reactivex/internal/operators/observable/ObservableElementAtMaybe.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public void onError(Throwable t) {
9898

9999
@Override
100100
public void onComplete() {
101-
if (index <= count && !done) {
101+
if (!done) {
102102
done = true;
103103
actual.onComplete();
104104
}

src/main/java/io/reactivex/internal/operators/observable/ObservableElementAtSingle.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,7 @@ public void onError(Throwable t) {
9999

100100
@Override
101101
public void onComplete() {
102-
if (index <= count && !done) {
102+
if (!done) {
103103
done = true;
104104

105105
T v = defaultValue;

src/test/java/io/reactivex/internal/operators/flowable/FlowableElementAtTest.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,4 +135,44 @@ public void elementAtOrErrorError() {
135135
.assertErrorMessage("error")
136136
.assertError(RuntimeException.class);
137137
}
138+
139+
@Test
140+
public void elementAtIndex0OnEmptySource() {
141+
Flowable.empty()
142+
.elementAt(0)
143+
.test()
144+
.assertResult();
145+
}
146+
147+
@Test
148+
public void elementAtIndex0WithDefaultOnEmptySource() {
149+
Flowable.empty()
150+
.elementAt(0, 5)
151+
.test()
152+
.assertResult(5);
153+
}
154+
155+
@Test
156+
public void elementAtIndex1OnEmptySource() {
157+
Flowable.empty()
158+
.elementAt(1)
159+
.test()
160+
.assertResult();
161+
}
162+
163+
@Test
164+
public void elementAtIndex1WithDefaultOnEmptySource() {
165+
Flowable.empty()
166+
.elementAt(1, 10)
167+
.test()
168+
.assertResult(10);
169+
}
170+
171+
@Test
172+
public void elementAtOrErrorIndex1OnEmptySource() {
173+
Flowable.empty()
174+
.elementAtOrError(1)
175+
.test()
176+
.assertFailure(NoSuchElementException.class);
177+
}
138178
}

src/test/java/io/reactivex/internal/operators/observable/ObservableElementAtTest.java

Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -126,4 +126,44 @@ public void elementAtOrErrorError() {
126126
.assertErrorMessage("error")
127127
.assertError(RuntimeException.class);
128128
}
129+
130+
@Test
131+
public void elementAtIndex0OnEmptySource() {
132+
Observable.empty()
133+
.elementAt(0)
134+
.test()
135+
.assertResult();
136+
}
137+
138+
@Test
139+
public void elementAtIndex0WithDefaultOnEmptySource() {
140+
Observable.empty()
141+
.elementAt(0, 5)
142+
.test()
143+
.assertResult(5);
144+
}
145+
146+
@Test
147+
public void elementAtIndex1OnEmptySource() {
148+
Observable.empty()
149+
.elementAt(1)
150+
.test()
151+
.assertResult();
152+
}
153+
154+
@Test
155+
public void elementAtIndex1WithDefaultOnEmptySource() {
156+
Observable.empty()
157+
.elementAt(1, 10)
158+
.test()
159+
.assertResult(10);
160+
}
161+
162+
@Test
163+
public void elementAtOrErrorIndex1OnEmptySource() {
164+
Observable.empty()
165+
.elementAtOrError(1)
166+
.test()
167+
.assertFailure(NoSuchElementException.class);
168+
}
129169
}

0 commit comments

Comments
 (0)