X Tutup
Skip to content

Commit 220df5e

Browse files
committed
Examples 4.2 Testing
1 parent b8aec3a commit 220df5e

File tree

3 files changed

+290
-0
lines changed

3 files changed

+290
-0
lines changed
Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
package itrx.chapter4.testing;
2+
3+
import static org.junit.Assert.assertTrue;
4+
5+
import java.util.ArrayList;
6+
import java.util.Arrays;
7+
import java.util.List;
8+
import java.util.concurrent.TimeUnit;
9+
10+
import org.junit.Test;
11+
12+
import rx.Observable;
13+
import rx.schedulers.TestScheduler;
14+
15+
public class ExampleTest {
16+
17+
@Test
18+
public void test() {
19+
TestScheduler scheduler = new TestScheduler();
20+
List<Long> expected = Arrays.asList(0L, 1L, 2L, 3L, 4L);
21+
List<Long> result = new ArrayList<>();
22+
Observable
23+
.interval(1, TimeUnit.SECONDS, scheduler)
24+
.take(5)
25+
.subscribe(i -> result.add(i));
26+
assertTrue(result.isEmpty());
27+
scheduler.advanceTimeBy(5, TimeUnit.SECONDS);
28+
assertTrue(result.equals(expected));
29+
}
30+
31+
}
Lines changed: 226 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,226 @@
1+
package itrx.chapter4.testing;
2+
3+
import static org.junit.Assert.*;
4+
5+
import java.util.ArrayList;
6+
import java.util.Arrays;
7+
import java.util.List;
8+
import java.util.concurrent.TimeUnit;
9+
10+
import org.junit.Test;
11+
12+
import rx.schedulers.Schedulers;
13+
import rx.schedulers.TestScheduler;
14+
15+
public class TestSchedulerTest {
16+
17+
public void exampleAdvanceTo() {
18+
TestScheduler s = Schedulers.test();
19+
20+
s.createWorker().schedule(
21+
() -> System.out.println("Immediate"));
22+
s.createWorker().schedule(
23+
() -> System.out.println("20s"),
24+
20, TimeUnit.SECONDS);
25+
s.createWorker().schedule(
26+
() -> System.out.println("40s"),
27+
40, TimeUnit.SECONDS);
28+
29+
System.out.println("Advancing to 1ms");
30+
s.advanceTimeTo(1, TimeUnit.MILLISECONDS);
31+
System.out.println("Virtual time: " + s.now());
32+
33+
System.out.println("Advancing to 10s");
34+
s.advanceTimeTo(10, TimeUnit.SECONDS);
35+
System.out.println("Virtual time: " + s.now());
36+
37+
System.out.println("Advancing to 40s");
38+
s.advanceTimeTo(40, TimeUnit.SECONDS);
39+
System.out.println("Virtual time: " + s.now());
40+
41+
// Advancing to 1ms
42+
// Immediate
43+
// Virtual time: 1
44+
// Advancing to 10s
45+
// Virtual time: 10000
46+
// Advancing to 40s
47+
// 20s
48+
// 40s
49+
// Virtual time: 40000
50+
}
51+
52+
public void exampleTimeBy() {
53+
TestScheduler s = Schedulers.test();
54+
55+
s.createWorker().schedule(
56+
() -> System.out.println("Immediate"));
57+
s.createWorker().schedule(
58+
() -> System.out.println("20s"),
59+
20, TimeUnit.SECONDS);
60+
s.createWorker().schedule(
61+
() -> System.out.println("40s"),
62+
40, TimeUnit.SECONDS);
63+
64+
System.out.println("Advancing by 1ms");
65+
s.advanceTimeBy(1, TimeUnit.MILLISECONDS);
66+
System.out.println("Virtual time: " + s.now());
67+
68+
System.out.println("Advancing by 10s");
69+
s.advanceTimeBy(10, TimeUnit.SECONDS);
70+
System.out.println("Virtual time: " + s.now());
71+
72+
System.out.println("Advancing by 40s");
73+
s.advanceTimeBy(40, TimeUnit.SECONDS);
74+
System.out.println("Virtual time: " + s.now());
75+
76+
// Advancing by 1ms
77+
// Immediate
78+
// Virtual time: 1
79+
// Advancing by 10s
80+
// Virtual time: 10001
81+
// Advancing by 40s
82+
// 20s
83+
// 40s
84+
// Virtual time: 50001
85+
}
86+
87+
public void exampleTriggerActions() {
88+
TestScheduler s = Schedulers.test();
89+
90+
s.createWorker().schedule(
91+
() -> System.out.println("Immediate"));
92+
s.createWorker().schedule(
93+
() -> System.out.println("20s"),
94+
20, TimeUnit.SECONDS);
95+
96+
s.triggerActions();
97+
System.out.println("Virtual time: " + s.now());
98+
99+
// Immediate
100+
// Virtual time: 0
101+
}
102+
103+
public void exampleCollision() {
104+
TestScheduler s = Schedulers.test();
105+
106+
s.createWorker().schedule(
107+
() -> System.out.println("First"),
108+
20, TimeUnit.SECONDS);
109+
s.createWorker().schedule(
110+
() -> System.out.println("Second"),
111+
20, TimeUnit.SECONDS);
112+
s.createWorker().schedule(
113+
() -> System.out.println("Third"),
114+
20, TimeUnit.SECONDS);
115+
116+
s.advanceTimeTo(20, TimeUnit.SECONDS);
117+
118+
// First
119+
// Second
120+
// Third
121+
}
122+
123+
124+
//
125+
// Test
126+
//
127+
128+
@Test
129+
public void testAdvanceTo() {
130+
List<String> execution = new ArrayList<>();
131+
TestScheduler scheduler = Schedulers.test();
132+
133+
scheduler.createWorker().schedule(
134+
() -> execution.add("Immediate"));
135+
scheduler.createWorker().schedule(
136+
() -> execution.add("20s"),
137+
20, TimeUnit.SECONDS);
138+
scheduler.createWorker().schedule(
139+
() -> execution.add("40s"),
140+
40, TimeUnit.SECONDS);
141+
142+
143+
assertEquals(0, scheduler.now());
144+
assertEquals(Arrays.asList(), execution);
145+
146+
scheduler.advanceTimeTo(1, TimeUnit.MILLISECONDS);
147+
assertEquals(1, scheduler.now());
148+
assertEquals(Arrays.asList("Immediate"), execution);
149+
150+
scheduler.advanceTimeTo(10, TimeUnit.SECONDS);
151+
assertEquals(10000, scheduler.now());
152+
assertEquals(Arrays.asList("Immediate"), execution);
153+
154+
scheduler.advanceTimeTo(40, TimeUnit.SECONDS);
155+
assertEquals(40000, scheduler.now());
156+
assertEquals(Arrays.asList("Immediate", "20s", "40s"), execution);
157+
}
158+
159+
@Test
160+
public void testTimeBy() {
161+
List<String> execution = new ArrayList<>();
162+
TestScheduler scheduler = Schedulers.test();
163+
164+
scheduler.createWorker().schedule(
165+
() -> execution.add("Immediate"));
166+
scheduler.createWorker().schedule(
167+
() -> execution.add("20s"),
168+
20, TimeUnit.SECONDS);
169+
scheduler.createWorker().schedule(
170+
() -> execution.add("40s"),
171+
40, TimeUnit.SECONDS);
172+
173+
assertEquals(0, scheduler.now());
174+
assertEquals(Arrays.asList(), execution);
175+
176+
scheduler.advanceTimeBy(1, TimeUnit.MILLISECONDS);
177+
assertEquals(1, scheduler.now());
178+
assertEquals(Arrays.asList("Immediate"), execution);
179+
180+
scheduler.advanceTimeBy(10, TimeUnit.SECONDS);
181+
assertEquals(10001, scheduler.now());
182+
assertEquals(Arrays.asList("Immediate"), execution);
183+
184+
scheduler.advanceTimeBy(40, TimeUnit.SECONDS);
185+
assertEquals(50001, scheduler.now());
186+
assertEquals(Arrays.asList("Immediate", "20s", "40s"), execution);
187+
}
188+
189+
@Test
190+
public void testTriggerActions() {
191+
List<String> execution = new ArrayList<>();
192+
TestScheduler scheduler = Schedulers.test();
193+
194+
scheduler.createWorker().schedule(
195+
() -> execution.add("Immediate"));
196+
scheduler.createWorker().schedule(
197+
() -> execution.add("20s"),
198+
20, TimeUnit.SECONDS);
199+
200+
assertEquals(0, scheduler.now());
201+
assertEquals(Arrays.asList(), execution);
202+
scheduler.triggerActions();
203+
assertEquals(0, scheduler.now());
204+
assertEquals(Arrays.asList("Immediate"), execution);
205+
}
206+
207+
@Test
208+
public void testCollision() {
209+
List<String> execution = new ArrayList<>();
210+
TestScheduler scheduler = Schedulers.test();
211+
212+
scheduler.createWorker().schedule(
213+
() -> execution.add("First"),
214+
20, TimeUnit.SECONDS);
215+
scheduler.createWorker().schedule(
216+
() -> execution.add("Second"),
217+
20, TimeUnit.SECONDS);
218+
scheduler.createWorker().schedule(
219+
() -> execution.add("Third"),
220+
20, TimeUnit.SECONDS);
221+
222+
assertEquals(Arrays.asList(), execution);
223+
scheduler.advanceTimeTo(20, TimeUnit.SECONDS);
224+
assertEquals(Arrays.asList("First", "Second", "Third"), execution);
225+
}
226+
}
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
package itrx.chapter4.testing;
2+
3+
import static org.junit.Assert.assertTrue;
4+
5+
import java.util.Arrays;
6+
import java.util.List;
7+
import java.util.concurrent.TimeUnit;
8+
9+
import org.junit.Test;
10+
11+
import rx.Observable;
12+
import rx.observers.TestSubscriber;
13+
import rx.schedulers.TestScheduler;
14+
15+
public class TestSubscriberTest {
16+
17+
@Test
18+
public void test() {
19+
TestScheduler scheduler = new TestScheduler();
20+
TestSubscriber<Long> subscriber = new TestSubscriber<>();
21+
List<Long> expected = Arrays.asList(0L, 1L, 2L, 3L, 4L);
22+
Observable
23+
.interval(1, TimeUnit.SECONDS, scheduler)
24+
.take(5)
25+
.subscribe(subscriber);
26+
assertTrue(subscriber.getOnNextEvents().isEmpty());
27+
scheduler.advanceTimeBy(5, TimeUnit.SECONDS);
28+
subscriber.assertReceivedOnNext(expected);
29+
subscriber.assertTerminalEvent();
30+
subscriber.assertNoErrors();
31+
subscriber.assertUnsubscribed();
32+
}
33+
}

0 commit comments

Comments
 (0)
X Tutup