diff options
author | Erik Michaels-Ober <sferik@gmail.com> | 2014-07-12 18:22:43 +0200 |
---|---|---|
committer | Erik Michaels-Ober <sferik@gmail.com> | 2014-07-12 18:22:43 +0200 |
commit | f1bad130d0c9bd77c94e43b696adca56c46a66aa (patch) | |
tree | fb3e6896c26b6a74d2997cbdc672c223fd3fda34 /activesupport/test | |
parent | e167389e1f2fc577e0d3cb645804d012aee2e89d (diff) | |
download | rails-f1bad130d0c9bd77c94e43b696adca56c46a66aa.tar.gz rails-f1bad130d0c9bd77c94e43b696adca56c46a66aa.tar.bz2 rails-f1bad130d0c9bd77c94e43b696adca56c46a66aa.zip |
Return an Enumerator if no block is given
Diffstat (limited to 'activesupport/test')
-rw-r--r-- | activesupport/test/core_ext/hash/transform_keys_test.rb | 32 | ||||
-rw-r--r-- | activesupport/test/core_ext/hash/transform_values_test.rb | 12 |
2 files changed, 44 insertions, 0 deletions
diff --git a/activesupport/test/core_ext/hash/transform_keys_test.rb b/activesupport/test/core_ext/hash/transform_keys_test.rb new file mode 100644 index 0000000000..956fd7ae97 --- /dev/null +++ b/activesupport/test/core_ext/hash/transform_keys_test.rb @@ -0,0 +1,32 @@ +require 'abstract_unit' +require 'active_support/core_ext/hash/transform_keys' + +class TransformKeysTest < ActiveSupport::TestCase + test "transform_keys returns a new hash with the keys computed from the block" do + original = { a: 'a', b: 'b' } + mapped = original.transform_keys { |k| "#{k}!".to_sym } + + assert_equal({ a: 'a', b: 'b' }, original) + assert_equal({ a!: 'a', b!: 'b' }, mapped) + end + + test "transform_keys! modifies the keys of the original" do + original = { a: 'a', b: 'b' } + mapped = original.transform_keys! { |k| "#{k}!".to_sym } + + assert_equal({ a!: 'a', b!: 'b' }, original) + assert_same original, mapped + end + + test "transform_keys returns an Enumerator if no block is given" do + original = { a: 'a', b: 'b' } + enumerator = original.transform_keys + assert_equal Enumerator, enumerator.class + end + + test "transform_keys is chainable with Enumerable methods" do + original = { a: 'a', b: 'b' } + mapped = original.transform_keys.with_index { |k, i| [k, i].join.to_sym } + assert_equal({ a0: 'a', b1: 'b' }, mapped) + end +end diff --git a/activesupport/test/core_ext/hash/transform_values_test.rb b/activesupport/test/core_ext/hash/transform_values_test.rb index 4449c94701..45ed11fef7 100644 --- a/activesupport/test/core_ext/hash/transform_values_test.rb +++ b/activesupport/test/core_ext/hash/transform_values_test.rb @@ -46,4 +46,16 @@ class TransformValuesTest < ActiveSupport::TestCase assert_equal 'a!', mapped[:a] assert_nil mapped[:b] end + + test "transform_values returns an Enumerator if no block is given" do + original = { a: 'a', b: 'b' } + enumerator = original.transform_values + assert_equal Enumerator, enumerator.class + end + + test "transform_values is chainable with Enumerable methods" do + original = { a: 'a', b: 'b' } + mapped = original.transform_values.with_index { |v, i| [v, i].join } + assert_equal({ a: 'a0', b: 'b1' }, mapped) + end end |