diff options
Diffstat (limited to 'test/csv/parse/test_invalid.rb')
-rw-r--r-- | test/csv/parse/test_invalid.rb | 36 |
1 files changed, 36 insertions, 0 deletions
diff --git a/test/csv/parse/test_invalid.rb b/test/csv/parse/test_invalid.rb new file mode 100644 index 0000000000..b84707c2cc --- /dev/null +++ b/test/csv/parse/test_invalid.rb @@ -0,0 +1,36 @@ +# -*- coding: utf-8 -*- +# frozen_string_literal: false + +require_relative "../helper" + +class TestCSVParseInvalid < Test::Unit::TestCase + def test_no_column_mixed_new_lines + error = assert_raise(CSV::MalformedCSVError) do + CSV.parse("\n" + + "\r") + end + assert_equal("New line must be <\"\\n\"> not <\"\\r\"> in line 2.", + error.message) + end + + def test_ignore_invalid_line + csv = CSV.new(<<-CSV, headers: true, return_headers: true) +head1,head2,head3 +aaa,bbb,ccc +ddd,ee"e.fff +ggg,hhh,iii + CSV + headers = ["head1", "head2", "head3"] + assert_equal(CSV::Row.new(headers, headers), + csv.shift) + assert_equal(CSV::Row.new(headers, ["aaa", "bbb", "ccc"]), + csv.shift) + error = assert_raise(CSV::MalformedCSVError) do + csv.shift + end + assert_equal("Illegal quoting in line 3.", + error.message) + assert_equal(CSV::Row.new(headers, ["ggg", "hhh", "iii"]), + csv.shift) + end +end |