diff options
author | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-12-01 15:41:50 +0000 |
---|---|---|
committer | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2017-12-01 15:41:50 +0000 |
commit | 4d7b0b9112f2adf9e87ef75056f930bf7c1f3dc4 (patch) | |
tree | 8d712e18a619a9720d181d0d44e8cc2474ff31ee /spec/ruby/core/array | |
parent | 821d9a2d30f2e0d3f9009dc001b4b49aaa63c66e (diff) |
Update to ruby/spec@bacedc5
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@60973 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/ruby/core/array')
-rw-r--r-- | spec/ruby/core/array/append_spec.rb | 7 | ||||
-rw-r--r-- | spec/ruby/core/array/prepend_spec.rb | 9 | ||||
-rw-r--r-- | spec/ruby/core/array/push_spec.rb | 33 | ||||
-rw-r--r-- | spec/ruby/core/array/shared/push.rb | 33 | ||||
-rw-r--r-- | spec/ruby/core/array/shared/unshift.rb | 46 | ||||
-rw-r--r-- | spec/ruby/core/array/sort_spec.rb | 4 | ||||
-rw-r--r-- | spec/ruby/core/array/unshift_spec.rb | 47 |
7 files changed, 102 insertions, 77 deletions
diff --git a/spec/ruby/core/array/append_spec.rb b/spec/ruby/core/array/append_spec.rb index 4c65004c58..90e1688c5a 100644 --- a/spec/ruby/core/array/append_spec.rb +++ b/spec/ruby/core/array/append_spec.rb @@ -1,5 +1,6 @@ require File.expand_path('../../../spec_helper', __FILE__) require File.expand_path('../fixtures/classes', __FILE__) +require File.expand_path('../shared/push', __FILE__) describe "Array#<<" do it "pushes the object onto the end of the array" do @@ -33,3 +34,9 @@ describe "Array#<<" do lambda { ArraySpecs.frozen_array << 5 }.should raise_error(RuntimeError) end end + +ruby_version_is "2.5" do + describe "Array#append" do + it_behaves_like(:array_push, :append) + end +end diff --git a/spec/ruby/core/array/prepend_spec.rb b/spec/ruby/core/array/prepend_spec.rb new file mode 100644 index 0000000000..d8c6bad1a8 --- /dev/null +++ b/spec/ruby/core/array/prepend_spec.rb @@ -0,0 +1,9 @@ +require File.expand_path('../../../spec_helper', __FILE__) +require File.expand_path('../fixtures/classes', __FILE__) +require File.expand_path('../shared/unshift', __FILE__) + +ruby_version_is "2.5" do + describe "Array#prepend" do + it_behaves_like(:array_unshift, :prepend) + end +end diff --git a/spec/ruby/core/array/push_spec.rb b/spec/ruby/core/array/push_spec.rb index 562a6888dd..0207474579 100644 --- a/spec/ruby/core/array/push_spec.rb +++ b/spec/ruby/core/array/push_spec.rb @@ -1,36 +1,7 @@ require File.expand_path('../../../spec_helper', __FILE__) require File.expand_path('../fixtures/classes', __FILE__) +require File.expand_path('../shared/push', __FILE__) describe "Array#push" do - it "appends the arguments to the array" do - a = [ "a", "b", "c" ] - a.push("d", "e", "f").should equal(a) - a.push().should == ["a", "b", "c", "d", "e", "f"] - a.push(5) - a.should == ["a", "b", "c", "d", "e", "f", 5] - - a = [0, 1] - a.push(2) - a.should == [0, 1, 2] - end - - it "isn't confused by previous shift" do - a = [ "a", "b", "c" ] - a.shift - a.push("foo") - a.should == ["b", "c", "foo"] - end - - it "properly handles recursive arrays" do - empty = ArraySpecs.empty_recursive_array - empty.push(:last).should == [empty, :last] - - array = ArraySpecs.recursive_array - array.push(:last).should == [1, 'two', 3.0, array, array, array, array, array, :last] - end - - it "raises a RuntimeError on a frozen array" do - lambda { ArraySpecs.frozen_array.push(1) }.should raise_error(RuntimeError) - lambda { ArraySpecs.frozen_array.push }.should raise_error(RuntimeError) - end + it_behaves_like(:array_push, :push) end diff --git a/spec/ruby/core/array/shared/push.rb b/spec/ruby/core/array/shared/push.rb new file mode 100644 index 0000000000..5951b71a19 --- /dev/null +++ b/spec/ruby/core/array/shared/push.rb @@ -0,0 +1,33 @@ +describe :array_push, shared: true do + it "appends the arguments to the array" do + a = [ "a", "b", "c" ] + a.send(@method, "d", "e", "f").should equal(a) + a.send(@method).should == ["a", "b", "c", "d", "e", "f"] + a.send(@method, 5) + a.should == ["a", "b", "c", "d", "e", "f", 5] + + a = [0, 1] + a.send(@method, 2) + a.should == [0, 1, 2] + end + + it "isn't confused by previous shift" do + a = [ "a", "b", "c" ] + a.shift + a.send(@method, "foo") + a.should == ["b", "c", "foo"] + end + + it "properly handles recursive arrays" do + empty = ArraySpecs.empty_recursive_array + empty.send(@method, :last).should == [empty, :last] + + array = ArraySpecs.recursive_array + array.send(@method, :last).should == [1, 'two', 3.0, array, array, array, array, array, :last] + end + + it "raises a RuntimeError on a frozen array" do + lambda { ArraySpecs.frozen_array.send(@method, 1) }.should raise_error(RuntimeError) + lambda { ArraySpecs.frozen_array.send(@method) }.should raise_error(RuntimeError) + end +end diff --git a/spec/ruby/core/array/shared/unshift.rb b/spec/ruby/core/array/shared/unshift.rb new file mode 100644 index 0000000000..367bab4166 --- /dev/null +++ b/spec/ruby/core/array/shared/unshift.rb @@ -0,0 +1,46 @@ +describe :array_unshift, shared: true do + it "prepends object to the original array" do + a = [1, 2, 3] + a.send(@method, "a").should equal(a) + a.should == ['a', 1, 2, 3] + a.send(@method).should equal(a) + a.should == ['a', 1, 2, 3] + a.send(@method, 5, 4, 3) + a.should == [5, 4, 3, 'a', 1, 2, 3] + + # shift all but one element + a = [1, 2] + a.shift + a.send(@method, 3, 4) + a.should == [3, 4, 2] + + # now shift all elements + a.shift + a.shift + a.shift + a.send(@method, 3, 4) + a.should == [3, 4] + end + + it "quietly ignores unshifting nothing" do + [].send(@method).should == [] + end + + it "properly handles recursive arrays" do + empty = ArraySpecs.empty_recursive_array + empty.send(@method, :new).should == [:new, empty] + + array = ArraySpecs.recursive_array + array.send(@method, :new) + array[0..5].should == [:new, 1, 'two', 3.0, array, array] + end + + it "raises a RuntimeError on a frozen array when the array is modified" do + lambda { ArraySpecs.frozen_array.send(@method, 1) }.should raise_error(RuntimeError) + end + + # see [ruby-core:23666] + it "raises a RuntimeError on a frozen array when the array would not be modified" do + lambda { ArraySpecs.frozen_array.send(@method) }.should raise_error(RuntimeError) + end +end diff --git a/spec/ruby/core/array/sort_spec.rb b/spec/ruby/core/array/sort_spec.rb index 584b818caf..0578742175 100644 --- a/spec/ruby/core/array/sort_spec.rb +++ b/spec/ruby/core/array/sort_spec.rb @@ -66,7 +66,9 @@ describe "Array#sort" do it "does not deal with exceptions raised by unimplemented or incorrect #<=>" do o = Object.new - lambda { [o, 1].sort }.should raise_error + lambda { + [o, 1].sort + }.should raise_error(ArgumentError) end it "may take a block which is used to determine the order of objects a and b described as -1, 0 or +1" do diff --git a/spec/ruby/core/array/unshift_spec.rb b/spec/ruby/core/array/unshift_spec.rb index 9467a1a6df..eb224acfe8 100644 --- a/spec/ruby/core/array/unshift_spec.rb +++ b/spec/ruby/core/array/unshift_spec.rb @@ -1,50 +1,7 @@ require File.expand_path('../../../spec_helper', __FILE__) require File.expand_path('../fixtures/classes', __FILE__) +require File.expand_path('../shared/unshift', __FILE__) describe "Array#unshift" do - it "prepends object to the original array" do - a = [1, 2, 3] - a.unshift("a").should equal(a) - a.should == ['a', 1, 2, 3] - a.unshift().should equal(a) - a.should == ['a', 1, 2, 3] - a.unshift(5, 4, 3) - a.should == [5, 4, 3, 'a', 1, 2, 3] - - # shift all but one element - a = [1, 2] - a.shift - a.unshift(3, 4) - a.should == [3, 4, 2] - - # now shift all elements - a.shift - a.shift - a.shift - a.unshift(3, 4) - a.should == [3, 4] - end - - it "quietly ignores unshifting nothing" do - [].unshift().should == [] - [].unshift(*[]).should == [] - end - - it "properly handles recursive arrays" do - empty = ArraySpecs.empty_recursive_array - empty.unshift(:new).should == [:new, empty] - - array = ArraySpecs.recursive_array - array.unshift(:new) - array[0..5].should == [:new, 1, 'two', 3.0, array, array] - end - - it "raises a RuntimeError on a frozen array when the array is modified" do - lambda { ArraySpecs.frozen_array.unshift(1) }.should raise_error(RuntimeError) - end - - # see [ruby-core:23666] - it "raises a RuntimeError on a frozen array when the array would not be modified" do - lambda { ArraySpecs.frozen_array.unshift }.should raise_error(RuntimeError) - end + it_behaves_like(:array_unshift, :unshift) end |