From a3736e97a6ca517c2cd7d3d93a8f2ef86e39e5b5 Mon Sep 17 00:00:00 2001 From: eregon Date: Sun, 7 May 2017 12:04:49 +0000 Subject: Add in-tree mspec and ruby/spec * For easier modifications of ruby/spec by MRI developers. * .gitignore: track changes under spec. * spec/mspec, spec/rubyspec: add in-tree mspec and ruby/spec. These files can therefore be updated like any other file in MRI. Instructions are provided in spec/README. [Feature #13156] [ruby-core:79246] git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@58595 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- spec/rubyspec/library/thread/shared/queue/deque.rb | 37 ++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 spec/rubyspec/library/thread/shared/queue/deque.rb (limited to 'spec/rubyspec/library/thread/shared/queue/deque.rb') diff --git a/spec/rubyspec/library/thread/shared/queue/deque.rb b/spec/rubyspec/library/thread/shared/queue/deque.rb new file mode 100644 index 0000000000..1b06dffa2c --- /dev/null +++ b/spec/rubyspec/library/thread/shared/queue/deque.rb @@ -0,0 +1,37 @@ +describe :queue_deq, shared: true do + it "removes an item from the Queue" do + q = @object.call + q << Object.new + q.size.should == 1 + q.send(@method) + q.size.should == 0 + end + + it "returns items in the order they were added" do + q = @object.call + q << 1 + q << 2 + q.send(@method).should == 1 + q.send(@method).should == 2 + end + + it "blocks the thread until there are items in the queue" do + q = @object.call + v = 0 + + th = Thread.new do + q.send(@method) + v = 1 + end + + v.should == 0 + q << Object.new + th.join + v.should == 1 + end + + it "raises a ThreadError if Queue is empty" do + q = @object.call + lambda { q.send(@method,true) }.should raise_error(ThreadError) + end +end -- cgit v1.2.3