@@ -6,6 +6,40 @@ import org.scalatest.junit.JUnitSuite
6
6
7
7
/**
8
8
* Scheduler with artificial time, useful for testing.
9
+ *
10
+ * For example, you could test the `Observable.interval` operation using a `TestScheduler` as follows:
11
+ *
12
+ * {{{
13
+ * @Test def testInterval() {
14
+ * import org.mockito.Matchers._
15
+ * import org.mockito.Mockito._
16
+ *
17
+ * val scheduler = TestScheduler()
18
+ * val observer = mock(classOf[rx.Observer[Long]])
19
+ *
20
+ * val o = Observable.interval(1 second, scheduler)
21
+ * val sub = o.subscribe(observer)
22
+ *
23
+ * verify(observer, never).onNext(0L)
24
+ * verify(observer, never).onCompleted()
25
+ * verify(observer, never).onError(any(classOf[Throwable]))
26
+ *
27
+ * scheduler.advanceTimeTo(2 seconds)
28
+ *
29
+ * val inOrdr = inOrder(observer);
30
+ * inOrdr.verify(observer, times(1)).onNext(0L)
31
+ * inOrdr.verify(observer, times(1)).onNext(1L)
32
+ * inOrdr.verify(observer, never).onNext(2L)
33
+ * verify(observer, never).onCompleted()
34
+ * verify(observer, never).onError(any(classOf[Throwable]))
35
+ *
36
+ * sub.unsubscribe();
37
+ * scheduler.advanceTimeTo(4 seconds)
38
+ * verify(observer, never).onNext(2L)
39
+ * verify(observer, times(1)).onCompleted()
40
+ * verify(observer, never).onError(any(classOf[Throwable]))
41
+ * }
42
+ * }}}
9
43
*/
10
44
class TestScheduler extends Scheduler {
11
45
val asJava = new rx.concurrency.TestScheduler
@@ -33,44 +67,39 @@ object TestScheduler {
33
67
}
34
68
35
69
private class UnitTest extends JUnitSuite {
36
- import org .mockito .Matchers ._
37
- import org .mockito .Mockito ._
38
- import org .junit .{Test , Before }
70
+ import org .junit .Test
39
71
import scala .concurrent .duration ._
40
72
import scala .language .postfixOps
41
73
import rx .lang .scala .{Observable , Observer }
42
74
43
- var scheduler : TestScheduler = null
44
- var observer : Observer [Long ] = null
45
- var observer2 : Observer [Long ] = null
46
-
47
- @ Before def before () {
48
- scheduler = TestScheduler ()
49
- observer = mock(classOf [rx.Observer [Long ]])
50
- }
51
-
52
75
@ Test def testInterval () {
53
- val w = Observable .interval(1 second, scheduler)
54
- val sub = w.subscribe(observer)
76
+ import org .mockito .Matchers ._
77
+ import org .mockito .Mockito ._
78
+
79
+ val scheduler = TestScheduler ()
80
+ val observer = mock(classOf [rx.Observer [Long ]])
81
+
82
+ val o = Observable .interval(1 second, scheduler)
83
+ val sub = o.subscribe(observer)
55
84
56
- verify(observer, never() ).onNext(0L )
57
- verify(observer, never() ).onCompleted()
58
- verify(observer, never() ).onError(any(classOf [Throwable ]))
85
+ verify(observer, never).onNext(0L )
86
+ verify(observer, never).onCompleted()
87
+ verify(observer, never).onError(any(classOf [Throwable ]))
59
88
60
89
scheduler.advanceTimeTo(2 seconds)
61
90
62
91
val inOrdr = inOrder(observer);
63
92
inOrdr.verify(observer, times(1 )).onNext(0L )
64
93
inOrdr.verify(observer, times(1 )).onNext(1L )
65
- inOrdr.verify(observer, never() ).onNext(2L )
66
- verify(observer, never() ).onCompleted()
67
- verify(observer, never() ).onError(any(classOf [Throwable ]))
94
+ inOrdr.verify(observer, never).onNext(2L )
95
+ verify(observer, never).onCompleted()
96
+ verify(observer, never).onError(any(classOf [Throwable ]))
68
97
69
98
sub.unsubscribe();
70
99
scheduler.advanceTimeTo(4 seconds)
71
- verify(observer, never() ).onNext(2L )
100
+ verify(observer, never).onNext(2L )
72
101
verify(observer, times(1 )).onCompleted()
73
- verify(observer, never() ).onError(any(classOf [Throwable ]))
102
+ verify(observer, never).onError(any(classOf [Throwable ]))
74
103
}
75
104
}
76
105
0 commit comments