aboutsummaryrefslogtreecommitdiffstats
path: root/spec/ruby/core/threadgroup/add_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/threadgroup/add_spec.rb')
-rw-r--r--spec/ruby/core/threadgroup/add_spec.rb36
1 files changed, 36 insertions, 0 deletions
diff --git a/spec/ruby/core/threadgroup/add_spec.rb b/spec/ruby/core/threadgroup/add_spec.rb
new file mode 100644
index 0000000000..3b88d3460e
--- /dev/null
+++ b/spec/ruby/core/threadgroup/add_spec.rb
@@ -0,0 +1,36 @@
+require File.expand_path('../../../spec_helper', __FILE__)
+require File.expand_path('../fixtures/classes', __FILE__)
+
+describe "ThreadGroup#add" do
+ before :each do
+ @chan1,@chan2 = Channel.new,Channel.new
+ @thread = Thread.new { @chan1 << :go; @chan2.receive }
+ @chan1.receive
+ end
+
+ after :each do
+ @chan2 << :done
+ @thread.join
+ end
+
+ it "adds the given thread to a group and returns self" do
+ @thread.group.should_not == nil
+
+ tg = ThreadGroup.new
+ tg.add(@thread).should == tg
+ @thread.group.should == tg
+ tg.list.include?(@thread).should == true
+ end
+
+ it "removes itself from any other threadgroup" do
+ tg1 = ThreadGroup.new
+ tg2 = ThreadGroup.new
+
+ tg1.add(@thread)
+ @thread.group.should == tg1
+ tg2.add(@thread)
+ @thread.group.should == tg2
+ tg2.list.include?(@thread).should == true
+ tg1.list.include?(@thread).should == false
+ end
+end