rx_ruby 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (186) hide show
  1. checksums.yaml +7 -0
  2. data/.gitattributes +22 -0
  3. data/.gitignore +173 -0
  4. data/.travis.yml +10 -0
  5. data/Gemfile +4 -0
  6. data/Rakefile +11 -0
  7. data/examples/aggregate.rb +39 -0
  8. data/examples/amb.rb +25 -0
  9. data/examples/ambproto.rb +24 -0
  10. data/examples/and.rb +26 -0
  11. data/examples/as_observable.rb +25 -0
  12. data/examples/average.rb +43 -0
  13. data/examples/buffer_with_count.rb +44 -0
  14. data/examples/buffer_with_time.rb +51 -0
  15. data/examples/case.rb +29 -0
  16. data/examples/catch.rb +20 -0
  17. data/examples/catchproto.rb +39 -0
  18. data/examples/combine_latest.rb +35 -0
  19. data/examples/combine_latestproto.rb +33 -0
  20. data/examples/concat.rb +22 -0
  21. data/examples/concat_all.rb +27 -0
  22. data/examples/concat_map.rb +61 -0
  23. data/examples/concat_map_observer.rb +29 -0
  24. data/examples/concatproto.rb +25 -0
  25. data/examples/connect.rb +41 -0
  26. data/examples/contains.rb +37 -0
  27. data/examples/count.rb +36 -0
  28. data/examples/create.rb +55 -0
  29. data/examples/debounce.rb +35 -0
  30. data/examples/default_if_empty.rb +35 -0
  31. data/examples/defer.rb +20 -0
  32. data/examples/delay.rb +49 -0
  33. data/examples/delay_with_selector.rb +63 -0
  34. data/examples/dematerialize.rb +22 -0
  35. data/examples/disposable.rb +12 -0
  36. data/examples/distinct.rb +43 -0
  37. data/examples/distinct_until_changed.rb +43 -0
  38. data/examples/do.rb +59 -0
  39. data/examples/empty.rb +16 -0
  40. data/examples/for.rb +26 -0
  41. data/examples/fork_join.rb +23 -0
  42. data/examples/from.rb +106 -0
  43. data/examples/from_array.rb +21 -0
  44. data/examples/from_callback.rb +21 -0
  45. data/examples/generate.rb +24 -0
  46. data/examples/group_join.rb +39 -0
  47. data/examples/if.rb +46 -0
  48. data/examples/intervals.rb +26 -0
  49. data/examples/merge.rb +36 -0
  50. data/examples/merge_all.rb +27 -0
  51. data/examples/multicast.rb +32 -0
  52. data/examples/never.rb +15 -0
  53. data/examples/of.rb +19 -0
  54. data/examples/on_error_resume_next.rb +21 -0
  55. data/examples/pairs.rb +26 -0
  56. data/examples/publish.rb +79 -0
  57. data/examples/range.rb +19 -0
  58. data/examples/reduce.rb +18 -0
  59. data/examples/repeat.rb +19 -0
  60. data/examples/return.rb +17 -0
  61. data/examples/scan.rb +41 -0
  62. data/examples/start.rb +29 -0
  63. data/examples/throw.rb +17 -0
  64. data/examples/time_intervals.rb +28 -0
  65. data/examples/timer.rb +26 -0
  66. data/examples/timestamp.rb +28 -0
  67. data/examples/to_a.rb +23 -0
  68. data/examples/to_async.rb +26 -0
  69. data/examples/using.rb +52 -0
  70. data/examples/when.rb +26 -0
  71. data/examples/while.rb +25 -0
  72. data/examples/window_with_time.rb +78 -0
  73. data/examples/zip.rb +27 -0
  74. data/examples/zip_array.rb +25 -0
  75. data/lib/core_ext/enumerable.rb +22 -0
  76. data/lib/rx_ruby.rb +27 -0
  77. data/lib/rx_ruby/concurrency/async_lock.rb +57 -0
  78. data/lib/rx_ruby/concurrency/current_thread_scheduler.rb +75 -0
  79. data/lib/rx_ruby/concurrency/default_scheduler.rb +51 -0
  80. data/lib/rx_ruby/concurrency/historical_scheduler.rb +16 -0
  81. data/lib/rx_ruby/concurrency/immediate_scheduler.rb +68 -0
  82. data/lib/rx_ruby/concurrency/local_scheduler.rb +39 -0
  83. data/lib/rx_ruby/concurrency/periodic_scheduler.rb +74 -0
  84. data/lib/rx_ruby/concurrency/scheduled_item.rb +42 -0
  85. data/lib/rx_ruby/concurrency/scheduler.rb +150 -0
  86. data/lib/rx_ruby/concurrency/virtual_time_scheduler.rb +170 -0
  87. data/lib/rx_ruby/core/async_lock_observer.rb +46 -0
  88. data/lib/rx_ruby/core/auto_detach_observer.rb +59 -0
  89. data/lib/rx_ruby/core/checked_observer.rb +66 -0
  90. data/lib/rx_ruby/core/notification.rb +161 -0
  91. data/lib/rx_ruby/core/observable.rb +104 -0
  92. data/lib/rx_ruby/core/observe_on_observer.rb +50 -0
  93. data/lib/rx_ruby/core/observer.rb +119 -0
  94. data/lib/rx_ruby/core/scheduled_observer.rb +83 -0
  95. data/lib/rx_ruby/core/synchronized_observer.rb +47 -0
  96. data/lib/rx_ruby/core/time_interval.rb +17 -0
  97. data/lib/rx_ruby/internal/priority_queue.rb +122 -0
  98. data/lib/rx_ruby/internal/util.rb +9 -0
  99. data/lib/rx_ruby/joins/active_plan.rb +45 -0
  100. data/lib/rx_ruby/joins/join_observer.rb +51 -0
  101. data/lib/rx_ruby/joins/pattern.rb +14 -0
  102. data/lib/rx_ruby/joins/plan.rb +44 -0
  103. data/lib/rx_ruby/linq/connectable_observable.rb +34 -0
  104. data/lib/rx_ruby/linq/observable/_observable_timer_date_and_period.rb +22 -0
  105. data/lib/rx_ruby/linq/observable/_observable_timer_time_span.rb +14 -0
  106. data/lib/rx_ruby/linq/observable/_observable_timer_time_span_and_period.rb +20 -0
  107. data/lib/rx_ruby/linq/observable/aggregate.rb +7 -0
  108. data/lib/rx_ruby/linq/observable/and.rb +7 -0
  109. data/lib/rx_ruby/linq/observable/case.rb +15 -0
  110. data/lib/rx_ruby/linq/observable/concat_all.rb +7 -0
  111. data/lib/rx_ruby/linq/observable/concat_map.rb +35 -0
  112. data/lib/rx_ruby/linq/observable/concat_map_observer.rb +43 -0
  113. data/lib/rx_ruby/linq/observable/contains.rb +28 -0
  114. data/lib/rx_ruby/linq/observable/debounce.rb +41 -0
  115. data/lib/rx_ruby/linq/observable/delay.rb +81 -0
  116. data/lib/rx_ruby/linq/observable/delay_with_selector.rb +64 -0
  117. data/lib/rx_ruby/linq/observable/do.rb +42 -0
  118. data/lib/rx_ruby/linq/observable/for.rb +13 -0
  119. data/lib/rx_ruby/linq/observable/fork_join.rb +55 -0
  120. data/lib/rx_ruby/linq/observable/from.rb +34 -0
  121. data/lib/rx_ruby/linq/observable/group_join.rb +108 -0
  122. data/lib/rx_ruby/linq/observable/if.rb +17 -0
  123. data/lib/rx_ruby/linq/observable/interval.rb +5 -0
  124. data/lib/rx_ruby/linq/observable/multicast.rb +14 -0
  125. data/lib/rx_ruby/linq/observable/of.rb +11 -0
  126. data/lib/rx_ruby/linq/observable/pairs.rb +7 -0
  127. data/lib/rx_ruby/linq/observable/pluck.rb +7 -0
  128. data/lib/rx_ruby/linq/observable/publish.rb +11 -0
  129. data/lib/rx_ruby/linq/observable/start.rb +7 -0
  130. data/lib/rx_ruby/linq/observable/time_interval.rb +15 -0
  131. data/lib/rx_ruby/linq/observable/timer.rb +26 -0
  132. data/lib/rx_ruby/linq/observable/timestamp.rb +9 -0
  133. data/lib/rx_ruby/linq/observable/to_async.rb +40 -0
  134. data/lib/rx_ruby/linq/observable/when.rb +36 -0
  135. data/lib/rx_ruby/linq/observable/while.rb +41 -0
  136. data/lib/rx_ruby/operators/aggregates.rb +611 -0
  137. data/lib/rx_ruby/operators/creation.rb +220 -0
  138. data/lib/rx_ruby/operators/multiple.rb +735 -0
  139. data/lib/rx_ruby/operators/single.rb +399 -0
  140. data/lib/rx_ruby/operators/standard_query_operators.rb +279 -0
  141. data/lib/rx_ruby/operators/synchronization.rb +47 -0
  142. data/lib/rx_ruby/operators/time.rb +120 -0
  143. data/lib/rx_ruby/subjects/async_subject.rb +161 -0
  144. data/lib/rx_ruby/subjects/behavior_subject.rb +149 -0
  145. data/lib/rx_ruby/subjects/replay_subject.rb +39 -0
  146. data/lib/rx_ruby/subjects/subject.rb +131 -0
  147. data/lib/rx_ruby/subjects/subject_extensions.rb +45 -0
  148. data/lib/rx_ruby/subscriptions/composite_subscription.rb +91 -0
  149. data/lib/rx_ruby/subscriptions/ref_count_subscription.rb +88 -0
  150. data/lib/rx_ruby/subscriptions/scheduled_subscription.rb +32 -0
  151. data/lib/rx_ruby/subscriptions/serial_subscription.rb +60 -0
  152. data/lib/rx_ruby/subscriptions/single_assignment_subscription.rb +64 -0
  153. data/lib/rx_ruby/subscriptions/subscription.rb +56 -0
  154. data/lib/rx_ruby/testing/cold_observable.rb +45 -0
  155. data/lib/rx_ruby/testing/hot_observable.rb +47 -0
  156. data/lib/rx_ruby/testing/mock_observer.rb +33 -0
  157. data/lib/rx_ruby/testing/reactive_test.rb +94 -0
  158. data/lib/rx_ruby/testing/recorded.rb +17 -0
  159. data/lib/rx_ruby/testing/test_scheduler.rb +96 -0
  160. data/lib/rx_ruby/testing/test_subscription.rb +22 -0
  161. data/lib/rx_ruby/version.rb +3 -0
  162. data/license.txt +13 -0
  163. data/readme.md +152 -0
  164. data/rx_ruby.gemspec +22 -0
  165. data/test/rx_ruby/concurrency/helpers/historical_virtual_scheduler_helper.rb +135 -0
  166. data/test/rx_ruby/concurrency/helpers/immediate_local_scheduler_helper.rb +51 -0
  167. data/test/rx_ruby/concurrency/test_async_lock.rb +56 -0
  168. data/test/rx_ruby/concurrency/test_current_thread_scheduler.rb +44 -0
  169. data/test/rx_ruby/concurrency/test_default_scheduler.rb +44 -0
  170. data/test/rx_ruby/concurrency/test_historical_scheduler.rb +18 -0
  171. data/test/rx_ruby/concurrency/test_immediate_scheduler.rb +53 -0
  172. data/test/rx_ruby/concurrency/test_local_scheduler.rb +12 -0
  173. data/test/rx_ruby/concurrency/test_periodic_scheduler.rb +53 -0
  174. data/test/rx_ruby/concurrency/test_scheduled_item.rb +50 -0
  175. data/test/rx_ruby/concurrency/test_scheduler.rb +128 -0
  176. data/test/rx_ruby/concurrency/test_virtual_time_scheduler.rb +14 -0
  177. data/test/rx_ruby/core/test_notification.rb +129 -0
  178. data/test/rx_ruby/core/test_observable_creation.rb +483 -0
  179. data/test/rx_ruby/core/test_observer.rb +634 -0
  180. data/test/rx_ruby/internal/test_priority_queue.rb +71 -0
  181. data/test/rx_ruby/subscriptions/test_composite_subscription.rb +116 -0
  182. data/test/rx_ruby/subscriptions/test_serial_subscription.rb +62 -0
  183. data/test/rx_ruby/subscriptions/test_singleassignment_subscription.rb +61 -0
  184. data/test/rx_ruby/subscriptions/test_subscription.rb +27 -0
  185. data/test/test_helper.rb +11 -0
  186. metadata +291 -0
@@ -0,0 +1,483 @@
1
+ # Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
2
+
3
+ require 'test_helper'
4
+
5
+ class TestObservableCreation < Minitest::Test
6
+ include RxRuby::ReactiveTest
7
+
8
+ # Create Methods
9
+
10
+ def test_create_next
11
+ scheduler = RxRuby::TestScheduler.new
12
+
13
+ res = scheduler.configure do
14
+ RxRuby::Observable.create do |obs|
15
+ obs.on_next 1
16
+ obs.on_next 2
17
+ RxRuby::Subscription.empty
18
+ end
19
+ end
20
+
21
+ assert_messages [on_next(200, 1), on_next(200, 2)], res.messages
22
+ end
23
+
24
+ def test_create_next_nil
25
+ scheduler = RxRuby::TestScheduler.new
26
+
27
+ res = scheduler.configure do
28
+ RxRuby::Observable.create do |obs|
29
+ obs.on_next 1
30
+ obs.on_next 2
31
+ nil
32
+ end
33
+ end
34
+
35
+ assert_messages [on_next(200, 1), on_next(200, 2)], res.messages
36
+ end
37
+
38
+ def test_create_completed
39
+ scheduler = RxRuby::TestScheduler.new
40
+
41
+ res = scheduler.configure do
42
+ RxRuby::Observable.create do |obs|
43
+ obs.on_completed
44
+ obs.on_next 100
45
+ obs.on_error RuntimeError.new
46
+ obs.on_completed
47
+ nil
48
+ end
49
+ end
50
+
51
+ assert_messages [on_completed(200)], res.messages
52
+ end
53
+
54
+ def test_create_error
55
+ err = RuntimeError.new
56
+ scheduler = RxRuby::TestScheduler.new
57
+
58
+ res = scheduler.configure do
59
+ RxRuby::Observable.create do |obs|
60
+ obs.on_error err
61
+ obs.on_next 100
62
+ obs.on_error RuntimeError.new
63
+ obs.on_completed
64
+ nil
65
+ end
66
+ end
67
+
68
+ assert_messages [on_error(200, err)], res.messages
69
+ end
70
+
71
+ def test_create_unsubscribe
72
+ err = RuntimeError.new
73
+ scheduler = RxRuby::TestScheduler.new
74
+
75
+ res = scheduler.configure do
76
+ RxRuby::Observable.create do |obs|
77
+ stopped = false
78
+
79
+ obs.on_next 1
80
+ obs.on_next 2
81
+
82
+ scheduler.schedule_relative(600, lambda {
83
+ obs.on_next 3 unless stopped
84
+ })
85
+
86
+ scheduler.schedule_relative(700, lambda {
87
+ obs.on_next 4 unless stopped
88
+ })
89
+
90
+ scheduler.schedule_relative(900, lambda {
91
+ obs.on_next 5 unless stopped
92
+ })
93
+
94
+ scheduler.schedule_relative(1100, lambda {
95
+ obs.on_next 6 unless stopped
96
+ })
97
+
98
+ RxRuby::Subscription.create { stopped = true }
99
+ end
100
+ end
101
+
102
+ msgs = [
103
+ on_next(200, 1),
104
+ on_next(200, 2),
105
+ on_next(800, 3),
106
+ on_next(900, 4)
107
+ ]
108
+ assert_messages msgs, res.messages
109
+ end
110
+
111
+ def test_create_observer_raises
112
+ assert_raises(RuntimeError) do
113
+
114
+ observable = RxRuby::Observable.create do |obs|
115
+ obs.on_next 1
116
+ nil
117
+ end
118
+
119
+ observer = RxRuby::Observer.configure do |o|
120
+ o.on_next {|x| raise RuntimeError.new }
121
+ end
122
+
123
+ observable.subscribe observer
124
+ end
125
+
126
+ assert_raises(RuntimeError) do
127
+
128
+ observable = RxRuby::Observable.create do |obs|
129
+ obs.on_error RuntimeError.new
130
+ nil
131
+ end
132
+
133
+ observer = RxRuby::Observer.configure do |o|
134
+ o.on_error {|err| raise RuntimeError.new }
135
+ end
136
+
137
+ observable.subscribe observer
138
+ end
139
+
140
+ assert_raises(RuntimeError) do
141
+
142
+ observable = RxRuby::Observable.create do |obs|
143
+ obs.on_completed
144
+ nil
145
+ end
146
+
147
+ observer = RxRuby::Observer.configure do |o|
148
+ o.on_completed { raise RuntimeError.new }
149
+ end
150
+
151
+ observable.subscribe observer
152
+ end
153
+ end
154
+
155
+ # Defer Method tests
156
+
157
+ def test_defer_complete
158
+ scheduler = RxRuby::TestScheduler.new
159
+
160
+ invoked = 0
161
+ xs = nil
162
+
163
+ res = scheduler.configure do
164
+ RxRuby::Observable.defer do
165
+ invoked += 1
166
+
167
+ xs = scheduler.create_cold_observable(
168
+ on_next(100, scheduler.clock),
169
+ on_completed(200)
170
+ )
171
+ xs
172
+ end
173
+ end
174
+
175
+ msgs = [on_next(300, 200), on_completed(400)]
176
+ assert_messages msgs, res.messages
177
+
178
+ assert_equal 1, invoked
179
+
180
+ assert_subscriptions [subscribe(200, 400)], xs.subscriptions
181
+ end
182
+
183
+ def test_defer_error
184
+ scheduler = RxRuby::TestScheduler.new
185
+
186
+ invoked = 0
187
+ xs = nil
188
+ err = RuntimeError.new
189
+
190
+ res = scheduler.configure do
191
+ RxRuby::Observable.defer do
192
+ invoked += 1
193
+
194
+ xs = scheduler.create_cold_observable(
195
+ on_next(100, scheduler.clock),
196
+ on_error(200, err)
197
+ )
198
+ xs
199
+ end
200
+ end
201
+
202
+ msgs = [on_next(300, 200), on_error(400, err)]
203
+ assert_messages msgs, res.messages
204
+
205
+ assert_equal 1, invoked
206
+
207
+ assert_subscriptions [subscribe(200, 400)], xs.subscriptions
208
+ end
209
+
210
+ def test_defer_unsubscribe
211
+ scheduler = RxRuby::TestScheduler.new
212
+
213
+ invoked = 0
214
+ xs = nil
215
+
216
+ res = scheduler.configure do
217
+ RxRuby::Observable.defer do
218
+ invoked += 1
219
+
220
+ xs = scheduler.create_cold_observable(
221
+ on_next(100, scheduler.clock),
222
+ on_next(200, invoked),
223
+ on_next(1100, 1000)
224
+ )
225
+ xs
226
+ end
227
+ end
228
+
229
+ msgs = [on_next(300, 200), on_next(400, 1)]
230
+ assert_messages msgs, res.messages
231
+
232
+ assert_equal 1, invoked
233
+
234
+ assert_subscriptions [subscribe(200, 1000)], xs.subscriptions
235
+ end
236
+
237
+ def test_defer_raise
238
+ scheduler = RxRuby::TestScheduler.new
239
+
240
+ invoked = 0
241
+ err = RuntimeError.new
242
+
243
+ res = scheduler.configure do
244
+ RxRuby::Observable.defer do
245
+ invoked += 1
246
+ raise err
247
+ end
248
+ end
249
+
250
+ msgs = [on_error(200, err)]
251
+ assert_messages msgs, res.messages
252
+
253
+ assert_equal 1, invoked
254
+ end
255
+
256
+ # Empty methods
257
+
258
+ def test_empty_basic
259
+ scheduler = RxRuby::TestScheduler.new
260
+
261
+ res = scheduler.configure do
262
+ RxRuby::Observable.empty(scheduler)
263
+ end
264
+
265
+ msgs = [on_completed(201)]
266
+ assert_messages msgs, res.messages
267
+ end
268
+
269
+ def test_empty_disposed
270
+ scheduler = RxRuby::TestScheduler.new
271
+
272
+ res = scheduler.configure({:disposed => 200}) do
273
+ RxRuby::Observable.empty(scheduler)
274
+ end
275
+
276
+ msgs = []
277
+ assert_messages msgs, res.messages
278
+ end
279
+
280
+ def test_empty_observer_raises
281
+ scheduler = RxRuby::TestScheduler.new
282
+
283
+ xs = RxRuby::Observable.empty(scheduler)
284
+
285
+ observer = RxRuby::Observer.configure do |obs|
286
+ obs.on_completed { raise RuntimeError.new }
287
+ end
288
+
289
+ xs.subscribe observer
290
+
291
+ assert_raises(RuntimeError) { scheduler.start }
292
+ end
293
+
294
+ # Generate methods
295
+
296
+ def test_generate_finite
297
+ scheduler = RxRuby::TestScheduler.new
298
+
299
+ res = scheduler.configure do
300
+ RxRuby::Observable.generate(
301
+ 0,
302
+ lambda { |x| return x <= 3 },
303
+ lambda { |x| return x + 1 },
304
+ lambda { |x| return x },
305
+ scheduler)
306
+ end
307
+
308
+ msgs = [
309
+ on_next(201, 0),
310
+ on_next(202, 1),
311
+ on_next(203, 2),
312
+ on_next(204, 3),
313
+ on_completed(205)
314
+ ]
315
+ assert_messages msgs, res.messages
316
+ end
317
+
318
+ def test_generate_condition_raise
319
+ scheduler = RxRuby::TestScheduler.new
320
+ err = RuntimeError.new
321
+
322
+ res = scheduler.configure do
323
+ RxRuby::Observable.generate(
324
+ 0,
325
+ lambda { |x| raise err },
326
+ lambda { |x| return x + 1 },
327
+ lambda { |x| return x },
328
+ scheduler)
329
+ end
330
+
331
+ msgs = [
332
+ on_error(201, err)
333
+ ]
334
+ assert_messages msgs, res.messages
335
+ end
336
+
337
+ def test_generate_raise_result_selector
338
+ scheduler = RxRuby::TestScheduler.new
339
+ err = RuntimeError.new
340
+
341
+ res = scheduler.configure do
342
+ RxRuby::Observable.generate(
343
+ 0,
344
+ lambda { |x| return true },
345
+ lambda { |x| return x + 1 },
346
+ lambda { |x| raise err },
347
+ scheduler)
348
+ end
349
+
350
+ msgs = [
351
+ on_error(201, err)
352
+ ]
353
+ assert_messages msgs, res.messages
354
+ end
355
+
356
+ def test_generate_raise_iterate
357
+ scheduler = RxRuby::TestScheduler.new
358
+ err = RuntimeError.new
359
+
360
+ res = scheduler.configure do
361
+ RxRuby::Observable.generate(
362
+ 0,
363
+ lambda { |x| return true },
364
+ lambda { |x| raise err },
365
+ lambda { |x| return x },
366
+ scheduler)
367
+ end
368
+
369
+ msgs = [
370
+ on_next(201, 0),
371
+ on_error(202, err)
372
+ ]
373
+ assert_messages msgs, res.messages
374
+ end
375
+
376
+ def test_generate_dispose
377
+ scheduler = RxRuby::TestScheduler.new
378
+
379
+ res = scheduler.configure(:disposed => 203) do
380
+ RxRuby::Observable.generate(
381
+ 0,
382
+ lambda { |x| return x <= 3 },
383
+ lambda { |x| return x + 1 },
384
+ lambda { |x| return x },
385
+ scheduler)
386
+ end
387
+
388
+ msgs = [
389
+ on_next(201, 0),
390
+ on_next(202, 1),
391
+ ]
392
+ assert_messages msgs, res.messages
393
+ end
394
+
395
+ # Never methods
396
+
397
+ def test_never_basic
398
+ scheduler = RxRuby::TestScheduler.new
399
+
400
+ res = scheduler.configure do
401
+ RxRuby::Observable.never
402
+ end
403
+
404
+ msgs = []
405
+ assert_messages msgs, res.messages
406
+ end
407
+
408
+ # Range methods
409
+
410
+ def test_range_zero
411
+ scheduler = RxRuby::TestScheduler.new
412
+
413
+ res = scheduler.configure do
414
+ RxRuby::Observable.range(0, 0, scheduler)
415
+ end
416
+
417
+ msgs = [on_completed(201)]
418
+ assert_messages msgs, res.messages
419
+ end
420
+
421
+ def test_range_one
422
+ scheduler = RxRuby::TestScheduler.new
423
+
424
+ res = scheduler.configure do
425
+ RxRuby::Observable.range(0, 1, scheduler)
426
+ end
427
+
428
+ msgs = [on_next(201, 0), on_completed(202)]
429
+ assert_messages msgs, res.messages
430
+ end
431
+
432
+ def test_range_five
433
+ scheduler = RxRuby::TestScheduler.new
434
+
435
+ res = scheduler.configure do
436
+ RxRuby::Observable.range(10, 5, scheduler)
437
+ end
438
+
439
+ msgs = [
440
+ on_next(201, 10),
441
+ on_next(202, 11),
442
+ on_next(203, 12),
443
+ on_next(204, 13),
444
+ on_next(205, 14),
445
+ on_completed(206)
446
+ ]
447
+ assert_messages msgs, res.messages
448
+ end
449
+
450
+ def range_dispose
451
+ scheduler = RxRuby::TestScheduler.new
452
+
453
+ res = scheduler.configure(:dispose => 204) do
454
+ RxRuby::Observable.range(-10, 5, scheduler)
455
+ end
456
+
457
+ msgs = [
458
+ on_next(201, -10),
459
+ on_next(202, -9),
460
+ on_next(203, -8),
461
+ ]
462
+ assert_messages msgs, res.messages
463
+ end
464
+
465
+ # Repeat methods
466
+
467
+ =begin
468
+ def test_repeat_value_count_zero
469
+ scheduler = RxRuby::TestScheduler.new
470
+
471
+ res = scheduler.configure(:dispose => 204) do
472
+ RxRuby::Observable.repeat(42, 0, scheduler)
473
+ end
474
+
475
+ msgs = [
476
+ on_completed(201)
477
+ ]
478
+ assert_messages msgs, res.messages
479
+ end
480
+ =end
481
+
482
+
483
+ end