diff options
author | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-07-01 02:05:16 +0000 |
---|---|---|
committer | yugui <yugui@b2dd03c8-39d4-4d8f-98ff-823fe69b080e> | 2010-07-01 02:05:16 +0000 |
commit | ba87ab3a7e05e157ef7d29c9f6dc1e40e1f087d2 (patch) | |
tree | 6bbd8022b03b21e9c48b2176e44fe4f39f3ad1de /test/csv | |
parent | a1a68a5810f8c8fc42f908074b5bbb1fcee62c83 (diff) |
merges r28431 and r28432 from trunk into ruby_1_9_2.
--
* lib/csv.rb: Fixing a bug that prevented CSV from parsing
all multi-line fields correctly. Patch by Rob Biedenham.
--
Fixing a spelling error.
git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_2@28501 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/csv')
-rw-r--r-- | test/csv/test_csv_parsing.rb | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/test/csv/test_csv_parsing.rb b/test/csv/test_csv_parsing.rb index e3609b7648..c0b8d83f96 100644 --- a/test/csv/test_csv_parsing.rb +++ b/test/csv/test_csv_parsing.rb @@ -115,6 +115,22 @@ class TestCSVParsing < Test::Unit::TestCase assert_equal(Array.new, CSV.parse_line("\n1,2,3\n")) end + def test_rob_edge_cases + [ [%Q{"a\nb"}, ["a\nb"]], + [%Q{"\n\n\n"}, ["\n\n\n"]], + [%Q{a,"b\n\nc"}, ['a', "b\n\nc"]], + [%Q{,"\r\n"}, [nil,"\r\n"]], + [%Q{,"\r\n."}, [nil,"\r\n."]], + [%Q{"a\na","one newline"}, ["a\na", 'one newline']], + [%Q{"a\n\na","two newlines"}, ["a\n\na", 'two newlines']], + [%Q{"a\r\na","one CRLF"}, ["a\r\na", 'one CRLF']], + [%Q{"a\r\n\r\na","two CRLFs"}, ["a\r\n\r\na", 'two CRLFs']], + [%Q{with blank,"start\n\nfinish"\n}, ['with blank', "start\n\nfinish"]], + ].each do |edge_case| + assert_equal(edge_case.last, CSV.parse_line(edge_case.first)) + end + end + def test_non_regex_edge_cases # An early version of the non-regex parser fails this test [ [ "foo,\"foo,bar,baz,foo\",\"foo\"", |