Skip to content

Commit 79c3aab

Browse files
committed
3.4 Added switchMap examples
1 parent 238d568 commit 79c3aab

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package itrx.chapter3.combining;
2+
3+
import java.util.Arrays;
4+
import java.util.concurrent.TimeUnit;
5+
6+
import org.junit.Test;
7+
8+
import rx.Observable;
9+
import rx.observers.TestSubscriber;
10+
import rx.schedulers.Schedulers;
11+
import rx.schedulers.TestScheduler;
12+
13+
public class SwitchMapTest {
14+
15+
public void example() {
16+
Observable.interval(100, TimeUnit.MILLISECONDS)
17+
.switchMap(i ->
18+
Observable.interval(30, TimeUnit.MILLISECONDS)
19+
.map(l -> i))
20+
.take(9)
21+
.subscribe(System.out::println);
22+
23+
// 0
24+
// 0
25+
// 0
26+
// 1
27+
// 1
28+
// 1
29+
// 2
30+
// 2
31+
// 2
32+
}
33+
34+
35+
//
36+
// Test
37+
//
38+
39+
@Test
40+
public void test() {
41+
TestSubscriber<Object> tester = new TestSubscriber<>();
42+
TestScheduler scheduler = Schedulers.test();
43+
44+
Observable.interval(100, TimeUnit.MILLISECONDS, scheduler)
45+
.switchMap(i ->
46+
Observable.interval(30, TimeUnit.MILLISECONDS, scheduler)
47+
.map(l -> i))
48+
.take(9)
49+
.distinctUntilChanged()
50+
.subscribe(tester);
51+
52+
scheduler.advanceTimeBy(400, TimeUnit.MILLISECONDS);
53+
tester.assertReceivedOnNext(Arrays.asList(0L, 1L, 2L));
54+
tester.assertTerminalEvent();
55+
tester.assertNoErrors();
56+
}
57+
58+
}

0 commit comments

Comments
 (0)