spec/celluloid/block_spec.rb in celluloid-0.18.0.pre vs spec/celluloid/block_spec.rb in celluloid-0.18.0.pre2
- old
+ new
@@ -1,22 +1,23 @@
RSpec.describe "Blocks", actor_system: :global do
class MyBlockActor
include Celluloid
- def initialize(name)
+ def initialize(name, data)
@name = name
+ @data = data
end
attr_reader :name
def ask_for_something(other)
sender_actor = current_actor
- $data << [:outside, @name, current_actor.name]
- other.do_something_and_callback do |value|
- $data << [:yielded, @name, current_actor.name]
- $data << receive_result(:self)
- $data << current_actor.receive_result(:current_actor)
- $data << sender_actor.receive_result(:sender)
+ @data << [:outside, @name, current_actor.name]
+ other.do_something_and_callback do |_value|
+ @data << [:yielded, @name, current_actor.name]
+ @data << receive_result(:self)
+ @data << current_actor.receive_result(:current_actor)
+ @data << sender_actor.receive_result(:sender)
:pete_the_polyglot_alien
end
end
def deferred_excecution(value, &_block)
@@ -32,82 +33,78 @@
end
def defer_for_something(other, &_block)
sender_actor = current_actor
defer do
- $data << [:outside, @name, current_actor.name]
- other.do_something_and_callback do |value|
- $data << [:yielded, @name, current_actor.name]
- $data << receive_result(:self)
- $data << current_actor.receive_result(:current_actor)
- $data << sender_actor.receive_result(:sender)
+ @data << [:outside, @name, current_actor.name]
+ other.do_something_and_callback do |_value|
+ @data << [:yielded, @name, current_actor.name]
+ @data << receive_result(:self)
+ @data << current_actor.receive_result(:current_actor)
+ @data << sender_actor.receive_result(:sender)
:pete_the_polyglot_alien
end
end
end
def do_something_and_callback
- $data << [:something, @name, current_actor.name]
- $data << yield(:foo)
+ @data << [:something, @name, current_actor.name]
+ @data << yield(:foo)
end
def receive_result(result)
[result, @name, current_actor.name]
end
end
it "work between actors" do
- $data = []
+ data = []
- a1 = MyBlockActor.new("one")
- a2 = MyBlockActor.new("two")
+ a1 = MyBlockActor.new("one", data)
+ a2 = MyBlockActor.new("two", data)
a1.ask_for_something a2
expected = [
[:outside, "one", "one"],
[:something, "two", "two"],
[:yielded, "one", "one"],
[:self, "one", "one"],
[:current_actor, "one", "one"],
[:sender, "one", "one"],
- :pete_the_polyglot_alien,
+ :pete_the_polyglot_alien
]
- expect($data).to eq(expected)
+ expect(data).to eq(expected)
end
execute_deferred = proc do
- a1 = MyBlockActor.new("one")
+ a1 = MyBlockActor.new("one", [])
expect(a1.deferred_excecution(:pete_the_polyglot_alien) { |v| v })
- .to eq(:pete_the_polyglot_alien)
+ .to eq(:pete_the_polyglot_alien)
end
- # unless RUBY_ENGINE == 'jruby'
xit("can be deferred", &execute_deferred)
- # else
- # it("can be deferred", &execute_deferred)
- # end
xit "can execute deferred blocks referencing current_actor" do
- a1 = MyBlockActor.new("one")
+ a1 = MyBlockActor.new("one", [])
expect(a1.deferred_current_actor { |v| v }).to be("one")
end
xit "can execute deferred blocks with another actor" do
- $data = []
- a1 = MyBlockActor.new("one")
- a2 = MyBlockActor.new("two")
+ data = []
+ a1 = MyBlockActor.new("one", data)
+ a2 = MyBlockActor.new("two", data)
a1.defer_for_something a2
expected = [
[:outside, "one", "one"],
[:something, "two", "two"],
[:yielded, "one", "one"],
[:self, "one", "one"],
[:current_actor, "one", "one"],
[:sender, "one", "one"],
- :pete_the_polyglot_alien,
+ :pete_the_polyglot_alien
]
- expect($data).to eq(expected)
+ expect(data).to eq(expected)
end
end