Make the order of Hash#reverse_merge! consistent with HashWithIndifferentAccess

上级 d731d636
......@@ -15,8 +15,7 @@ def reverse_merge(other_hash)
# Destructive +reverse_merge+.
def reverse_merge!(other_hash)
# right wins if there is no left
merge!(other_hash) { |key, left, right| left }
replace(reverse_merge(other_hash))
end
alias_method :reverse_update, :reverse_merge!
end
......@@ -829,9 +829,9 @@ def test_constructor_on_indifferent_access
end
def test_reverse_merge
defaults = { a: "x", b: "y", c: 10 }.freeze
defaults = { d: 0, a: "x", b: "y", c: 10 }.freeze
options = { a: 1, b: 2 }
expected = { a: 1, b: 2, c: 10 }
expected = { d: 0, a: 1, b: 2, c: 10 }
# Should merge defaults into options, creating a new hash.
assert_equal expected, options.reverse_merge(defaults)
......@@ -842,6 +842,9 @@ def test_reverse_merge
assert_equal expected, merged.reverse_merge!(defaults)
assert_equal expected, merged
# Make the order consistent with the non-overwriting reverse merge.
assert_equal expected.keys, merged.keys
# Should be an alias for reverse_merge!
merged = options.dup
assert_equal expected, merged.reverse_update(defaults)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册