1
+ /**
2
+ * Copyright (c) 2016-present, RxJava Contributors.
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
+
1
14
package io .reactivex ;
2
15
3
- import io .reactivex .exceptions .TestException ;
16
+ import static org .junit .Assert .*;
17
+
4
18
import org .junit .Test ;
5
19
6
- import static org .junit .Assert .*;
20
+ import io .reactivex .exceptions .TestException ;
21
+ import io .reactivex .parallel .*;
7
22
8
23
public final class ConverterTest {
9
24
@@ -70,7 +85,7 @@ public Integer apply(Maybe<Integer> v) {
70
85
@ Test
71
86
public void completableConverterThrows () {
72
87
try {
73
- Completable .complete ().as (new CompletableConverter () {
88
+ Completable .complete ().as (new CompletableConverter < Completable > () {
74
89
@ Override
75
90
public Completable apply (Completable v ) {
76
91
throw new TestException ("Forced failure" );
@@ -84,32 +99,44 @@ public Completable apply(Completable v) {
84
99
85
100
// Test demos for signature generics in compose() methods. Just needs to compile.
86
101
102
+ @ SuppressWarnings ({ "rawtypes" , "unchecked" })
87
103
@ Test
88
104
public void observableGenericsSignatureTest () {
89
105
A <String , Integer > a = new A <String , Integer >() { };
90
106
91
- Observable .just (a ).as (ConverterTest .< Integer > testObservableConverterCreator ());
107
+ Observable .just (a ).as (( ObservableConverter ) ConverterTest .testObservableConverterCreator ());
92
108
}
93
109
110
+ @ SuppressWarnings ({ "rawtypes" , "unchecked" })
94
111
@ Test
95
112
public void singleGenericsSignatureTest () {
96
113
A <String , Integer > a = new A <String , Integer >() { };
97
114
98
- Single .just (a ).as (ConverterTest .<Integer >testSingleConverterCreator ());
115
+ Single .just (a ).as (( SingleConverter ) ConverterTest .<String >testSingleConverterCreator ());
99
116
}
100
117
118
+ @ SuppressWarnings ({ "rawtypes" , "unchecked" })
101
119
@ Test
102
120
public void maybeGenericsSignatureTest () {
103
121
A <String , Integer > a = new A <String , Integer >() { };
104
122
105
- Maybe .just (a ).as (ConverterTest .<Integer >testMaybeConverterCreator ());
123
+ Maybe .just (a ).as (( MaybeConverter ) ConverterTest .<String >testMaybeConverterCreator ());
106
124
}
107
125
126
+ @ SuppressWarnings ({ "rawtypes" , "unchecked" })
108
127
@ Test
109
128
public void flowableGenericsSignatureTest () {
110
129
A <String , Integer > a = new A <String , Integer >() { };
111
130
112
- Flowable .just (a ).as (ConverterTest .<Integer >testFlowableConverterCreator ());
131
+ Flowable .just (a ).as ((FlowableConverter )ConverterTest .<String >testFlowableConverterCreator ());
132
+ }
133
+
134
+ @ SuppressWarnings ({ "rawtypes" , "unchecked" })
135
+ @ Test
136
+ public void parallelFlowableGenericsSignatureTest () {
137
+ A <String , Integer > a = new A <String , Integer >() { };
138
+
139
+ Flowable .just (a ).parallel ().as ((ParallelFlowableConverter )ConverterTest .<String >testParallelFlowableConverterCreator ());
113
140
}
114
141
115
142
@ Test
@@ -140,6 +167,12 @@ public void compositeTest() {
140
167
.as (converter )
141
168
.test ()
142
169
.assertComplete ();
170
+
171
+ Flowable .just (1 )
172
+ .parallel ()
173
+ .as (converter )
174
+ .test ()
175
+ .assertValue (1 );
143
176
}
144
177
145
178
interface A <T , R > { }
@@ -185,11 +218,28 @@ public B<T> apply(Flowable<A<T, ?>> a) {
185
218
};
186
219
}
187
220
188
- private static class CompositeConverter implements ObservableConverter <Integer , Flowable <Integer >>,
221
+ private static <T > ParallelFlowableConverter <A <T , ?>, B <T >> testParallelFlowableConverterCreator () {
222
+ return new ParallelFlowableConverter <A <T , ?>, B <T >>() {
223
+ @ Override
224
+ public B <T > apply (ParallelFlowable <A <T , ?>> a ) {
225
+ return new B <T >() {
226
+ };
227
+ }
228
+ };
229
+ }
230
+
231
+ static class CompositeConverter
232
+ implements ObservableConverter <Integer , Flowable <Integer >>,
233
+ ParallelFlowableConverter <Integer , Flowable <Integer >>,
189
234
FlowableConverter <Integer , Observable <Integer >>,
190
235
MaybeConverter <Integer , Flowable <Integer >>,
191
236
SingleConverter <Integer , Flowable <Integer >>,
192
237
CompletableConverter <Flowable <Integer >> {
238
+ @ Override
239
+ public Flowable <Integer > apply (ParallelFlowable <Integer > upstream ) throws Exception {
240
+ return upstream .sequential ();
241
+ }
242
+
193
243
@ Override
194
244
public Flowable <Integer > apply (Completable upstream ) throws Exception {
195
245
return upstream .toFlowable ();
0 commit comments