diff options
author | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-10-27 10:48:40 +0000 |
---|---|---|
committer | eregon <eregon@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2018-10-27 10:48:40 +0000 |
commit | 3e6337b88b5255aba07b8f44de72cd5885f59465 (patch) | |
tree | 6146781aa381404b88ea4bfa2a44e75e8bc90d14 /spec/ruby/core/hash/slice_spec.rb | |
parent | ecc707e233a5577ea2048b3199d4baaf96c6b0f8 (diff) |
Update to ruby/spec@8b743a3
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@65388 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'spec/ruby/core/hash/slice_spec.rb')
-rw-r--r-- | spec/ruby/core/hash/slice_spec.rb | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/spec/ruby/core/hash/slice_spec.rb b/spec/ruby/core/hash/slice_spec.rb index d414b1919f..f7717c9404 100644 --- a/spec/ruby/core/hash/slice_spec.rb +++ b/spec/ruby/core/hash/slice_spec.rb @@ -6,10 +6,11 @@ ruby_version_is "2.5" do @hash = { a: 1, b: 2, c: 3 } end - it "returns new hash" do + it "returns a new empty hash without arguments" do ret = @hash.slice ret.should_not equal(@hash) ret.should be_an_instance_of(Hash) + ret.should == {} end it "returns the requested subset" do @@ -27,10 +28,28 @@ ruby_version_is "2.5" do it "returns a Hash instance, even on subclasses" do klass = Class.new(Hash) h = klass.new + h[:bar] = 12 h[:foo] = 42 r = h.slice(:foo) r.should == {foo: 42} r.class.should == Hash end + + it "uses the regular Hash#[] method, even on subclasses that override it" do + ScratchPad.record [] + klass = Class.new(Hash) do + def [](value) + ScratchPad << :used_subclassed_operator + super + end + end + + h = klass.new + h[:bar] = 12 + h[:foo] = 42 + h.slice(:foo) + + ScratchPad.recorded.should == [] + end end end |