summaryrefslogtreecommitdiff
path: root/spec/ruby/core/queue/initialize_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/ruby/core/queue/initialize_spec.rb')
-rw-r--r--spec/ruby/core/queue/initialize_spec.rb60
1 files changed, 60 insertions, 0 deletions
diff --git a/spec/ruby/core/queue/initialize_spec.rb b/spec/ruby/core/queue/initialize_spec.rb
new file mode 100644
index 0000000000..080e4d0abd
--- /dev/null
+++ b/spec/ruby/core/queue/initialize_spec.rb
@@ -0,0 +1,60 @@
+require_relative '../../spec_helper'
+
+describe "Queue#initialize" do
+ it "can be passed no arguments for an empty Queue" do
+ q = Queue.new
+ q.size.should == 0
+ q.should.empty?
+ end
+
+ it "is a private method" do
+ Queue.private_instance_methods.include?(:initialize).should == true
+ end
+
+ it "adds all elements of the passed Enumerable to self" do
+ q = Queue.new([1, 2, 3])
+ q.size.should == 3
+ q.should_not.empty?
+ q.pop.should == 1
+ q.pop.should == 2
+ q.pop.should == 3
+ q.should.empty?
+ end
+
+ describe "converts the given argument to an Array using #to_a" do
+ it "uses #to_a on the provided Enumerable" do
+ enumerable = MockObject.new('mock-enumerable')
+ enumerable.should_receive(:to_a).and_return([1, 2, 3])
+ q = Queue.new(enumerable)
+ q.size.should == 3
+ q.should_not.empty?
+ q.pop.should == 1
+ q.pop.should == 2
+ q.pop.should == 3
+ q.should.empty?
+ end
+
+ it "raises a TypeError if the given argument can't be converted to an Array" do
+ -> { Queue.new(42) }.should.raise(TypeError)
+ -> { Queue.new(:abc) }.should.raise(TypeError)
+ end
+
+ it "raises a NoMethodError if the given argument raises a NoMethodError during type coercion to an Array" do
+ enumerable = MockObject.new('mock-enumerable')
+ enumerable.should_receive(:to_a).and_raise(NoMethodError)
+ -> { Queue.new(enumerable) }.should.raise(NoMethodError)
+ end
+ end
+
+ it "raises TypeError if the provided Enumerable does not respond to #to_a" do
+ enumerable = MockObject.new('mock-enumerable')
+ -> { Queue.new(enumerable) }.should.raise(TypeError, "can't convert MockObject into Array")
+ end
+
+ it "raises TypeError if #to_a does not return Array" do
+ enumerable = MockObject.new('mock-enumerable')
+ enumerable.should_receive(:to_a).and_return("string")
+
+ -> { Queue.new(enumerable) }.should raise_consistent_error(TypeError, "can't convert MockObject into Array (MockObject#to_a gives String)")
+ end
+end
k rel='alternate' type='text/html' href='https://git.ruby-lang.org/ruby.git/commit/?id=a6c92a85e418dd9b748e37d0f4445784ad1e9c71'/> a6c92a85e418dd9b748e37d0f4445784ad1e9c71 * lib/rubygems/dependency_installer.rb: Pick latest prerelease gem to install. Fixes RubyGems bug #468. * test/rubygems/test_gem_dependency_installer.rb: Test for the above. * lib/rubygems/dependency_installer.rb: Don't display "Done installing documentation" if documentation will not be installed. * lib/rubygems/rdoc.rb: ditto * lib/rubygems/dependency_list.rb: Use Array#concat for Ruby 1.x performance. * lib/rubygems/installer.rb: Use formatted program name when comparing executables. RubyGems pull request #471 * test/rubygems/test_gem_installer.rb: Test for the above. * lib/rubygems/package.rb: Use more explicit feature check to work around JRuby bug #552 * lib/rubygems/ssl_certs/GeoTrust_Global_CA.pem: Added GeoTrust root certificate. * test/rubygems/test_gem_source_list.rb: Use "example" instead of real hostname git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39533 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* lib/rubygems/dependency_installer.rb:  Pick latest prerelease gem to
  install.  Fixes RubyGems bug #468.
* test/rubygems/test_gem_dependency_installer.rb:  Test for the above.

* lib/rubygems/dependency_installer.rb:  Don't display "Done installing
  documentation" if documentation will not be installed.
* lib/rubygems/rdoc.rb:  ditto

* lib/rubygems/dependency_list.rb:  Use Array#concat for Ruby 1.x
  performance.

* lib/rubygems/installer.rb:  Use formatted program name when comparing
  executables.  RubyGems pull request #471
* test/rubygems/test_gem_installer.rb:  Test for the above.

* lib/rubygems/package.rb:  Use more explicit feature check to work
  around JRuby bug #552

* lib/rubygems/ssl_certs/GeoTrust_Global_CA.pem:  Added GeoTrust root
  certificate.

* test/rubygems/test_gem_source_list.rb:  Use "example" instead of real
  hostname


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@39533 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* lib/rubygems/commands/rdoc_command.rb: When overwriting 2012-12-14T05:09:37+00:00 drbrain drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e 2012-12-14T05:09:37+00:00 1dfe3d93fa5d9ddabae8db067c5705ea6e551442 documentation, remove existing documentation first. * lib/rubygems/server.rb: Fixed documentation links. * test/rubygems/test_gem_server.rb: Test for the above. * lib/rubygems/rdoc.rb: Reduced diff with RDoc::RubyGemsHook * test/rubygems/test_gem_rdoc.rb: ditto git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38372 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
  documentation, remove existing documentation first.

* lib/rubygems/server.rb:  Fixed documentation links.
* test/rubygems/test_gem_server.rb:  Test for the above.

* lib/rubygems/rdoc.rb:  Reduced diff with RDoc::RubyGemsHook
* test/rubygems/test_gem_rdoc.rb:  ditto


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@38372 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* lib/rubygems*: Updated to RubyGems 2.0 2012-11-29T06:52:18+00:00 drbrain drbrain@b2dd03c8-39d4-4d8f-98ff-823fe69b080e 2012-11-29T06:52:18+00:00 9694bb8cac12969300692dac5a1cf7aa4e3a46cd * test/rubygems*: ditto. * common.mk (prelude): Updated for RubyGems 2.0 source rearrangement. * tool/change_maker.rb: Allow invalid UTF-8 characters in source files. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
* test/rubygems*:  ditto.

* common.mk (prelude):  Updated for RubyGems 2.0 source rearrangement.

* tool/change_maker.rb:  Allow invalid UTF-8 characters in source
  files.


git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@37976 b2dd03c8-39d4-4d8f-98ff-823fe69b080e