diff options
Diffstat (limited to 'spec/ruby/core/threadgroup/add_spec.rb')
-rw-r--r-- | spec/ruby/core/threadgroup/add_spec.rb | 36 |
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 |