Skip to content

Commit 77047df

Browse files
committed
Add specs for iteration order for #rehash
1 parent 03eca56 commit 77047df

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed

spec/ruby/core/hash/rehash_spec.rb

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,36 @@ def k1.hash; 1; end
7777
h.keys.should_not.include? [1]
7878
end
7979

80+
it "iterates keys in insertion order" do
81+
key = Class.new do
82+
attr_reader :name
83+
84+
def initialize(name)
85+
@name = name
86+
end
87+
88+
def hash
89+
123
90+
end
91+
end
92+
93+
a, b, c, d = key.new('a'), key.new('b'), key.new('c'), key.new('d')
94+
h = { a => 1, b => 2, c => 3, d => 4 }
95+
h.size.should == 4
96+
97+
key.class_exec do
98+
def eql?(other)
99+
true
100+
end
101+
end
102+
103+
h.rehash
104+
h.size.should == 1
105+
k, v = h.first
106+
k.name.should == 'a'
107+
v.should == 4
108+
end
109+
80110
it "raises a FrozenError if called on a frozen instance" do
81111
-> { HashSpecs.frozen_hash.rehash }.should raise_error(FrozenError)
82112
-> { HashSpecs.empty_frozen_hash.rehash }.should raise_error(FrozenError)

0 commit comments

Comments
 (0)