From 9e6fe10f9f367371d4f53c0bef6de7ff414e85c0 Mon Sep 17 00:00:00 2001 From: Colin Surprenant Date: Wed, 16 Nov 2011 11:02:28 -0500 Subject: [PATCH] multiple multile-values auto emit spec --- spec/red_storm/simple_bolt_spec.rb | 35 ++++++++++++++++++++++++++++-- 1 file changed, 33 insertions(+), 2 deletions(-) diff --git a/spec/red_storm/simple_bolt_spec.rb b/spec/red_storm/simple_bolt_spec.rb index 61ff6bf..482fc4c 100644 --- a/spec/red_storm/simple_bolt_spec.rb +++ b/spec/red_storm/simple_bolt_spec.rb @@ -297,7 +297,7 @@ describe RedStorm::SimpleBolt do class RedStorm::Values; end - it "should auto single emit on single value output" do + it "should auto emit on single value output" do class Bolt1 < RedStorm::SimpleBolt on_receive {|tuple| tuple} end @@ -326,7 +326,7 @@ describe RedStorm::SimpleBolt do bolt.execute("output") end - it "should auto single emit on multiple value output" do + it "should auto emit on single multiple-value output" do class Bolt1 < RedStorm::SimpleBolt on_receive {|tuple| tuple} end @@ -355,6 +355,37 @@ describe RedStorm::SimpleBolt do bolt.execute(["output1", "output2"]) end + it "should auto emit on multiple multiple-value output" do + class Bolt1 < RedStorm::SimpleBolt + on_receive {|tuple| tuple} + end + class Bolt2 < RedStorm::SimpleBolt + on_receive :my_method + def my_method(tuple); tuple; end + end + class Bolt3 < RedStorm::SimpleBolt + def on_receive(tuple); tuple; end + end + + collector = mock("Collector") + RedStorm::Values.should_receive(:new).with("output1", "output2").exactly(3).times.and_return("values1") + RedStorm::Values.should_receive(:new).with("output3", "output4").exactly(3).times.and_return("values2") + collector.should_receive(:emit).with("values1").exactly(3).times + collector.should_receive(:emit).with("values2").exactly(3).times + + bolt = Bolt1.new + bolt.prepare(nil, nil, collector) + bolt.execute([["output1", "output2"], ["output3", "output4"]]) + + bolt = Bolt2.new + bolt.prepare(nil, nil, collector) + bolt.execute([["output1", "output2"], ["output3", "output4"]]) + + bolt = Bolt3.new + bolt.prepare(nil, nil, collector) + bolt.execute([["output1", "output2"], ["output3", "output4"]]) + end + it "should anchor on single value output" do class Bolt1 < RedStorm::SimpleBolt on_receive :anchor => true do |tuple|