11package itrx .chapter3 .combining ;
22
3- import java .io .IOException ;
43import java .util .Arrays ;
54import java .util .concurrent .TimeUnit ;
65
1211import rx .schedulers .TestScheduler ;
1312
1413public class ZipTest {
15-
16- public static void main (String [] args ) throws IOException {
17- new ZipTest ().exampleZipWithIterable ();
18- System .in .read ();
19- }
2014
2115 public void example () {
2216 Observable .zip (
@@ -52,6 +46,35 @@ public void example() {
5246 // 5 - 5
5347 }
5448
49+ public void exampleZipMultiple () {
50+ Observable .zip (
51+ Observable .interval (100 , TimeUnit .MILLISECONDS ),
52+ Observable .interval (150 , TimeUnit .MILLISECONDS ),
53+ Observable .interval (050 , TimeUnit .MILLISECONDS ),
54+ (i1 ,i2 ,i3 ) -> i1 + " - " + i2 + " - " + i3 )
55+ .take (6 )
56+ .subscribe (System .out ::println );
57+
58+ // 0 - 0 - 0
59+ // 1 - 1 - 1
60+ // 2 - 2 - 2
61+ // 3 - 3 - 3
62+ // 4 - 4 - 4
63+ // 5 - 5 - 5
64+ }
65+
66+ public void exampleZipUneven () {
67+ Observable .zip (
68+ Observable .range (0 , 5 ),
69+ Observable .range (0 , 3 ),
70+ Observable .range (0 , 8 ),
71+ (i1 ,i2 ,i3 ) -> i1 + " - " + i2 + " - " + i3 )
72+ .count ()
73+ .subscribe (System .out ::println );
74+
75+ // 3
76+ }
77+
5578 public void exampleZipWith () {
5679 Observable .interval (100 , TimeUnit .MILLISECONDS )
5780 .zipWith (
@@ -107,6 +130,49 @@ public void test() {
107130 "3 - 3"
108131 ));
109132 tester .assertNoErrors ();
133+
134+ tester .unsubscribe ();
135+ }
136+
137+ @ Test
138+ public void testZipMultiple () {
139+ TestSubscriber <String > tester = new TestSubscriber <>();
140+ TestScheduler scheduler = Schedulers .test ();
141+
142+ Observable .zip (
143+ Observable .interval (100 , TimeUnit .MILLISECONDS , scheduler ),
144+ Observable .interval (150 , TimeUnit .MILLISECONDS , scheduler ),
145+ Observable .interval (050 , TimeUnit .MILLISECONDS , scheduler ),
146+ (i1 ,i2 ,i3 ) -> i1 + " - " + i2 + " - " + i3 )
147+ .subscribe (tester );
148+
149+ scheduler .advanceTimeBy (600 , TimeUnit .MILLISECONDS );
150+ tester .assertReceivedOnNext (Arrays .asList (
151+ "0 - 0 - 0" ,
152+ "1 - 1 - 1" ,
153+ "2 - 2 - 2" ,
154+ "3 - 3 - 3"
155+ ));
156+ tester .assertNoErrors ();
157+
158+ tester .unsubscribe ();
159+ }
160+
161+ @ Test
162+ public void testZipUneven () {
163+ TestSubscriber <Integer > tester = new TestSubscriber <>();
164+
165+ Observable .zip (
166+ Observable .range (0 , 5 ),
167+ Observable .range (0 , 3 ),
168+ Observable .range (0 , 8 ),
169+ (i1 ,i2 ,i3 ) -> i1 + " - " + i2 + " - " + i3 )
170+ .count ()
171+ .subscribe (tester );
172+
173+ tester .assertReceivedOnNext (Arrays .asList (3 ));
174+
175+ tester .unsubscribe ();
110176 }
111177
112178 @ Test
@@ -128,6 +194,8 @@ public void testZipWith() {
128194 "3 - 3"
129195 ));
130196 tester .assertNoErrors ();
197+
198+ tester .unsubscribe ();
131199 }
132200
133201 @ Test
@@ -149,6 +217,8 @@ public void testZipWithIterable() {
149217 ));
150218 tester .assertTerminalEvent ();
151219 tester .assertNoErrors ();
220+
221+ tester .unsubscribe ();
152222 }
153223
154224}
0 commit comments