Skip to content

Commit

Permalink
Revert "Hash#slice supports an array of keys [#613 state:resolved]"
Browse files Browse the repository at this point in the history
This reverts commit 396f9df.
  • Loading branch information
lifo committed Jul 17, 2008
1 parent bbab639 commit b3a2ee7
Show file tree
Hide file tree
Showing 2 changed files with 21 additions and 36 deletions.
1 change: 0 additions & 1 deletion activesupport/lib/active_support/core_ext/hash/slice.rb
Expand Up @@ -12,7 +12,6 @@ module Hash #:nodoc:
module Slice
# Returns a new hash with only the given keys.
def slice(*keys)
keys.flatten!
keys = keys.map! { |key| convert_key(key) } if respond_to?(:convert_key)
hash = {}
keys.each { |k| hash[k] = self[k] if has_key?(k) }
Expand Down
56 changes: 21 additions & 35 deletions activesupport/test/core_ext/hash_ext_test.rb
Expand Up @@ -292,20 +292,6 @@ def test_slice
assert_equal expected, original
end

# This is needed for something like hash.slice!(hash.keys.sort_by {rand} [0..4])
def test_slice_with_array_keys
original = { :a => 'x', :b => 'y', :c => 10 }
expected = { :a => 'x', :b => 'y' }

# Should return a new hash with only the given keys, when given an array of keys.
assert_equal expected, original.slice([:a, :b])
assert_not_equal expected, original

# Should replace the hash with only the given keys, when given an array of keys.
assert_equal expected, original.slice!([:a, :b])
assert_equal expected, original
end

def test_indifferent_slice
original = { :a => 'x', :b => 'y', :c => 10 }.with_indifferent_access
expected = { :a => 'x', :b => 'y' }.with_indifferent_access
Expand Down Expand Up @@ -493,12 +479,12 @@ def test_single_record_from_xml_with_nil_values
EOT

expected_topic_hash = {
:title => nil,
:title => nil,
:id => nil,
:approved => nil,
:written_on => nil,
:viewed_at => nil,
:content => nil,
:content => nil,
:parent_id => nil
}.stringify_keys

Expand Down Expand Up @@ -576,7 +562,7 @@ def test_single_record_from_xml_with_attributes_other_than_type

assert_equal expected_topic_hash, Hash.from_xml(topic_xml)["rsp"]["photos"]["photo"]
end

def test_empty_array_from_xml
blog_xml = <<-XML
<blog>
Expand Down Expand Up @@ -674,13 +660,13 @@ def test_xsd_like_types_from_xml

assert_equal expected_bacon_hash, Hash.from_xml(bacon_xml)["bacon"]
end

def test_type_trickles_through_when_unknown
product_xml = <<-EOT
<product>
<weight type="double">0.5</weight>
<image type="ProductImage"><filename>image.gif</filename></image>
</product>
EOT

Expand All @@ -689,7 +675,7 @@ def test_type_trickles_through_when_unknown
:image => {'type' => 'ProductImage', 'filename' => 'image.gif' },
}.stringify_keys

assert_equal expected_product_hash, Hash.from_xml(product_xml)["product"]
assert_equal expected_product_hash, Hash.from_xml(product_xml)["product"]
end

def test_should_use_default_value_for_unknown_key
Expand Down Expand Up @@ -723,41 +709,41 @@ def test_kernel_method_names_to_xml
assert_equal expected, hash.to_xml(@xml_options)
end
end

def test_empty_string_works_for_typecast_xml_value
def test_empty_string_works_for_typecast_xml_value
assert_nothing_raised do
Hash.send!(:typecast_xml_value, "")
end
end

def test_escaping_to_xml
hash = {
:bare_string => 'First & Last Name',
hash = {
:bare_string => 'First & Last Name',
:pre_escaped_string => 'First &amp; Last Name'
}.stringify_keys

expected_xml = '<person><bare-string>First &amp; Last Name</bare-string><pre-escaped-string>First &amp;amp; Last Name</pre-escaped-string></person>'
assert_equal expected_xml, hash.to_xml(@xml_options)
end

def test_unescaping_from_xml
xml_string = '<person><bare-string>First &amp; Last Name</bare-string><pre-escaped-string>First &amp;amp; Last Name</pre-escaped-string></person>'
expected_hash = {
:bare_string => 'First & Last Name',
expected_hash = {
:bare_string => 'First & Last Name',
:pre_escaped_string => 'First &amp; Last Name'
}.stringify_keys
assert_equal expected_hash, Hash.from_xml(xml_string)['person']
end

def test_roundtrip_to_xml_from_xml
hash = {
:bare_string => 'First & Last Name',
hash = {
:bare_string => 'First & Last Name',
:pre_escaped_string => 'First &amp; Last Name'
}.stringify_keys

assert_equal hash, Hash.from_xml(hash.to_xml(@xml_options))['person']
end

def test_datetime_xml_type_with_utc_time
alert_xml = <<-XML
<alert>
Expand All @@ -768,7 +754,7 @@ def test_datetime_xml_type_with_utc_time
assert alert_at.utc?
assert_equal Time.utc(2008, 2, 10, 15, 30, 45), alert_at
end

def test_datetime_xml_type_with_non_utc_time
alert_xml = <<-XML
<alert>
Expand All @@ -779,7 +765,7 @@ def test_datetime_xml_type_with_non_utc_time
assert alert_at.utc?
assert_equal Time.utc(2008, 2, 10, 15, 30, 45), alert_at
end

def test_datetime_xml_type_with_far_future_date
alert_xml = <<-XML
<alert>
Expand Down

0 comments on commit b3a2ee7

Please sign in to comment.