rx 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +3 -0
- data/Gemfile +1 -1
- data/examples/aggregate.rb +3 -3
- data/examples/amb.rb +4 -4
- data/examples/ambproto.rb +3 -3
- data/examples/and.rb +4 -4
- data/examples/as_observable.rb +2 -2
- data/examples/average.rb +3 -3
- data/examples/buffer_with_count.rb +3 -3
- data/examples/buffer_with_time.rb +3 -3
- data/examples/case.rb +5 -5
- data/examples/catch.rb +4 -4
- data/examples/catchproto.rb +5 -5
- data/examples/combine_latest.rb +4 -4
- data/examples/combine_latestproto.rb +3 -3
- data/examples/concat.rb +4 -4
- data/examples/concat_all.rb +3 -3
- data/examples/concat_map.rb +4 -4
- data/examples/concat_map_observer.rb +5 -5
- data/examples/concatproto.rb +3 -3
- data/examples/connect.rb +3 -3
- data/examples/contains.rb +3 -3
- data/examples/count.rb +3 -3
- data/examples/create.rb +4 -4
- data/examples/debounce.rb +3 -3
- data/examples/default_if_empty.rb +3 -3
- data/examples/defer.rb +3 -3
- data/examples/delay.rb +3 -3
- data/examples/delay_with_selector.rb +6 -6
- data/examples/dematerialize.rb +4 -4
- data/examples/disposable.rb +3 -3
- data/examples/distinct.rb +3 -3
- data/examples/distinct_until_changed.rb +3 -3
- data/examples/do.rb +4 -4
- data/examples/empty.rb +2 -2
- data/examples/for.rb +3 -3
- data/examples/fork_join.rb +6 -6
- data/examples/from.rb +7 -7
- data/examples/from_array.rb +2 -2
- data/examples/from_callback.rb +2 -2
- data/examples/generate.rb +2 -2
- data/examples/group_join.rb +5 -5
- data/examples/if.rb +6 -6
- data/examples/intervals.rb +2 -2
- data/examples/merge.rb +4 -4
- data/examples/merge_all.rb +3 -3
- data/examples/multicast.rb +4 -4
- data/examples/never.rb +2 -2
- data/examples/of.rb +2 -2
- data/examples/on_error_resume_next.rb +5 -5
- data/examples/pairs.rb +2 -2
- data/examples/publish.rb +5 -5
- data/examples/range.rb +2 -2
- data/examples/reduce.rb +2 -2
- data/examples/repeat.rb +2 -2
- data/examples/return.rb +2 -2
- data/examples/scan.rb +3 -3
- data/examples/start.rb +3 -3
- data/examples/throw.rb +3 -3
- data/examples/time_intervals.rb +2 -2
- data/examples/timer.rb +2 -2
- data/examples/timestamp.rb +2 -2
- data/examples/to_a.rb +2 -2
- data/examples/to_async.rb +2 -2
- data/examples/using.rb +3 -3
- data/examples/when.rb +4 -4
- data/examples/while.rb +3 -3
- data/examples/window_with_time.rb +3 -3
- data/examples/zip.rb +3 -3
- data/examples/zip_array.rb +3 -3
- data/lib/core_ext/enumerable.rb +3 -3
- data/lib/{rx_ruby.rb → rx.rb} +11 -11
- data/lib/{rx_ruby → rx}/concurrency/async_lock.rb +1 -1
- data/lib/{rx_ruby → rx}/concurrency/current_thread_scheduler.rb +6 -6
- data/lib/{rx_ruby → rx}/concurrency/default_scheduler.rb +8 -8
- data/lib/{rx_ruby → rx}/concurrency/historical_scheduler.rb +3 -3
- data/lib/{rx_ruby → rx}/concurrency/immediate_scheduler.rb +4 -4
- data/lib/{rx_ruby → rx}/concurrency/local_scheduler.rb +3 -3
- data/lib/{rx_ruby → rx}/concurrency/periodic_scheduler.rb +1 -1
- data/lib/{rx_ruby → rx}/concurrency/scheduled_item.rb +2 -2
- data/lib/{rx_ruby → rx}/concurrency/scheduler.rb +1 -1
- data/lib/{rx_ruby → rx}/concurrency/virtual_time_scheduler.rb +4 -4
- data/lib/{rx_ruby → rx}/core/async_lock_observer.rb +4 -4
- data/lib/{rx_ruby → rx}/core/auto_detach_observer.rb +4 -4
- data/lib/{rx_ruby → rx}/core/checked_observer.rb +2 -2
- data/lib/{rx_ruby → rx}/core/notification.rb +3 -3
- data/lib/{rx_ruby → rx}/core/observable.rb +6 -6
- data/lib/{rx_ruby → rx}/core/observe_on_observer.rb +2 -2
- data/lib/{rx_ruby → rx}/core/observer.rb +1 -1
- data/lib/{rx_ruby → rx}/core/scheduled_observer.rb +3 -3
- data/lib/{rx_ruby → rx}/core/synchronized_observer.rb +3 -3
- data/lib/{rx_ruby → rx}/core/time_interval.rb +1 -1
- data/lib/{rx_ruby → rx}/internal/priority_queue.rb +1 -1
- data/lib/{rx_ruby → rx}/internal/util.rb +1 -1
- data/lib/{rx_ruby → rx}/joins/active_plan.rb +1 -1
- data/lib/{rx_ruby → rx}/joins/join_observer.rb +1 -1
- data/lib/{rx_ruby → rx}/joins/pattern.rb +1 -1
- data/lib/{rx_ruby → rx}/joins/plan.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/connectable_observable.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/_observable_timer_date_and_period.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/_observable_timer_time_span.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/_observable_timer_time_span_and_period.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/aggregate.rb +2 -2
- data/lib/{rx_ruby → rx}/linq/observable/and.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/case.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/concat_all.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/concat_map.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/concat_map_observer.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/contains.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/debounce.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/delay.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/delay_with_selector.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/do.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/for.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/fork_join.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/from.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/group_join.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/if.rb +1 -1
- data/lib/rx/linq/observable/interval.rb +5 -0
- data/lib/{rx_ruby → rx}/linq/observable/multicast.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/of.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/pairs.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/pluck.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/publish.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/start.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/time_interval.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/timer.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/timestamp.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/to_async.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/when.rb +1 -1
- data/lib/{rx_ruby → rx}/linq/observable/while.rb +1 -1
- data/lib/{rx_ruby → rx}/operators/aggregates.rb +31 -31
- data/lib/{rx_ruby → rx}/operators/creation.rb +6 -6
- data/lib/{rx_ruby → rx}/operators/multiple.rb +22 -23
- data/lib/{rx_ruby → rx}/operators/single.rb +14 -14
- data/lib/{rx_ruby → rx}/operators/standard_query_operators.rb +6 -6
- data/lib/{rx_ruby → rx}/operators/synchronization.rb +8 -8
- data/lib/{rx_ruby → rx}/operators/time.rb +12 -12
- data/lib/{rx_ruby → rx}/subjects/async_subject.rb +4 -4
- data/lib/{rx_ruby → rx}/subjects/behavior_subject.rb +3 -3
- data/lib/{rx_ruby → rx}/subjects/replay_subject.rb +5 -5
- data/lib/{rx_ruby → rx}/subjects/subject.rb +4 -4
- data/lib/{rx_ruby → rx}/subjects/subject_extensions.rb +3 -3
- data/lib/{rx_ruby → rx}/subscriptions/composite_subscription.rb +1 -1
- data/lib/{rx_ruby → rx}/subscriptions/ref_count_subscription.rb +2 -2
- data/lib/{rx_ruby → rx}/subscriptions/scheduled_subscription.rb +1 -1
- data/lib/{rx_ruby → rx}/subscriptions/serial_subscription.rb +1 -1
- data/lib/{rx_ruby → rx}/subscriptions/single_assignment_subscription.rb +1 -1
- data/lib/{rx_ruby → rx}/subscriptions/subscription.rb +1 -1
- data/lib/{rx_ruby → rx}/testing/cold_observable.rb +4 -4
- data/lib/{rx_ruby → rx}/testing/hot_observable.rb +4 -4
- data/lib/{rx_ruby → rx}/testing/mock_observer.rb +4 -4
- data/lib/{rx_ruby → rx}/testing/reactive_test.rb +3 -3
- data/lib/{rx_ruby → rx}/testing/recorded.rb +1 -1
- data/lib/{rx_ruby → rx}/testing/test_scheduler.rb +8 -8
- data/lib/{rx_ruby → rx}/testing/test_subscription.rb +1 -1
- data/lib/rx/version.rb +3 -0
- data/readme.md +19 -19
- data/{rx_ruby.gemspec → rx.gemspec} +2 -2
- data/test/{rx_ruby → rx}/concurrency/helpers/historical_virtual_scheduler_helper.rb +0 -0
- data/test/{rx_ruby → rx}/concurrency/helpers/immediate_local_scheduler_helper.rb +0 -0
- data/test/{rx_ruby → rx}/concurrency/test_async_lock.rb +1 -1
- data/test/{rx_ruby → rx}/concurrency/test_current_thread_scheduler.rb +3 -3
- data/test/{rx_ruby → rx}/concurrency/test_default_scheduler.rb +1 -1
- data/test/{rx_ruby → rx}/concurrency/test_historical_scheduler.rb +3 -3
- data/test/{rx_ruby → rx}/concurrency/test_immediate_scheduler.rb +2 -2
- data/test/{rx_ruby → rx}/concurrency/test_local_scheduler.rb +2 -2
- data/test/{rx_ruby → rx}/concurrency/test_periodic_scheduler.rb +1 -1
- data/test/{rx_ruby → rx}/concurrency/test_scheduled_item.rb +4 -4
- data/test/{rx_ruby → rx}/concurrency/test_scheduler.rb +2 -2
- data/test/{rx_ruby → rx}/concurrency/test_virtual_time_scheduler.rb +2 -2
- data/test/{rx_ruby → rx}/core/test_notification.rb +20 -20
- data/test/{rx_ruby → rx}/core/test_observable_creation.rb +220 -63
- data/test/{rx_ruby → rx}/core/test_observer.rb +39 -39
- data/test/{rx_ruby → rx}/internal/test_priority_queue.rb +6 -6
- data/test/{rx_ruby → rx}/subscriptions/test_composite_subscription.rb +20 -20
- data/test/{rx_ruby → rx}/subscriptions/test_serial_subscription.rb +9 -9
- data/test/{rx_ruby → rx}/subscriptions/test_singleassignment_subscription.rb +8 -8
- data/test/{rx_ruby → rx}/subscriptions/test_subscription.rb +3 -3
- data/test/test_helper.rb +1 -1
- metadata +129 -129
- data/lib/rx_ruby/linq/observable/interval.rb +0 -5
- data/lib/rx_ruby/version.rb +0 -3
@@ -1,18 +1,18 @@
|
|
1
1
|
# Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
|
2
2
|
|
3
3
|
require 'test_helper'
|
4
|
-
require '
|
4
|
+
require 'rx/concurrency/helpers/immediate_local_scheduler_helper'
|
5
5
|
|
6
6
|
|
7
7
|
class TestCurrentThreadScheduler < Minitest::Test
|
8
8
|
include ImmediateLocalSchedulerTestHelper
|
9
9
|
|
10
10
|
def setup
|
11
|
-
@scheduler =
|
11
|
+
@scheduler = Rx::CurrentThreadScheduler.instance
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_schedule_required
|
15
|
-
assert_equal(true,
|
15
|
+
assert_equal(true, Rx::CurrentThreadScheduler.schedule_required?)
|
16
16
|
end
|
17
17
|
|
18
18
|
def test_schedule
|
@@ -1,18 +1,18 @@
|
|
1
1
|
# Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
|
2
2
|
|
3
3
|
require 'test_helper'
|
4
|
-
require '
|
4
|
+
require 'rx/concurrency/helpers/historical_virtual_scheduler_helper'
|
5
5
|
|
6
6
|
class TestHistoricalScheduler < Minitest::Test
|
7
7
|
include HistoricalVirtualSchedulerTestHelper
|
8
8
|
|
9
9
|
def setup
|
10
10
|
@start = Time.at(1000)
|
11
|
-
@scheduler =
|
11
|
+
@scheduler = Rx::HistoricalScheduler.new(@start)
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_initialization
|
15
15
|
assert_equal(Time.at(1000), @scheduler.now)
|
16
|
-
assert_equal(Time.at(0),
|
16
|
+
assert_equal(Time.at(0), Rx::HistoricalScheduler.new.now)
|
17
17
|
end
|
18
18
|
end
|
@@ -1,13 +1,13 @@
|
|
1
1
|
# Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
|
2
2
|
|
3
3
|
require 'test_helper'
|
4
|
-
require '
|
4
|
+
require 'rx/concurrency/helpers/immediate_local_scheduler_helper'
|
5
5
|
|
6
6
|
class TestImmediateScheduler < Minitest::Test
|
7
7
|
include ImmediateLocalSchedulerTestHelper
|
8
8
|
|
9
9
|
def setup
|
10
|
-
@scheduler =
|
10
|
+
@scheduler = Rx::ImmediateScheduler.instance
|
11
11
|
end
|
12
12
|
|
13
13
|
def test_now
|
@@ -1,12 +1,12 @@
|
|
1
1
|
# Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
|
2
2
|
|
3
3
|
require 'test_helper'
|
4
|
-
require '
|
4
|
+
require 'rx/concurrency/helpers/immediate_local_scheduler_helper'
|
5
5
|
|
6
6
|
class TestLocalcheduler < Minitest::Test
|
7
7
|
include ImmediateLocalSchedulerTestHelper
|
8
8
|
|
9
9
|
def setup
|
10
|
-
@scheduler =
|
10
|
+
@scheduler = Rx::LocalScheduler.new
|
11
11
|
end
|
12
12
|
end
|
@@ -9,7 +9,7 @@ class TestScheduledItem < Minitest::Test
|
|
9
9
|
|
10
10
|
def setup
|
11
11
|
@state = []
|
12
|
-
@item =
|
12
|
+
@item = Rx::ScheduledItem.new(DummyScheduler.new, @state, 5) do |_, state|
|
13
13
|
state << 1
|
14
14
|
end
|
15
15
|
end
|
@@ -21,9 +21,9 @@ class TestScheduledItem < Minitest::Test
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def test_invocation
|
24
|
-
less =
|
25
|
-
more =
|
26
|
-
same =
|
24
|
+
less = Rx::ScheduledItem.new(DummyScheduler.new, @state, 0)
|
25
|
+
more = Rx::ScheduledItem.new(DummyScheduler.new, @state, 10)
|
26
|
+
same = Rx::ScheduledItem.new(DummyScheduler.new, @state, 5)
|
27
27
|
|
28
28
|
assert(less < @item)
|
29
29
|
assert(more > @item)
|
@@ -4,7 +4,7 @@ require 'thread'
|
|
4
4
|
require 'test_helper'
|
5
5
|
|
6
6
|
class MyScheduler
|
7
|
-
include
|
7
|
+
include Rx::Scheduler
|
8
8
|
|
9
9
|
attr_reader :now
|
10
10
|
attr_accessor :wait_cycles
|
@@ -41,7 +41,7 @@ class TestBaseScheduler < Minitest::Test
|
|
41
41
|
end
|
42
42
|
|
43
43
|
def test_now
|
44
|
-
assert_equal(Time.now.to_i,
|
44
|
+
assert_equal(Time.now.to_i, Rx::Scheduler.now.to_i)
|
45
45
|
end
|
46
46
|
|
47
47
|
def test_schedule_absolute
|
@@ -1,7 +1,7 @@
|
|
1
1
|
# Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
|
2
2
|
|
3
3
|
require 'test_helper'
|
4
|
-
require '
|
4
|
+
require 'rx/concurrency/helpers/historical_virtual_scheduler_helper'
|
5
5
|
|
6
6
|
class TestVirtualTimeScheduler < Minitest::Test
|
7
7
|
|
@@ -9,6 +9,6 @@ class TestVirtualTimeScheduler < Minitest::Test
|
|
9
9
|
|
10
10
|
def setup
|
11
11
|
@start = Time.now.to_i
|
12
|
-
@scheduler =
|
12
|
+
@scheduler = Rx::VirtualTimeScheduler.new(@start)
|
13
13
|
end
|
14
14
|
end
|
@@ -3,23 +3,23 @@
|
|
3
3
|
require 'test_helper'
|
4
4
|
|
5
5
|
class TestNotification < Minitest::Test
|
6
|
-
include
|
6
|
+
include Rx::ReactiveTest
|
7
7
|
|
8
8
|
def test_to_observable_empty
|
9
|
-
scheduler =
|
9
|
+
scheduler = Rx::TestScheduler.new
|
10
10
|
|
11
11
|
res = scheduler.configure do
|
12
|
-
|
12
|
+
Rx::Notification.create_on_completed.to_observable(scheduler)
|
13
13
|
end
|
14
14
|
|
15
15
|
assert_messages [on_completed(201)], res.messages
|
16
16
|
end
|
17
17
|
|
18
18
|
def test_to_observable_just
|
19
|
-
scheduler =
|
19
|
+
scheduler = Rx::TestScheduler.new
|
20
20
|
|
21
21
|
res = scheduler.configure do
|
22
|
-
|
22
|
+
Rx::Notification.create_on_next(42).to_observable(scheduler)
|
23
23
|
end
|
24
24
|
|
25
25
|
assert_messages [on_next(201, 42), on_completed(201)], res.messages
|
@@ -27,19 +27,19 @@ class TestNotification < Minitest::Test
|
|
27
27
|
|
28
28
|
def test_to_observable_raise
|
29
29
|
err = RuntimeError.new
|
30
|
-
scheduler =
|
30
|
+
scheduler = Rx::TestScheduler.new
|
31
31
|
|
32
32
|
res = scheduler.configure do
|
33
|
-
|
33
|
+
Rx::Notification.create_on_error(err).to_observable(scheduler)
|
34
34
|
end
|
35
35
|
|
36
36
|
assert_messages [on_error(201, err)], res.messages
|
37
37
|
end
|
38
38
|
|
39
39
|
def test_notification_equality
|
40
|
-
n =
|
41
|
-
e =
|
42
|
-
c =
|
40
|
+
n = Rx::Notification.create_on_next(42)
|
41
|
+
e = Rx::Notification.create_on_error(RuntimeError.new)
|
42
|
+
c = Rx::Notification.create_on_completed
|
43
43
|
|
44
44
|
n1 = n
|
45
45
|
n2 = n
|
@@ -58,7 +58,7 @@ class TestNotification < Minitest::Test
|
|
58
58
|
end
|
59
59
|
|
60
60
|
def test_on_next_initialize
|
61
|
-
n =
|
61
|
+
n = Rx::Notification.create_on_next(42)
|
62
62
|
|
63
63
|
assert n.on_next?
|
64
64
|
assert n.has_value?
|
@@ -66,10 +66,10 @@ class TestNotification < Minitest::Test
|
|
66
66
|
end
|
67
67
|
|
68
68
|
def test_on_next_equality
|
69
|
-
n1 =
|
70
|
-
n2 =
|
71
|
-
n3 =
|
72
|
-
n4 =
|
69
|
+
n1 = Rx::Notification.create_on_next(42)
|
70
|
+
n2 = Rx::Notification.create_on_next(42)
|
71
|
+
n3 = Rx::Notification.create_on_next(24)
|
72
|
+
n4 = Rx::Notification.create_on_completed
|
73
73
|
|
74
74
|
assert(n1.eql? n1)
|
75
75
|
assert(n1.eql? n2)
|
@@ -80,7 +80,7 @@ class TestNotification < Minitest::Test
|
|
80
80
|
end
|
81
81
|
|
82
82
|
def test_on_next_to_s
|
83
|
-
n =
|
83
|
+
n = Rx::Notification.create_on_next(42)
|
84
84
|
s = n.to_s
|
85
85
|
|
86
86
|
assert (s.include? '42')
|
@@ -88,10 +88,10 @@ class TestNotification < Minitest::Test
|
|
88
88
|
end
|
89
89
|
|
90
90
|
class AcceptObserver
|
91
|
-
include
|
91
|
+
include Rx::Observer
|
92
92
|
|
93
93
|
def initialize
|
94
|
-
@config =
|
94
|
+
@config = Rx::ObserverConfiguration.new
|
95
95
|
yield @config
|
96
96
|
end
|
97
97
|
|
@@ -111,7 +111,7 @@ class TestNotification < Minitest::Test
|
|
111
111
|
class CheckOnNextObserver
|
112
112
|
attr_reader :value
|
113
113
|
|
114
|
-
include
|
114
|
+
include Rx::Observer
|
115
115
|
|
116
116
|
def on_next(value)
|
117
117
|
@value = value
|
@@ -120,7 +120,7 @@ class TestNotification < Minitest::Test
|
|
120
120
|
|
121
121
|
def test_on_next_accept
|
122
122
|
con = CheckOnNextObserver.new
|
123
|
-
n1 =
|
123
|
+
n1 = Rx::Notification.create_on_next(42)
|
124
124
|
n1.accept(con)
|
125
125
|
|
126
126
|
assert_equal 42, con.value
|
@@ -1,20 +1,20 @@
|
|
1
1
|
# Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.
|
2
2
|
|
3
|
-
require
|
3
|
+
require "#{File.dirname(__FILE__)}/../../test_helper"
|
4
4
|
|
5
5
|
class TestObservableCreation < Minitest::Test
|
6
|
-
include
|
6
|
+
include Rx::ReactiveTest
|
7
7
|
|
8
8
|
# Create Methods
|
9
9
|
|
10
10
|
def test_create_next
|
11
|
-
scheduler =
|
11
|
+
scheduler = Rx::TestScheduler.new
|
12
12
|
|
13
13
|
res = scheduler.configure do
|
14
|
-
|
14
|
+
Rx::Observable.create do |obs|
|
15
15
|
obs.on_next 1
|
16
16
|
obs.on_next 2
|
17
|
-
|
17
|
+
Rx::Subscription.empty
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
@@ -22,10 +22,10 @@ class TestObservableCreation < Minitest::Test
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def test_create_next_nil
|
25
|
-
scheduler =
|
25
|
+
scheduler = Rx::TestScheduler.new
|
26
26
|
|
27
27
|
res = scheduler.configure do
|
28
|
-
|
28
|
+
Rx::Observable.create do |obs|
|
29
29
|
obs.on_next 1
|
30
30
|
obs.on_next 2
|
31
31
|
nil
|
@@ -36,10 +36,10 @@ class TestObservableCreation < Minitest::Test
|
|
36
36
|
end
|
37
37
|
|
38
38
|
def test_create_completed
|
39
|
-
scheduler =
|
39
|
+
scheduler = Rx::TestScheduler.new
|
40
40
|
|
41
41
|
res = scheduler.configure do
|
42
|
-
|
42
|
+
Rx::Observable.create do |obs|
|
43
43
|
obs.on_completed
|
44
44
|
obs.on_next 100
|
45
45
|
obs.on_error RuntimeError.new
|
@@ -53,10 +53,10 @@ class TestObservableCreation < Minitest::Test
|
|
53
53
|
|
54
54
|
def test_create_error
|
55
55
|
err = RuntimeError.new
|
56
|
-
scheduler =
|
56
|
+
scheduler = Rx::TestScheduler.new
|
57
57
|
|
58
58
|
res = scheduler.configure do
|
59
|
-
|
59
|
+
Rx::Observable.create do |obs|
|
60
60
|
obs.on_error err
|
61
61
|
obs.on_next 100
|
62
62
|
obs.on_error RuntimeError.new
|
@@ -69,11 +69,10 @@ class TestObservableCreation < Minitest::Test
|
|
69
69
|
end
|
70
70
|
|
71
71
|
def test_create_unsubscribe
|
72
|
-
|
73
|
-
scheduler = RxRuby::TestScheduler.new
|
72
|
+
scheduler = Rx::TestScheduler.new
|
74
73
|
|
75
74
|
res = scheduler.configure do
|
76
|
-
|
75
|
+
Rx::Observable.create do |obs|
|
77
76
|
stopped = false
|
78
77
|
|
79
78
|
obs.on_next 1
|
@@ -95,7 +94,7 @@ class TestObservableCreation < Minitest::Test
|
|
95
94
|
obs.on_next 6 unless stopped
|
96
95
|
})
|
97
96
|
|
98
|
-
|
97
|
+
Rx::Subscription.create { stopped = true }
|
99
98
|
end
|
100
99
|
end
|
101
100
|
|
@@ -111,12 +110,12 @@ class TestObservableCreation < Minitest::Test
|
|
111
110
|
def test_create_observer_raises
|
112
111
|
assert_raises(RuntimeError) do
|
113
112
|
|
114
|
-
observable =
|
113
|
+
observable = Rx::Observable.create do |obs|
|
115
114
|
obs.on_next 1
|
116
115
|
nil
|
117
116
|
end
|
118
117
|
|
119
|
-
observer =
|
118
|
+
observer = Rx::Observer.configure do |o|
|
120
119
|
o.on_next {|x| raise RuntimeError.new }
|
121
120
|
end
|
122
121
|
|
@@ -125,12 +124,12 @@ class TestObservableCreation < Minitest::Test
|
|
125
124
|
|
126
125
|
assert_raises(RuntimeError) do
|
127
126
|
|
128
|
-
observable =
|
127
|
+
observable = Rx::Observable.create do |obs|
|
129
128
|
obs.on_error RuntimeError.new
|
130
129
|
nil
|
131
130
|
end
|
132
131
|
|
133
|
-
observer =
|
132
|
+
observer = Rx::Observer.configure do |o|
|
134
133
|
o.on_error {|err| raise RuntimeError.new }
|
135
134
|
end
|
136
135
|
|
@@ -139,12 +138,12 @@ class TestObservableCreation < Minitest::Test
|
|
139
138
|
|
140
139
|
assert_raises(RuntimeError) do
|
141
140
|
|
142
|
-
observable =
|
141
|
+
observable = Rx::Observable.create do |obs|
|
143
142
|
obs.on_completed
|
144
143
|
nil
|
145
144
|
end
|
146
145
|
|
147
|
-
observer =
|
146
|
+
observer = Rx::Observer.configure do |o|
|
148
147
|
o.on_completed { raise RuntimeError.new }
|
149
148
|
end
|
150
149
|
|
@@ -155,13 +154,13 @@ class TestObservableCreation < Minitest::Test
|
|
155
154
|
# Defer Method tests
|
156
155
|
|
157
156
|
def test_defer_complete
|
158
|
-
scheduler =
|
157
|
+
scheduler = Rx::TestScheduler.new
|
159
158
|
|
160
159
|
invoked = 0
|
161
160
|
xs = nil
|
162
161
|
|
163
162
|
res = scheduler.configure do
|
164
|
-
|
163
|
+
Rx::Observable.defer do
|
165
164
|
invoked += 1
|
166
165
|
|
167
166
|
xs = scheduler.create_cold_observable(
|
@@ -181,14 +180,14 @@ class TestObservableCreation < Minitest::Test
|
|
181
180
|
end
|
182
181
|
|
183
182
|
def test_defer_error
|
184
|
-
scheduler =
|
183
|
+
scheduler = Rx::TestScheduler.new
|
185
184
|
|
186
185
|
invoked = 0
|
187
186
|
xs = nil
|
188
187
|
err = RuntimeError.new
|
189
188
|
|
190
189
|
res = scheduler.configure do
|
191
|
-
|
190
|
+
Rx::Observable.defer do
|
192
191
|
invoked += 1
|
193
192
|
|
194
193
|
xs = scheduler.create_cold_observable(
|
@@ -208,13 +207,13 @@ class TestObservableCreation < Minitest::Test
|
|
208
207
|
end
|
209
208
|
|
210
209
|
def test_defer_unsubscribe
|
211
|
-
scheduler =
|
210
|
+
scheduler = Rx::TestScheduler.new
|
212
211
|
|
213
212
|
invoked = 0
|
214
213
|
xs = nil
|
215
214
|
|
216
215
|
res = scheduler.configure do
|
217
|
-
|
216
|
+
Rx::Observable.defer do
|
218
217
|
invoked += 1
|
219
218
|
|
220
219
|
xs = scheduler.create_cold_observable(
|
@@ -235,13 +234,13 @@ class TestObservableCreation < Minitest::Test
|
|
235
234
|
end
|
236
235
|
|
237
236
|
def test_defer_raise
|
238
|
-
scheduler =
|
237
|
+
scheduler = Rx::TestScheduler.new
|
239
238
|
|
240
239
|
invoked = 0
|
241
240
|
err = RuntimeError.new
|
242
241
|
|
243
242
|
res = scheduler.configure do
|
244
|
-
|
243
|
+
Rx::Observable.defer do
|
245
244
|
invoked += 1
|
246
245
|
raise err
|
247
246
|
end
|
@@ -256,10 +255,10 @@ class TestObservableCreation < Minitest::Test
|
|
256
255
|
# Empty methods
|
257
256
|
|
258
257
|
def test_empty_basic
|
259
|
-
scheduler =
|
258
|
+
scheduler = Rx::TestScheduler.new
|
260
259
|
|
261
260
|
res = scheduler.configure do
|
262
|
-
|
261
|
+
Rx::Observable.empty(scheduler)
|
263
262
|
end
|
264
263
|
|
265
264
|
msgs = [on_completed(201)]
|
@@ -267,10 +266,10 @@ class TestObservableCreation < Minitest::Test
|
|
267
266
|
end
|
268
267
|
|
269
268
|
def test_empty_disposed
|
270
|
-
scheduler =
|
269
|
+
scheduler = Rx::TestScheduler.new
|
271
270
|
|
272
271
|
res = scheduler.configure({:disposed => 200}) do
|
273
|
-
|
272
|
+
Rx::Observable.empty(scheduler)
|
274
273
|
end
|
275
274
|
|
276
275
|
msgs = []
|
@@ -278,11 +277,11 @@ class TestObservableCreation < Minitest::Test
|
|
278
277
|
end
|
279
278
|
|
280
279
|
def test_empty_observer_raises
|
281
|
-
scheduler =
|
280
|
+
scheduler = Rx::TestScheduler.new
|
282
281
|
|
283
|
-
xs =
|
282
|
+
xs = Rx::Observable.empty(scheduler)
|
284
283
|
|
285
|
-
observer =
|
284
|
+
observer = Rx::Observer.configure do |obs|
|
286
285
|
obs.on_completed { raise RuntimeError.new }
|
287
286
|
end
|
288
287
|
|
@@ -294,10 +293,10 @@ class TestObservableCreation < Minitest::Test
|
|
294
293
|
# Generate methods
|
295
294
|
|
296
295
|
def test_generate_finite
|
297
|
-
scheduler =
|
296
|
+
scheduler = Rx::TestScheduler.new
|
298
297
|
|
299
298
|
res = scheduler.configure do
|
300
|
-
|
299
|
+
Rx::Observable.generate(
|
301
300
|
0,
|
302
301
|
lambda { |x| return x <= 3 },
|
303
302
|
lambda { |x| return x + 1 },
|
@@ -316,11 +315,11 @@ class TestObservableCreation < Minitest::Test
|
|
316
315
|
end
|
317
316
|
|
318
317
|
def test_generate_condition_raise
|
319
|
-
scheduler =
|
318
|
+
scheduler = Rx::TestScheduler.new
|
320
319
|
err = RuntimeError.new
|
321
320
|
|
322
321
|
res = scheduler.configure do
|
323
|
-
|
322
|
+
Rx::Observable.generate(
|
324
323
|
0,
|
325
324
|
lambda { |x| raise err },
|
326
325
|
lambda { |x| return x + 1 },
|
@@ -335,11 +334,11 @@ class TestObservableCreation < Minitest::Test
|
|
335
334
|
end
|
336
335
|
|
337
336
|
def test_generate_raise_result_selector
|
338
|
-
scheduler =
|
337
|
+
scheduler = Rx::TestScheduler.new
|
339
338
|
err = RuntimeError.new
|
340
339
|
|
341
340
|
res = scheduler.configure do
|
342
|
-
|
341
|
+
Rx::Observable.generate(
|
343
342
|
0,
|
344
343
|
lambda { |x| return true },
|
345
344
|
lambda { |x| return x + 1 },
|
@@ -354,11 +353,11 @@ class TestObservableCreation < Minitest::Test
|
|
354
353
|
end
|
355
354
|
|
356
355
|
def test_generate_raise_iterate
|
357
|
-
scheduler =
|
356
|
+
scheduler = Rx::TestScheduler.new
|
358
357
|
err = RuntimeError.new
|
359
358
|
|
360
359
|
res = scheduler.configure do
|
361
|
-
|
360
|
+
Rx::Observable.generate(
|
362
361
|
0,
|
363
362
|
lambda { |x| return true },
|
364
363
|
lambda { |x| raise err },
|
@@ -374,10 +373,10 @@ class TestObservableCreation < Minitest::Test
|
|
374
373
|
end
|
375
374
|
|
376
375
|
def test_generate_dispose
|
377
|
-
scheduler =
|
376
|
+
scheduler = Rx::TestScheduler.new
|
378
377
|
|
379
378
|
res = scheduler.configure(:disposed => 203) do
|
380
|
-
|
379
|
+
Rx::Observable.generate(
|
381
380
|
0,
|
382
381
|
lambda { |x| return x <= 3 },
|
383
382
|
lambda { |x| return x + 1 },
|
@@ -395,10 +394,10 @@ class TestObservableCreation < Minitest::Test
|
|
395
394
|
# Never methods
|
396
395
|
|
397
396
|
def test_never_basic
|
398
|
-
scheduler =
|
397
|
+
scheduler = Rx::TestScheduler.new
|
399
398
|
|
400
399
|
res = scheduler.configure do
|
401
|
-
|
400
|
+
Rx::Observable.never
|
402
401
|
end
|
403
402
|
|
404
403
|
msgs = []
|
@@ -408,10 +407,10 @@ class TestObservableCreation < Minitest::Test
|
|
408
407
|
# Range methods
|
409
408
|
|
410
409
|
def test_range_zero
|
411
|
-
scheduler =
|
410
|
+
scheduler = Rx::TestScheduler.new
|
412
411
|
|
413
412
|
res = scheduler.configure do
|
414
|
-
|
413
|
+
Rx::Observable.range(0, 0, scheduler)
|
415
414
|
end
|
416
415
|
|
417
416
|
msgs = [on_completed(201)]
|
@@ -419,10 +418,10 @@ class TestObservableCreation < Minitest::Test
|
|
419
418
|
end
|
420
419
|
|
421
420
|
def test_range_one
|
422
|
-
scheduler =
|
421
|
+
scheduler = Rx::TestScheduler.new
|
423
422
|
|
424
423
|
res = scheduler.configure do
|
425
|
-
|
424
|
+
Rx::Observable.range(0, 1, scheduler)
|
426
425
|
end
|
427
426
|
|
428
427
|
msgs = [on_next(201, 0), on_completed(202)]
|
@@ -430,10 +429,10 @@ class TestObservableCreation < Minitest::Test
|
|
430
429
|
end
|
431
430
|
|
432
431
|
def test_range_five
|
433
|
-
scheduler =
|
432
|
+
scheduler = Rx::TestScheduler.new
|
434
433
|
|
435
434
|
res = scheduler.configure do
|
436
|
-
|
435
|
+
Rx::Observable.range(10, 5, scheduler)
|
437
436
|
end
|
438
437
|
|
439
438
|
msgs = [
|
@@ -447,11 +446,11 @@ class TestObservableCreation < Minitest::Test
|
|
447
446
|
assert_messages msgs, res.messages
|
448
447
|
end
|
449
448
|
|
450
|
-
def
|
451
|
-
scheduler =
|
449
|
+
def test_range_dispose
|
450
|
+
scheduler = Rx::TestScheduler.new
|
452
451
|
|
453
|
-
res = scheduler.configure(:
|
454
|
-
|
452
|
+
res = scheduler.configure(:disposed => 204) do
|
453
|
+
Rx::Observable.range(-10, 5, scheduler)
|
455
454
|
end
|
456
455
|
|
457
456
|
msgs = [
|
@@ -463,21 +462,179 @@ class TestObservableCreation < Minitest::Test
|
|
463
462
|
end
|
464
463
|
|
465
464
|
# Repeat methods
|
466
|
-
|
467
465
|
=begin
|
466
|
+
# the clock is actually off, because of not using the `scheduler.schedule_recursive`
|
468
467
|
def test_repeat_value_count_zero
|
469
|
-
scheduler =
|
468
|
+
scheduler = Rx::TestScheduler.new
|
470
469
|
|
471
|
-
res = scheduler.configure
|
472
|
-
|
470
|
+
res = scheduler.configure do
|
471
|
+
Rx::Observable.repeat(42, 0, scheduler)
|
473
472
|
end
|
474
473
|
|
475
474
|
msgs = [
|
476
475
|
on_completed(201)
|
477
476
|
]
|
478
|
-
assert_messages msgs, res.messages
|
477
|
+
assert_messages msgs, res.messages
|
478
|
+
end
|
479
|
+
|
480
|
+
def test_repeat_value_once
|
481
|
+
scheduler = Rx::TestScheduler.new
|
482
|
+
|
483
|
+
res = scheduler.configure do
|
484
|
+
Rx::Observable.repeat(42, 1, scheduler)
|
485
|
+
end
|
486
|
+
|
487
|
+
msgs = [
|
488
|
+
on_next(201, 42),
|
489
|
+
on_completed(202)
|
490
|
+
]
|
491
|
+
assert_messages msgs, res.messages
|
479
492
|
end
|
480
493
|
=end
|
481
494
|
|
495
|
+
def test_repeat_infinitely_dispose
|
496
|
+
scheduler = Rx::TestScheduler.new
|
497
|
+
|
498
|
+
res = scheduler.configure(:disposed => 203) do
|
499
|
+
Rx::Observable.repeat_infinitely({a: 1}, scheduler)
|
500
|
+
end
|
501
|
+
|
502
|
+
msgs = [
|
503
|
+
on_next(201, {a: 1}),
|
504
|
+
on_next(202, {a: 1})
|
505
|
+
]
|
506
|
+
assert_messages msgs, res.messages
|
507
|
+
end
|
508
|
+
|
509
|
+
# of_enumerable/of_enumerator
|
510
|
+
def test_of_enumerable_empty
|
511
|
+
scheduler = Rx::TestScheduler.new
|
512
|
+
|
513
|
+
res = scheduler.configure do
|
514
|
+
Rx::Observable.of_enumerable([], scheduler)
|
515
|
+
end
|
516
|
+
|
517
|
+
msgs = [
|
518
|
+
on_completed(201)
|
519
|
+
]
|
520
|
+
assert_messages msgs, res.messages
|
521
|
+
end
|
522
|
+
|
523
|
+
def test_of_enumerable_simple
|
524
|
+
scheduler = Rx::TestScheduler.new
|
525
|
+
|
526
|
+
res = scheduler.configure do
|
527
|
+
Rx::Observable.of_enumerable(%w(foo bar baz), scheduler)
|
528
|
+
end
|
529
|
+
|
530
|
+
msgs = [
|
531
|
+
on_next(201, 'foo'),
|
532
|
+
on_next(202, 'bar'),
|
533
|
+
on_next(203, 'baz'),
|
534
|
+
on_completed(204)
|
535
|
+
]
|
536
|
+
assert_messages msgs, res.messages
|
537
|
+
end
|
538
|
+
|
539
|
+
|
540
|
+
def test_of_enumerator_empty
|
541
|
+
scheduler = Rx::TestScheduler.new
|
542
|
+
|
543
|
+
res = scheduler.configure do
|
544
|
+
Rx::Observable.of_enumerator([].to_enum, scheduler)
|
545
|
+
end
|
546
|
+
|
547
|
+
msgs = [
|
548
|
+
on_completed(201)
|
549
|
+
]
|
550
|
+
assert_messages msgs, res.messages
|
551
|
+
end
|
552
|
+
|
553
|
+
def test_of_enumerator_error
|
554
|
+
scheduler = Rx::TestScheduler.new
|
555
|
+
err = RuntimeError.new
|
556
|
+
fibs = Enumerator.new do |x|
|
557
|
+
a = b = 1
|
558
|
+
6.times do
|
559
|
+
x << a
|
560
|
+
a, b = b, a + b
|
561
|
+
end
|
562
|
+
raise err
|
563
|
+
end
|
564
|
+
res = scheduler.configure do
|
565
|
+
Rx::Observable.of_enumerator(fibs, scheduler)
|
566
|
+
end
|
567
|
+
|
568
|
+
msgs = [
|
569
|
+
on_next(201, 1),
|
570
|
+
on_next(202, 1),
|
571
|
+
on_next(203, 2),
|
572
|
+
on_next(204, 3),
|
573
|
+
on_next(205, 5),
|
574
|
+
on_next(206, 8),
|
575
|
+
on_error(207, err)
|
576
|
+
]
|
577
|
+
assert_messages msgs, res.messages
|
578
|
+
end
|
579
|
+
|
580
|
+
def test_of_enumerator_infinite_dispose
|
581
|
+
scheduler = Rx::TestScheduler.new
|
582
|
+
|
583
|
+
res = scheduler.configure(:disposed => 205) do
|
584
|
+
Rx::Observable.of_enumerator([42].cycle, scheduler)
|
585
|
+
end
|
586
|
+
|
587
|
+
msgs = [
|
588
|
+
on_next(201, 42),
|
589
|
+
on_next(202, 42),
|
590
|
+
on_next(203, 42),
|
591
|
+
on_next(204, 42)
|
592
|
+
]
|
593
|
+
assert_messages msgs, res.messages
|
594
|
+
end
|
595
|
+
|
596
|
+
# from_array methods
|
597
|
+
def test_from_array_empty
|
598
|
+
scheduler = Rx::TestScheduler.new
|
482
599
|
|
600
|
+
res = scheduler.configure do
|
601
|
+
Rx::Observable.from_array([], scheduler)
|
602
|
+
end
|
603
|
+
|
604
|
+
msgs = [
|
605
|
+
on_completed(201)
|
606
|
+
]
|
607
|
+
assert_messages msgs, res.messages
|
608
|
+
end
|
609
|
+
|
610
|
+
def test_from_array_simple
|
611
|
+
scheduler = Rx::TestScheduler.new
|
612
|
+
|
613
|
+
res = scheduler.configure do
|
614
|
+
Rx::Observable.from_array([1, 2, 3], scheduler)
|
615
|
+
end
|
616
|
+
|
617
|
+
msgs = [
|
618
|
+
on_next(201, 1),
|
619
|
+
on_next(202, 2),
|
620
|
+
on_next(203, 3),
|
621
|
+
on_completed(204)
|
622
|
+
]
|
623
|
+
assert_messages msgs, res.messages
|
624
|
+
end
|
625
|
+
|
626
|
+
def test_from_array_complex_dispose
|
627
|
+
scheduler = Rx::TestScheduler.new
|
628
|
+
|
629
|
+
res = scheduler.configure(:disposed => 204) do
|
630
|
+
Rx::Observable.from_array([[], [[]], [[[]]], [[[[]]]]], scheduler)
|
631
|
+
end
|
632
|
+
|
633
|
+
msgs = [
|
634
|
+
on_next(201, []),
|
635
|
+
on_next(202, [[]]),
|
636
|
+
on_next(203, [[[]]])
|
637
|
+
]
|
638
|
+
assert_messages msgs, res.messages
|
639
|
+
end
|
483
640
|
end
|