+
+ def test_default_value
+ hash1 = Hash.new
+ hash1[:one] = 1
+
+ assert_equal __(1), hash1[:one]
+ assert_equal __(nil), hash1[:two]
+
+ hash2 = Hash.new("dos")
+ hash2[:one] = 1
+
+ assert_equal __(1), hash2[:one]
+ assert_equal __("dos"), hash2[:two]
+ end
+
+ def test_default_value_is_the_same_object
+ hash = Hash.new([])
+
+ hash[:one] << "uno"
+ hash[:two] << "dos"
+
+ assert_equal __(["uno", "dos"]), hash[:one]
+ assert_equal __(["uno", "dos"]), hash[:two]
+ assert_equal __(["uno", "dos"]), hash[:three]
+
+ assert_equal __(true), hash[:one].object_id == hash[:two].object_id
+ end
+
+ def test_default_value_with_block
+ hash = Hash.new {|hash, key| hash[key] = [] }
+
+ hash[:one] << "uno"
+ hash[:two] << "dos"
+
+ assert_equal __(["uno"]), hash[:one]
+ assert_equal __(["dos"]), hash[:two]
+ assert_equal __([]), hash[:three]
+ end