Skip to content

Commit d608e8f

Browse files
committed
Examples 2.5 Transforming
1 parent 111ff51 commit d608e8f

File tree

5 files changed

+617
-0
lines changed

5 files changed

+617
-0
lines changed
Lines changed: 124 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,124 @@
1+
package itrx.chapter2.transforming;
2+
3+
import static org.junit.Assert.*;
4+
5+
import java.util.Arrays;
6+
7+
import org.junit.Test;
8+
9+
import rx.Observable;
10+
import rx.Subscriber;
11+
import rx.observers.TestSubscriber;
12+
13+
public class CastTypeOfTest {
14+
15+
private static class PrintSubscriber extends Subscriber<Object>{
16+
private final String name;
17+
public PrintSubscriber(String name) {
18+
this.name = name;
19+
}
20+
@Override
21+
public void onCompleted() {
22+
System.out.println(name + ": Completed");
23+
}
24+
@Override
25+
public void onError(Throwable e) {
26+
System.out.println(name + ": Error: " + e);
27+
}
28+
@Override
29+
public void onNext(Object v) {
30+
System.out.println(name + ": " + v);
31+
}
32+
}
33+
34+
35+
public void exampleCast() {
36+
Observable<Object> values = Observable.just(0, 1, 2, 3);
37+
38+
values
39+
.cast(Integer.class)
40+
.subscribe(new PrintSubscriber("Map"));
41+
42+
// Map: 0
43+
// Map: 1
44+
// Map: 2
45+
// Map: 3
46+
// Map: Completed
47+
}
48+
49+
public void exampleCastFail() {
50+
Observable<Object> values = Observable.just(0, 1, 2, "3");
51+
52+
values
53+
.cast(Integer.class)
54+
.subscribe(new PrintSubscriber("Map"));
55+
56+
// Map: 0
57+
// Map: 1
58+
// Map: 2
59+
// Map: Error: java.lang.ClassCastException: Cannot cast java.lang.String to java.lang.Integer
60+
}
61+
62+
public void exampleTypeOf() {
63+
Observable<Object> values = Observable.just(0, 1, "2", 3);
64+
65+
values
66+
.ofType(Integer.class)
67+
.subscribe(new PrintSubscriber("Map"));
68+
69+
// Map: 0
70+
// Map: 1
71+
// Map: 3
72+
// Map: Completed
73+
}
74+
75+
76+
//
77+
// Tests
78+
//
79+
80+
@Test
81+
public void testCast() {
82+
TestSubscriber<Integer> tester = new TestSubscriber<>();
83+
84+
Observable<Object> values = Observable.just(0, 1, 2, 3);
85+
86+
values
87+
.cast(Integer.class)
88+
.subscribe(tester);
89+
90+
tester.assertReceivedOnNext(Arrays.asList(0,1,2,3));
91+
tester.assertTerminalEvent();
92+
tester.assertNoErrors();
93+
}
94+
95+
@Test
96+
public void testCastFail() {
97+
TestSubscriber<Integer> tester = new TestSubscriber<>();
98+
99+
Observable<Object> values = Observable.just(0, 1, 2, "3");
100+
101+
values
102+
.cast(Integer.class)
103+
.subscribe(tester);
104+
105+
tester.assertReceivedOnNext(Arrays.asList(0,1,2));
106+
tester.assertTerminalEvent();
107+
assertEquals(tester.getOnErrorEvents().size(), 1); // received 1 error
108+
}
109+
110+
@Test
111+
public void testTypeOf() {
112+
TestSubscriber<Integer> tester = new TestSubscriber<>();
113+
114+
Observable<Object> values = Observable.just(0, 1, "2", 3);
115+
116+
values
117+
.ofType(Integer.class)
118+
.subscribe(tester);
119+
120+
tester.assertReceivedOnNext(Arrays.asList(0,1,3));
121+
tester.assertTerminalEvent();
122+
tester.assertNoErrors();
123+
}
124+
}
Lines changed: 109 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,109 @@
1+
package itrx.chapter2.transforming;
2+
3+
import static org.junit.Assert.assertEquals;
4+
5+
import java.util.concurrent.TimeUnit;
6+
7+
import org.junit.Test;
8+
9+
import rx.Observable;
10+
import rx.Subscriber;
11+
import rx.observers.TestSubscriber;
12+
import rx.schedulers.Schedulers;
13+
import rx.schedulers.TestScheduler;
14+
import rx.schedulers.TimeInterval;
15+
import rx.schedulers.Timestamped;
16+
17+
public class FlatMapTest {
18+
19+
private static class PrintSubscriber extends Subscriber<Object>{
20+
private final String name;
21+
public PrintSubscriber(String name) {
22+
this.name = name;
23+
}
24+
@Override
25+
public void onCompleted() {
26+
System.out.println(name + ": Completed");
27+
}
28+
@Override
29+
public void onError(Throwable e) {
30+
System.out.println(name + ": Error: " + e);
31+
}
32+
@Override
33+
public void onNext(Object v) {
34+
System.out.println(name + ": " + v);
35+
}
36+
}
37+
38+
public void exampleTimestamp() {
39+
Observable<Long> values = Observable.interval(100, TimeUnit.MILLISECONDS);
40+
41+
values.take(3)
42+
.timestamp()
43+
.subscribe(new PrintSubscriber("Timestamp"));
44+
45+
// Timestamp: Timestamped(timestampMillis = 1428611094943, value = 0)
46+
// Timestamp: Timestamped(timestampMillis = 1428611095037, value = 1)
47+
// Timestamp: Timestamped(timestampMillis = 1428611095136, value = 2)
48+
// Timestamp: Completed
49+
}
50+
51+
public void exampleTimeInteval() {
52+
Observable<Long> values = Observable.interval(100, TimeUnit.MILLISECONDS);
53+
54+
values.take(3)
55+
.timeInterval()
56+
.subscribe(new PrintSubscriber("TimeInterval"));
57+
58+
// TimeInterval: TimeInterval [intervalInMilliseconds=131, value=0]
59+
// TimeInterval: TimeInterval [intervalInMilliseconds=75, value=1]
60+
// TimeInterval: TimeInterval [intervalInMilliseconds=100, value=2]
61+
// TimeInterval: Completed
62+
}
63+
64+
65+
//
66+
// Tests
67+
//
68+
69+
@Test
70+
public void testTimestamp() {
71+
TestSubscriber<Timestamped<Long>> tester = new TestSubscriber<>();
72+
TestScheduler scheduler = Schedulers.test();
73+
74+
Observable<Long> values = Observable.interval(100, TimeUnit.MILLISECONDS, scheduler);
75+
76+
values.take(3)
77+
.timestamp(scheduler)
78+
.subscribe(tester);
79+
80+
scheduler.advanceTimeBy(1, TimeUnit.SECONDS);
81+
82+
assertEquals(tester.getOnNextEvents().get(0).getTimestampMillis(), 100);
83+
assertEquals(tester.getOnNextEvents().get(1).getTimestampMillis(), 200);
84+
assertEquals(tester.getOnNextEvents().get(2).getTimestampMillis(), 300);
85+
tester.assertTerminalEvent();
86+
tester.assertNoErrors();
87+
}
88+
89+
@Test
90+
public void testTimeInteval() {
91+
TestSubscriber<TimeInterval<Long>> tester = new TestSubscriber<>();
92+
TestScheduler scheduler = Schedulers.test();
93+
94+
Observable<Long> values = Observable.interval(100, TimeUnit.MILLISECONDS, scheduler);
95+
96+
values.take(3)
97+
.timeInterval(scheduler)
98+
.subscribe(tester);
99+
100+
scheduler.advanceTimeBy(1, TimeUnit.SECONDS);
101+
102+
assertEquals(tester.getOnNextEvents().get(0).getIntervalInMilliseconds(), 100);
103+
assertEquals(tester.getOnNextEvents().get(1).getIntervalInMilliseconds(), 100);
104+
assertEquals(tester.getOnNextEvents().get(2).getIntervalInMilliseconds(), 100);
105+
tester.assertTerminalEvent();
106+
tester.assertNoErrors();
107+
}
108+
109+
}
Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package itrx.chapter2.transforming;
2+
3+
import java.util.Arrays;
4+
5+
import org.junit.Test;
6+
7+
import rx.Observable;
8+
import rx.Subscriber;
9+
import rx.observers.TestSubscriber;
10+
11+
public class MapTest {
12+
13+
private static class PrintSubscriber extends Subscriber<Object>{
14+
private final String name;
15+
public PrintSubscriber(String name) {
16+
this.name = name;
17+
}
18+
@Override
19+
public void onCompleted() {
20+
System.out.println(name + ": Completed");
21+
}
22+
@Override
23+
public void onError(Throwable e) {
24+
System.out.println(name + ": Error: " + e);
25+
}
26+
@Override
27+
public void onNext(Object v) {
28+
System.out.println(name + ": " + v);
29+
}
30+
}
31+
32+
public void exampleMap() {
33+
Observable<Integer> values = Observable.range(0,4);
34+
35+
values
36+
.map(i -> i + 3)
37+
.subscribe(new PrintSubscriber("Map"));
38+
39+
// Map: 3
40+
// Map: 4
41+
// Map: 5
42+
// Map: 6
43+
// Map: Completed
44+
}
45+
46+
public void exampleMap2() {
47+
Observable<Integer> values =
48+
Observable.just("0", "1", "2", "3")
49+
.map(s -> Integer.parseInt(s));
50+
51+
values.subscribe(new PrintSubscriber("Map"));
52+
53+
// Map: 0
54+
// Map: 1
55+
// Map: 2
56+
// Map: 3
57+
// Map: Completed
58+
}
59+
60+
61+
//
62+
// Tests
63+
//
64+
65+
@Test
66+
public void testMap() {
67+
TestSubscriber<Integer> tester = new TestSubscriber<>();
68+
69+
Observable<Integer> values = Observable.range(0,4);
70+
71+
values
72+
.map(i -> i + 3)
73+
.subscribe(tester);
74+
75+
tester.assertReceivedOnNext(Arrays.asList(3,4,5,6));
76+
tester.assertTerminalEvent();
77+
tester.assertNoErrors();
78+
}
79+
80+
@Test
81+
public void testMap2() {
82+
TestSubscriber<Integer> tester = new TestSubscriber<>();
83+
84+
Observable<Integer> values =
85+
Observable.just("0", "1", "2", "3")
86+
.map(s -> Integer.parseInt(s));
87+
88+
values.subscribe(tester);
89+
90+
tester.assertReceivedOnNext(Arrays.asList(0,1,2,3));
91+
tester.assertTerminalEvent();
92+
tester.assertNoErrors();
93+
}
94+
95+
}

0 commit comments

Comments
 (0)