From 05c2d01b61520dd801a2d1a65a28164de7d92bd0 Mon Sep 17 00:00:00 2001 From: Stuart Campbell Date: Mon, 30 Apr 2018 16:04:13 -0700 Subject: Fix RepeatedField#delete_if (#4292) Make RepeatedField#delete_if consistent with Array#delete_if. --- ruby/lib/google/protobuf/repeated_field.rb | 4 ++-- ruby/tests/repeated_field_test.rb | 9 +++++++++ 2 files changed, 11 insertions(+), 2 deletions(-) (limited to 'ruby') diff --git a/ruby/lib/google/protobuf/repeated_field.rb b/ruby/lib/google/protobuf/repeated_field.rb index 11d6c2eb..2dae1e65 100644 --- a/ruby/lib/google/protobuf/repeated_field.rb +++ b/ruby/lib/google/protobuf/repeated_field.rb @@ -150,12 +150,12 @@ module Google end - %w(delete delete_at delete_if shift slice! unshift).each do |method_name| + %w(delete delete_at shift slice! unshift).each do |method_name| define_array_wrapper_method(method_name) end - %w(collect! compact! fill flatten! insert reverse! + %w(collect! compact! delete_if fill flatten! insert reverse! rotate! select! shuffle! sort! sort_by! uniq!).each do |method_name| define_array_wrapper_with_result_method(method_name) end diff --git a/ruby/tests/repeated_field_test.rb b/ruby/tests/repeated_field_test.rb index b64c3991..61ac4afd 100644 --- a/ruby/tests/repeated_field_test.rb +++ b/ruby/tests/repeated_field_test.rb @@ -369,6 +369,15 @@ class RepeatedFieldTest < Test::Unit::TestCase end end + def test_delete_if + m = TestMessage.new + reference_arr = %w(foo bar baz) + m.repeated_string += reference_arr.clone + check_self_modifying_method(m.repeated_string, reference_arr) do |arr| + arr.delete_if { |v| v == "bar" } + end + end + def test_fill m = TestMessage.new reference_arr = %w(foo bar baz) -- cgit v1.2.3