rx_ruby 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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