[前][次][番号順一覧][スレッド一覧]

ruby-changes:65601

From: Kenichi <ko1@a...>
Date: Sun, 21 Mar 2021 11:14:44 +0900 (JST)
Subject: [ruby-changes:65601] d319eb602d (master): Add Hash#{update, merge!} test to ensure receiver modifiable in block

https://git.ruby-lang.org/ruby.git/commit/?id=d319eb602d

From d319eb602d3fe9dbc5dab55cb85974a7c22742e5 Mon Sep 17 00:00:00 2001
From: Kenichi Kamiya <kachick1@g...>
Date: Sun, 21 Mar 2021 01:57:46 +0900
Subject: Add Hash#{update, merge!} test to ensure receiver modifiable in block

---
 test/ruby/test_hash.rb | 16 ++++++++++++++++
 1 file changed, 16 insertions(+)

diff --git a/test/ruby/test_hash.rb b/test/ruby/test_hash.rb
index 849fd3a..afce9fd 100644
--- a/test/ruby/test_hash.rb
+++ b/test/ruby/test_hash.rb
@@ -1232,6 +1232,14 @@ class TestHash < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ruby/test_hash.rb#L1232
     assert_equal({1=>8, 2=>4, 3=>4, 5=>7}, h1)
   end
 
+  def test_update5
+    h = @cls[a: 1, b: 2, c: 3]
+    assert_raise(FrozenError) do
+      h.update({a: 10, b: 20}){ |key, v1, v2| key == :b && h.freeze; v2 }
+    end
+    assert_equal(@cls[a: 10, b: 2, c: 3], h)
+  end
+
   def test_merge
     h1 = @cls[1=>2, 3=>4]
     h2 = {1=>3, 5=>7}
@@ -1243,6 +1251,14 @@ class TestHash < Test::Unit::TestCase https://github.com/ruby/ruby/blob/trunk/test/ruby/test_hash.rb#L1251
     assert_equal({1=>8, 2=>4, 3=>4, 5=>7}, h1.merge(h2, h3) {|k, v1, v2| k + v1 + v2 })
   end
 
+  def test_merge!
+    h = @cls[a: 1, b: 2, c: 3]
+    assert_raise(FrozenError) do
+      h.merge!({a: 10, b: 20}){ |key, v1, v2| key == :b && h.freeze; v2 }
+    end
+    assert_equal(@cls[a: 10, b: 2, c: 3], h)
+  end
+
   def test_assoc
     assert_equal([3,4], @cls[1=>2, 3=>4, 5=>6].assoc(3))
     assert_nil(@cls[1=>2, 3=>4, 5=>6].assoc(4))
-- 
cgit v1.1


--
ML: ruby-changes@q...
Info: http://www.atdot.net/~ko1/quickml/

[前][次][番号順一覧][スレッド一覧]