diff options
author | Matthew Draper <matthew@trebex.net> | 2018-08-15 03:01:05 +0930 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-08-15 03:01:05 +0930 |
commit | 7fa2f539fa2a7a1ebb5086023091983ce0d810d9 (patch) | |
tree | edb47a67fd44ab9a6fad7a38239094f2146fdad9 /activesupport/test | |
parent | ffc4703f22888dce0394fe0ab524a9e6cdc3c7e5 (diff) | |
parent | b71abb3bb8cd177d1d3fceec88f54b505d616887 (diff) | |
download | rails-7fa2f539fa2a7a1ebb5086023091983ce0d810d9.tar.gz rails-7fa2f539fa2a7a1ebb5086023091983ce0d810d9.tar.bz2 rails-7fa2f539fa2a7a1ebb5086023091983ce0d810d9.zip |
Merge pull request #33137 from bogdanvlviv/add-array-extract-method
Add `Array#extract!`
Diffstat (limited to 'activesupport/test')
-rw-r--r-- | activesupport/test/core_ext/array/extract_test.rb | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/activesupport/test/core_ext/array/extract_test.rb b/activesupport/test/core_ext/array/extract_test.rb new file mode 100644 index 0000000000..200727667c --- /dev/null +++ b/activesupport/test/core_ext/array/extract_test.rb @@ -0,0 +1,44 @@ +# frozen_string_literal: true + +require "abstract_unit" +require "active_support/core_ext/array" + +class ExtractTest < ActiveSupport::TestCase + def test_extract + numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + array_id = numbers.object_id + + odd_numbers = numbers.extract!(&:odd?) + + assert_equal [1, 3, 5, 7, 9], odd_numbers + assert_equal [0, 2, 4, 6, 8], numbers + assert_equal array_id, numbers.object_id + end + + def test_extract_without_block + numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] + array_id = numbers.object_id + + extract_enumerator = numbers.extract! + + assert_instance_of Enumerator, extract_enumerator + assert_equal numbers.size, extract_enumerator.size + + odd_numbers = extract_enumerator.each(&:odd?) + + assert_equal [1, 3, 5, 7, 9], odd_numbers + assert_equal [0, 2, 4, 6, 8], numbers + assert_equal array_id, numbers.object_id + end + + def test_extract_on_empty_array + empty_array = [] + array_id = empty_array.object_id + + new_empty_array = empty_array.extract! {} + + assert_equal [], new_empty_array + assert_equal [], empty_array + assert_equal array_id, empty_array.object_id + end +end |