From b425d4f19ad9efaefcb1a767a6ea26e6d40e3985 Mon Sep 17 00:00:00 2001 From: ktsj Date: Wed, 7 Sep 2016 06:06:09 +0000 Subject: * lib/csv.rb (CSV::{Row,Table}#{each,delete_if}): returns an enumerator if no block is given. [ruby-core:75346] [Feature #11058] * test/csv/test_row.rb: add test for above. * test/csv/test_table.rb: ditto. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@56083 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/csv/test_table.rb | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 59 insertions(+) (limited to 'test/csv/test_table.rb') diff --git a/test/csv/test_table.rb b/test/csv/test_table.rb index 80e553e83f..25ef11a772 100755 --- a/test/csv/test_table.rb +++ b/test/csv/test_table.rb @@ -220,6 +220,17 @@ class TestCSV::Table < TestCSV # verify that we can chain the call assert_equal(@table, @table.each { }) + # without block + enum = @table.each + assert_instance_of(Enumerator, enum) + assert_equal(@table.size, enum.size) + + i = 0 + enum.each do |row| + assert_equal(@rows[i], row) + i += 1 + end + ################### ### Column Mode ### ################### @@ -231,6 +242,17 @@ class TestCSV::Table < TestCSV assert_equal(@table[header], column) end + # without block + enum = @table.each + assert_instance_of(Enumerator, enum) + assert_equal(@table.headers.size, enum.size) + + headers = @table.headers + enum.each do |header, column| + assert_equal(headers.shift, header) + assert_equal(@table[header], column) + end + ############################ ### One Shot Mode Change ### ############################ @@ -363,6 +385,24 @@ class TestCSV::Table < TestCSV END_RESULT end + def test_delete_if_row_without_block + ###################### + ### Mixed/Row Mode ### + ###################### + enum = @table.delete_if + assert_instance_of(Enumerator, enum) + assert_equal(@table.size, enum.size) + + # verify that we can chain the call + assert_equal(@table, enum.each { |row| (row["B"] % 2).zero? }) + + # verify resulting table + assert_equal(<<-END_RESULT.gsub(/^\s+/, ""), @table.to_csv) + A,B,C + 4,5,6 + END_RESULT + end + def test_delete_if_column ################### ### Column Mode ### @@ -378,6 +418,25 @@ class TestCSV::Table < TestCSV END_RESULT end + def test_delete_if_column_without_block + ################### + ### Column Mode ### + ################### + @table.by_col! + + enum = @table.delete_if + assert_instance_of(Enumerator, enum) + assert_equal(@table.headers.size, enum.size) + + assert_equal(@table, enum.each { |h, v| h > "A" }) + assert_equal(<<-END_RESULT.gsub(/^\s+/, ""), @table.to_csv) + A + 1 + 4 + 7 + END_RESULT + end + def test_values_at ################## ### Mixed Mode ### -- cgit v1.2.3