diff options
author | Benoit Daloze <eregontp@gmail.com> | 2020-12-27 17:35:32 +0100 |
---|---|---|
committer | Benoit Daloze <eregontp@gmail.com> | 2020-12-27 17:35:32 +0100 |
commit | 727c97da1977544c91b9b3677811da3a44af7d53 (patch) | |
tree | 4f027117edad10789db57ff4b83242753a89e39d /spec/ruby/core/hash | |
parent | 267bed0cd91711e2a8c79219e97431ba22137b01 (diff) | |
download | ruby-727c97da1977544c91b9b3677811da3a44af7d53.tar.gz |
Update to ruby/spec@4ce9f41
Diffstat (limited to 'spec/ruby/core/hash')
-rw-r--r-- | spec/ruby/core/hash/shared/each.rb | 21 | ||||
-rw-r--r-- | spec/ruby/core/hash/shared/index.rb | 22 |
2 files changed, 37 insertions, 6 deletions
diff --git a/spec/ruby/core/hash/shared/each.rb b/spec/ruby/core/hash/shared/each.rb index 04a26b5c45..b2483c8116 100644 --- a/spec/ruby/core/hash/shared/each.rb +++ b/spec/ruby/core/hash/shared/each.rb @@ -54,6 +54,27 @@ describe :hash_each, shared: true do end end + it "yields an Array of 2 elements when given a callable of arity 1" do + obj = Object.new + def obj.foo(key_value) + ScratchPad << key_value + end + + ScratchPad.record([]) + { "a" => 1 }.send(@method, &obj.method(:foo)) + ScratchPad.recorded.should == [["a", 1]] + end + + it "raises an error for a Hash when an arity enforcing callable of arity >2 is passed in" do + obj = Object.new + def obj.foo(key, value, extra) + end + + -> { + { "a" => 1 }.send(@method, &obj.method(:foo)) + }.should raise_error(ArgumentError) + end + it "uses the same order as keys() and values()" do h = { a: 1, b: 2, c: 3, d: 5 } keys = [] diff --git a/spec/ruby/core/hash/shared/index.rb b/spec/ruby/core/hash/shared/index.rb index 4858ba85f5..7f6a186464 100644 --- a/spec/ruby/core/hash/shared/index.rb +++ b/spec/ruby/core/hash/shared/index.rb @@ -3,25 +3,35 @@ require_relative '../fixtures/classes' describe :hash_index, shared: true do it "returns the corresponding key for value" do - { 2 => 'a', 1 => 'b' }.send(@method, 'b').should == 1 + suppress_warning do # for Hash#index + { 2 => 'a', 1 => 'b' }.send(@method, 'b').should == 1 + end end it "returns nil if the value is not found" do - { a: -1, b: 3.14, c: 2.718 }.send(@method, 1).should be_nil + suppress_warning do # for Hash#index + { a: -1, b: 3.14, c: 2.718 }.send(@method, 1).should be_nil + end end it "doesn't return default value if the value is not found" do - Hash.new(5).send(@method, 5).should be_nil + suppress_warning do # for Hash#index + Hash.new(5).send(@method, 5).should be_nil + end end it "compares values using ==" do - { 1 => 0 }.send(@method, 0.0).should == 1 - { 1 => 0.0 }.send(@method, 0).should == 1 + suppress_warning do # for Hash#index + { 1 => 0 }.send(@method, 0.0).should == 1 + { 1 => 0.0 }.send(@method, 0).should == 1 + end needle = mock('needle') inhash = mock('inhash') inhash.should_receive(:==).with(needle).and_return(true) - { 1 => inhash }.send(@method, needle).should == 1 + suppress_warning do # for Hash#index + { 1 => inhash }.send(@method, needle).should == 1 + end end end |