diff options
Diffstat (limited to 'spec/ruby/core/hash/include_spec.rb')
| -rw-r--r-- | spec/ruby/core/hash/include_spec.rb | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/spec/ruby/core/hash/include_spec.rb b/spec/ruby/core/hash/include_spec.rb new file mode 100644 index 0000000000..1c32e9fb23 --- /dev/null +++ b/spec/ruby/core/hash/include_spec.rb @@ -0,0 +1,40 @@ +require_relative '../../spec_helper' + +describe "Hash#include?" do + it "returns true if argument is a key" do + h = { a: 1, b: 2, c: 3, 4 => 0 } + h.include?(:a).should == true + h.include?(:b).should == true + h.include?(2).should == false + h.include?(4).should == true + + not_supported_on :opal do + h.include?('b').should == false + h.include?(4.0).should == false + end + end + + it "returns true if the key's matching value was nil" do + { xyz: nil }.include?(:xyz).should == true + end + + it "returns true if the key's matching value was false" do + { xyz: false }.include?(:xyz).should == true + end + + it "returns true if the key is nil" do + { nil => 'b' }.include?(nil).should == true + { nil => nil }.include?(nil).should == true + end + + it "compares keys with the same #hash value via #eql?" do + x = mock('x') + x.stub!(:hash).and_return(42) + + y = mock('y') + y.stub!(:hash).and_return(42) + y.should_receive(:eql?).and_return(false) + + { x => nil }.include?(y).should == false + end +end |
