Skip to content

Commit c030483

Browse files
vanniktechakarnokd
authored andcommitted
2.x: Add Create test with CancelAble for all types and add more MaybeCreateTest cases (#4540)
1 parent c60a21a commit c030483

File tree

5 files changed

+245
-0
lines changed

5 files changed

+245
-0
lines changed

src/test/java/io/reactivex/internal/operators/completable/CompletableCreateTest.java

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import io.reactivex.*;
2121
import io.reactivex.disposables.*;
2222
import io.reactivex.exceptions.TestException;
23+
import io.reactivex.functions.Cancellable;
2324

2425
public class CompletableCreateTest {
2526

@@ -48,6 +49,34 @@ public void subscribe(CompletableEmitter e) throws Exception {
4849
assertTrue(d.isDisposed());
4950
}
5051

52+
@Test
53+
public void basicWithCancellable() {
54+
final Disposable d1 = Disposables.empty();
55+
final Disposable d2 = Disposables.empty();
56+
57+
Completable.create(new CompletableOnSubscribe() {
58+
@Override
59+
public void subscribe(CompletableEmitter e) throws Exception {
60+
e.setDisposable(d1);
61+
e.setCancellable(new Cancellable() {
62+
@Override
63+
public void cancel() throws Exception {
64+
d2.dispose();
65+
}
66+
});
67+
68+
e.onComplete();
69+
e.onError(new TestException());
70+
e.onComplete();
71+
}
72+
})
73+
.test()
74+
.assertResult();
75+
76+
assertTrue(d1.isDisposed());
77+
assertTrue(d2.isDisposed());
78+
}
79+
5180
@Test
5281
public void basicWithError() {
5382
final Disposable d = Disposables.empty();

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

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
import io.reactivex.*;
2222
import io.reactivex.disposables.*;
2323
import io.reactivex.exceptions.TestException;
24+
import io.reactivex.functions.Cancellable;
2425
import io.reactivex.internal.subscriptions.BooleanSubscription;
2526

2627
public class FlowableCreateTest {
@@ -63,6 +64,39 @@ public void subscribe(FlowableEmitter<Integer> e) throws Exception {
6364
assertTrue(d.isDisposed());
6465
}
6566

67+
@Test
68+
public void basicWithCancellable() {
69+
final Disposable d1 = Disposables.empty();
70+
final Disposable d2 = Disposables.empty();
71+
72+
Flowable.<Integer>create(new FlowableOnSubscribe<Integer>() {
73+
@Override
74+
public void subscribe(FlowableEmitter<Integer> e) throws Exception {
75+
e.setDisposable(d1);
76+
e.setCancellable(new Cancellable() {
77+
@Override
78+
public void cancel() throws Exception {
79+
d2.dispose();
80+
}
81+
});
82+
83+
e.onNext(1);
84+
e.onNext(2);
85+
e.onNext(3);
86+
e.onComplete();
87+
e.onError(new TestException());
88+
e.onNext(4);
89+
e.onError(new TestException());
90+
e.onComplete();
91+
}
92+
}, FlowableEmitter.BackpressureMode.BUFFER)
93+
.test()
94+
.assertResult(1, 2, 3);
95+
96+
assertTrue(d1.isDisposed());
97+
assertTrue(d2.isDisposed());
98+
}
99+
66100
@Test
67101
public void basicWithError() {
68102
final Disposable d = Disposables.empty();

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

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import io.reactivex.*;
2121
import io.reactivex.disposables.*;
2222
import io.reactivex.exceptions.TestException;
23+
import io.reactivex.functions.Cancellable;
2324

2425
public class ObservableCreateTest {
2526

@@ -53,6 +54,39 @@ public void subscribe(ObservableEmitter<Integer> e) throws Exception {
5354
assertTrue(d.isDisposed());
5455
}
5556

57+
@Test
58+
public void basicWithCancellable() {
59+
final Disposable d1 = Disposables.empty();
60+
final Disposable d2 = Disposables.empty();
61+
62+
Observable.<Integer>create(new ObservableOnSubscribe<Integer>() {
63+
@Override
64+
public void subscribe(ObservableEmitter<Integer> e) throws Exception {
65+
e.setDisposable(d1);
66+
e.setCancellable(new Cancellable() {
67+
@Override
68+
public void cancel() throws Exception {
69+
d2.dispose();
70+
}
71+
});
72+
73+
e.onNext(1);
74+
e.onNext(2);
75+
e.onNext(3);
76+
e.onComplete();
77+
e.onError(new TestException());
78+
e.onNext(4);
79+
e.onError(new TestException());
80+
e.onComplete();
81+
}
82+
})
83+
.test()
84+
.assertResult(1, 2, 3);
85+
86+
assertTrue(d1.isDisposed());
87+
assertTrue(d2.isDisposed());
88+
}
89+
5690
@Test
5791
public void basicWithError() {
5892
final Disposable d = Disposables.empty();

src/test/java/io/reactivex/internal/operators/single/SingleCreateTest.java

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
import io.reactivex.*;
2121
import io.reactivex.disposables.*;
2222
import io.reactivex.exceptions.TestException;
23+
import io.reactivex.functions.Cancellable;
2324

2425
public class SingleCreateTest {
2526

@@ -49,6 +50,35 @@ public void subscribe(SingleEmitter<Integer> e) throws Exception {
4950
assertTrue(d.isDisposed());
5051
}
5152

53+
@Test
54+
public void basicWithCancellable() {
55+
final Disposable d1 = Disposables.empty();
56+
final Disposable d2 = Disposables.empty();
57+
58+
Single.<Integer>create(new SingleOnSubscribe<Integer>() {
59+
@Override
60+
public void subscribe(SingleEmitter<Integer> e) throws Exception {
61+
e.setDisposable(d1);
62+
e.setCancellable(new Cancellable() {
63+
@Override
64+
public void cancel() throws Exception {
65+
d2.dispose();
66+
}
67+
});
68+
69+
e.onSuccess(1);
70+
e.onError(new TestException());
71+
e.onSuccess(2);
72+
e.onError(new TestException());
73+
}
74+
})
75+
.test()
76+
.assertResult(1);
77+
78+
assertTrue(d1.isDisposed());
79+
assertTrue(d2.isDisposed());
80+
}
81+
5282
@Test
5383
public void basicWithError() {
5484
final Disposable d = Disposables.empty();
Lines changed: 118 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,118 @@
1+
/**
2+
* Copyright 2016 Netflix, Inc.
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in
5+
* compliance with the License. You may obtain a copy of the License at
6+
*
7+
* http://www.apache.org/licenses/LICENSE-2.0
8+
*
9+
* Unless required by applicable law or agreed to in writing, software distributed under the License is
10+
* distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See
11+
* the License for the specific language governing permissions and limitations under the License.
12+
*/
13+
14+
package io.reactivex.maybe;
15+
16+
import static org.junit.Assert.assertTrue;
17+
18+
import org.junit.Test;
19+
20+
import io.reactivex.*;
21+
import io.reactivex.disposables.*;
22+
import io.reactivex.exceptions.TestException;
23+
import io.reactivex.functions.Cancellable;
24+
25+
public class MaybeCreateTest {
26+
@Test(expected = NullPointerException.class)
27+
public void nullArgument() {
28+
Maybe.create(null);
29+
}
30+
31+
@Test
32+
public void basic() {
33+
final Disposable d = Disposables.empty();
34+
35+
Maybe.<Integer>create(new MaybeOnSubscribe<Integer>() {
36+
@Override
37+
public void subscribe(MaybeEmitter<Integer> e) throws Exception {
38+
e.setDisposable(d);
39+
40+
e.onSuccess(1);
41+
e.onError(new TestException());
42+
e.onSuccess(2);
43+
e.onError(new TestException());
44+
}
45+
}).test().assertResult(1);
46+
47+
assertTrue(d.isDisposed());
48+
}
49+
50+
@Test
51+
public void basicWithCancellable() {
52+
final Disposable d1 = Disposables.empty();
53+
final Disposable d2 = Disposables.empty();
54+
55+
Maybe.<Integer>create(new MaybeOnSubscribe<Integer>() {
56+
@Override
57+
public void subscribe(MaybeEmitter<Integer> e) throws Exception {
58+
e.setDisposable(d1);
59+
e.setCancellable(new Cancellable() {
60+
@Override
61+
public void cancel() throws Exception {
62+
d2.dispose();
63+
}
64+
});
65+
66+
e.onSuccess(1);
67+
e.onError(new TestException());
68+
e.onSuccess(2);
69+
e.onError(new TestException());
70+
}
71+
}).test().assertResult(1);
72+
73+
assertTrue(d1.isDisposed());
74+
assertTrue(d2.isDisposed());
75+
}
76+
77+
@Test
78+
public void basicWithError() {
79+
final Disposable d = Disposables.empty();
80+
81+
Maybe.<Integer>create(new MaybeOnSubscribe<Integer>() {
82+
@Override
83+
public void subscribe(MaybeEmitter<Integer> e) throws Exception {
84+
e.setDisposable(d);
85+
86+
e.onError(new TestException());
87+
e.onSuccess(2);
88+
e.onError(new TestException());
89+
}
90+
}).test().assertFailure(TestException.class);
91+
92+
assertTrue(d.isDisposed());
93+
}
94+
95+
96+
@Test
97+
public void basicWithCompletion() {
98+
final Disposable d = Disposables.empty();
99+
100+
Maybe.<Integer>create(new MaybeOnSubscribe<Integer>() {
101+
@Override
102+
public void subscribe(MaybeEmitter<Integer> e) throws Exception {
103+
e.setDisposable(d);
104+
105+
e.onComplete();
106+
e.onSuccess(2);
107+
e.onError(new TestException());
108+
}
109+
}).test().assertComplete();
110+
111+
assertTrue(d.isDisposed());
112+
}
113+
114+
@Test(expected = IllegalArgumentException.class)
115+
public void unsafeCreate() {
116+
Maybe.unsafeCreate(Maybe.just(1));
117+
}
118+
}

0 commit comments

Comments
 (0)