Skip to content

Commit 04043f3

Browse files
committed
Examples 2.3 Inspection
1 parent 3b1f243 commit 04043f3

File tree

7 files changed

+642
-0
lines changed

7 files changed

+642
-0
lines changed
Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,200 @@
1+
package itrx.chapter2.inspection;
2+
3+
import static org.junit.Assert.*;
4+
5+
import java.util.Arrays;
6+
import java.util.concurrent.TimeUnit;
7+
8+
import org.junit.Test;
9+
10+
import rx.Observable;
11+
import rx.Subscription;
12+
import rx.observers.TestSubscriber;
13+
import rx.schedulers.Schedulers;
14+
import rx.schedulers.TestScheduler;
15+
16+
public class AllTest {
17+
18+
public void exampleAll() {
19+
Observable<Integer> values = Observable.create(o -> {
20+
o.onNext(0);
21+
o.onNext(10);
22+
o.onNext(10);
23+
o.onNext(2);
24+
o.onCompleted();
25+
});
26+
27+
28+
Subscription evenNumbers = values
29+
.all(i -> i % 2 == 0)
30+
.subscribe(
31+
v -> System.out.println(v),
32+
e -> System.out.println("Error: " + e),
33+
() -> System.out.println("Completed")
34+
);
35+
36+
// true
37+
// Completed
38+
}
39+
40+
public void exampleAllEarlyFalse() {
41+
Observable<Long> values = Observable.interval(150, TimeUnit.MILLISECONDS).take(5);
42+
43+
Subscription subscription = values
44+
.all(i -> i<3)
45+
.subscribe(
46+
v -> System.out.println("All: " + v),
47+
e -> System.out.println("All: Error: " + e),
48+
() -> System.out.println("All: Completed")
49+
);
50+
Subscription subscription2 = values
51+
.subscribe(
52+
v -> System.out.println(v),
53+
e -> System.out.println("Error: " + e),
54+
() -> System.out.println("Completed")
55+
);
56+
57+
// 0
58+
// 1
59+
// 2
60+
// All: false
61+
// All: Completed
62+
// 3
63+
// 4
64+
// Completed
65+
}
66+
67+
public void exampleAllError() {
68+
Observable<Integer> values = Observable.create(o -> {
69+
o.onNext(0);
70+
o.onNext(2);
71+
o.onError(new Exception());
72+
});
73+
74+
Subscription subscription = values
75+
.all(i -> i % 2 == 0)
76+
.subscribe(
77+
v -> System.out.println(v),
78+
e -> System.out.println("Error: " + e),
79+
() -> System.out.println("Completed")
80+
);
81+
82+
// Error: java.lang.Exception
83+
}
84+
85+
public void exampleAllErrorAfterComplete() {
86+
Observable<Integer> values = Observable.create(o -> {
87+
o.onNext(1);
88+
o.onNext(2);
89+
o.onError(new Exception());
90+
});
91+
92+
Subscription subscription = values
93+
.all(i -> i % 2 == 0)
94+
.subscribe(
95+
v -> System.out.println(v),
96+
e -> System.out.println("Error: " + e),
97+
() -> System.out.println("Completed")
98+
);
99+
100+
// false
101+
// Completed
102+
}
103+
104+
105+
106+
//
107+
// Tests for examples
108+
//
109+
110+
@Test
111+
public void testAll() {
112+
TestSubscriber<Boolean> tester = new TestSubscriber<Boolean>();
113+
114+
Observable<Integer> values = Observable.create(o -> {
115+
o.onNext(0);
116+
o.onNext(10);
117+
o.onNext(10);
118+
o.onNext(2);
119+
o.onCompleted();
120+
});
121+
122+
123+
Subscription evenNumbers = values
124+
.all(i -> i % 2 == 0)
125+
.subscribe(tester);
126+
127+
tester.assertReceivedOnNext(Arrays.asList(true));
128+
tester.assertTerminalEvent();
129+
tester.assertNoErrors();
130+
}
131+
132+
@Test
133+
public void testAllEarlyFalse() {
134+
TestSubscriber<Long> testerSrc = new TestSubscriber<Long>();
135+
TestSubscriber<Boolean> testerAll = new TestSubscriber<Boolean>();
136+
TestScheduler scheduler = Schedulers.test();
137+
138+
Observable<Long> values =
139+
Observable.interval(100, TimeUnit.MILLISECONDS, scheduler)
140+
.take(5);
141+
142+
Subscription subscription = values
143+
.all(i -> i<3)
144+
.subscribe(testerAll);
145+
Subscription subscription2 = values
146+
.subscribe(testerSrc);
147+
148+
scheduler.advanceTimeBy(450, TimeUnit.MILLISECONDS);
149+
150+
testerAll.assertReceivedOnNext(Arrays.asList(false));
151+
testerAll.assertTerminalEvent();
152+
testerAll.assertNoErrors();
153+
testerSrc.assertReceivedOnNext(Arrays.asList(0L, 1L, 2L, 3L));
154+
155+
scheduler.advanceTimeBy(500, TimeUnit.MILLISECONDS);
156+
157+
testerSrc.assertReceivedOnNext(Arrays.asList(0L, 1L, 2L, 3L, 4L));
158+
testerSrc.assertTerminalEvent();
159+
testerSrc.assertNoErrors();
160+
}
161+
162+
@Test
163+
public void testAllError() {
164+
TestSubscriber<Boolean> tester = new TestSubscriber();
165+
166+
Observable<Integer> values = Observable.create(o -> {
167+
o.onNext(0);
168+
o.onNext(2);
169+
o.onError(new Exception());
170+
});
171+
172+
Subscription subscription = values
173+
.all(i -> i % 2 == 0)
174+
.subscribe(tester);
175+
176+
tester.assertReceivedOnNext(Arrays.asList());
177+
tester.assertTerminalEvent();
178+
assertEquals(tester.getOnErrorEvents().size(), 1);
179+
}
180+
181+
@Test
182+
public void testAllErrorAfterComplete() {
183+
TestSubscriber<Boolean> tester = new TestSubscriber();
184+
185+
Observable<Integer> values = Observable.create(o -> {
186+
o.onNext(1);
187+
o.onNext(2);
188+
o.onError(new Exception());
189+
});
190+
191+
Subscription subscription = values
192+
.all(i -> i % 2 == 0)
193+
.subscribe(tester);
194+
195+
tester.assertReceivedOnNext(Arrays.asList(false));
196+
tester.assertTerminalEvent();
197+
tester.assertNoErrors();
198+
}
199+
200+
}
Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
package itrx.chapter2.inspection;
2+
3+
import static org.junit.Assert.*;
4+
5+
import java.util.Arrays;
6+
import java.util.concurrent.TimeUnit;
7+
8+
import org.junit.Test;
9+
10+
import rx.Observable;
11+
import rx.Subscription;
12+
import rx.observers.TestSubscriber;
13+
import rx.schedulers.Schedulers;
14+
import rx.schedulers.TestScheduler;
15+
16+
public class ContainsTest {
17+
18+
public void exampleContains() {
19+
Observable<Long> values = Observable.interval(100, TimeUnit.MILLISECONDS);
20+
21+
Subscription subscription = values
22+
.contains(4L)
23+
.subscribe(
24+
v -> System.out.println(v),
25+
e -> System.out.println("Error: " + e),
26+
() -> System.out.println("Completed")
27+
);
28+
29+
// true
30+
// Completed
31+
}
32+
33+
@Test
34+
public void test() {
35+
TestSubscriber<Boolean> tester = new TestSubscriber<Boolean>();
36+
TestScheduler scheduler = Schedulers.test();
37+
38+
Observable<Long> values = Observable.interval(100, TimeUnit.MILLISECONDS, scheduler);
39+
40+
Subscription subscription = values
41+
.contains(4L)
42+
.subscribe(tester);
43+
44+
scheduler.advanceTimeBy(1000, TimeUnit.MILLISECONDS);
45+
46+
tester.assertReceivedOnNext(Arrays.asList(true));
47+
tester.assertTerminalEvent();
48+
tester.assertNoErrors();
49+
}
50+
51+
}
Lines changed: 76 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
package itrx.chapter2.inspection;
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.Subscription;
11+
import rx.observers.TestSubscriber;
12+
13+
public class DefaultIfEmptyTest {
14+
15+
public void exampleDefaultIfEmpty() {
16+
Observable<Integer> values = Observable.range(0,10);
17+
18+
Subscription subscription = values
19+
.take(0)
20+
.defaultIfEmpty(2)
21+
.subscribe(
22+
v -> System.out.println(v),
23+
e -> System.out.println("Error: " + e),
24+
() -> System.out.println("Completed")
25+
);
26+
27+
// 2
28+
// Completed
29+
}
30+
31+
public void exampleDefaultIfEmptyError() {
32+
Observable<Integer> values = Observable.error(new Exception());
33+
34+
Subscription subscription = values
35+
.defaultIfEmpty(2)
36+
.subscribe(
37+
v -> System.out.println(v),
38+
e -> System.out.println("Error: " + e),
39+
() -> System.out.println("Completed")
40+
);
41+
42+
// Error: java.lang.Exception
43+
}
44+
45+
@Test
46+
public void testDefaultIfEmpty() {
47+
TestSubscriber<Integer> tester = new TestSubscriber<Integer>();
48+
49+
Observable<Integer> values = Observable.range(0,10);
50+
51+
Subscription subscription = values
52+
.take(0)
53+
.defaultIfEmpty(2)
54+
.subscribe(tester);
55+
56+
tester.assertReceivedOnNext(Arrays.asList(2));
57+
tester.assertTerminalEvent();
58+
tester.assertNoErrors();
59+
}
60+
61+
@Test
62+
public void testDefaultIfEmptyError() {
63+
TestSubscriber<Integer> tester = new TestSubscriber<Integer>();
64+
65+
Observable<Integer> values = Observable.error(new Exception());
66+
67+
Subscription subscription = values
68+
.defaultIfEmpty(2)
69+
.subscribe(tester);
70+
71+
tester.assertReceivedOnNext(Arrays.asList());
72+
tester.assertTerminalEvent();
73+
assertEquals(tester.getOnErrorEvents().size(), 1);
74+
}
75+
76+
}

0 commit comments

Comments
 (0)