Sha256: 07191347d72a4702c25f1245629e2e4c1cb29ae1176412fa53030954e8ec6690

Contents?: true

Size: 1.31 KB

Versions: 83

Compression:

Stored size: 1.31 KB

Contents

describe :hash_store, :shared => true do
  it "associates the key with the value and return the value" do
    h = new_hash(:a => 1)
    h.send(@method, :b, 2).should == 2
    h.should == new_hash(:b=>2, :a=>1)
  end

  it "duplicates string keys using dup semantics" do
    # dup doesn't copy singleton methods
    key = "foo"
    def key.reverse() "bar" end
    h = new_hash
    h.send(@method, key, 0)
    h.keys[0].reverse.should == "oof"
  end

  it "stores unequal keys that hash to the same value" do
    h = new_hash
    k1 = ["x"]
    k2 = ["y"]
    # So they end up in the same bucket
    k1.should_receive(:hash).and_return(0)
    k2.should_receive(:hash).and_return(0)

    h[k1] = 1
    h[k2] = 2
    h.size.should == 2
  end

  it "duplicates and freezes string keys" do
    key = "foo"
    h = new_hash
    h.send(@method, key, 0)
    key << "bar"

    h.should == new_hash("foo" => 0)
    h.keys[0].frozen?.should == true
  end

  ruby_version_is ""..."1.9" do
    it "raises a TypeError if called on a frozen instance" do
      lambda { HashSpecs.frozen_hash.send(@method, 1, 2) }.should raise_error(TypeError)
    end
  end
  
  ruby_version_is "1.9" do
    it "raises a RuntimeError if called on a frozen instance" do
      lambda { HashSpecs.frozen_hash.send(@method, 1, 2) }.should raise_error(RuntimeError)
    end
  end
end

Version data entries

83 entries across 83 versions & 1 rubygems

Version Path
rhodes-3.1.1 spec/framework_spec/app/spec/core/hash/shared/store.rb
rhodes-3.1.1.beta spec/framework_spec/app/spec/core/hash/shared/store.rb
rhodes-3.1.0 spec/framework_spec/app/spec/core/hash/shared/store.rb
rhodes-3.1.0.beta.5 spec/framework_spec/app/spec/core/hash/shared/store.rb
rhodes-3.1.0.beta.4 spec/framework_spec/app/spec/core/hash/shared/store.rb
rhodes-3.1.0.beta.3 spec/framework_spec/app/spec/core/hash/shared/store.rb
rhodes-3.1.0.beta.2 spec/framework_spec/app/spec/core/hash/shared/store.rb
rhodes-3.1.0.beta.1 spec/framework_spec/app/spec/core/hash/shared/store.rb
rhodes-3.0.2 spec/framework_spec/app/spec/core/hash/shared/store.rb
rhodes-3.0.2.beta.1 spec/framework_spec/app/spec/core/hash/shared/store.rb
rhodes-3.0.1 spec/framework_spec/app/spec/core/hash/shared/store.rb
rhodes-3.0.1.beta.8 spec/framework_spec/app/spec/core/hash/shared/store.rb
rhodes-3.0.1.beta.7 spec/framework_spec/app/spec/core/hash/shared/store.rb
rhodes-3.0.1.beta.6 spec/framework_spec/app/spec/core/hash/shared/store.rb
rhodes-3.0.1.beta.5 spec/framework_spec/app/spec/core/hash/shared/store.rb
rhodes-3.0.1.beta.4 spec/framework_spec/app/spec/core/hash/shared/store.rb
rhodes-3.0.1.beta.3 spec/framework_spec/app/spec/core/hash/shared/store.rb
rhodes-3.0.1.beta.2 spec/framework_spec/app/spec/core/hash/shared/store.rb
rhodes-3.0.0 spec/framework_spec/app/spec/core/hash/shared/store.rb
rhodes-3.0.0.beta.7 spec/framework_spec/app/spec/core/hash/shared/store.rb