summaryrefslogtreecommitdiff
path: root/test/csv/test_csv.rb
diff options
context:
space:
mode:
authornahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-10-06 14:03:58 +0000
committernahi <nahi@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-10-06 14:03:58 +0000
commit11d2edffe68fdd52d3a8a6bad26f774c9dd27dfa (patch)
tree145b354c037072de0d6608943f03fadaaa033ab4 /test/csv/test_csv.rb
parent26d111540e3aac50a9bfe2b363ea2d98a5339f7c (diff)
* lib/csv.rb (IOReader, BasicWriter): call binmode when a given IO
respond_to?(:binmode). record separator was wrong when you gave text mode IO to Reader.parse and Writer.generate. * test/csv/test_csv.rb: add tests for above change. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@4708 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'test/csv/test_csv.rb')
-rw-r--r--test/csv/test_csv.rb56
1 files changed, 47 insertions, 9 deletions
diff --git a/test/csv/test_csv.rb b/test/csv/test_csv.rb
index 6e95a1ba85..96712209d1 100644
--- a/test/csv/test_csv.rb
+++ b/test/csv/test_csv.rb
@@ -409,6 +409,22 @@ public
file.close
end
+ def test_IOReader_s_create_binmode
+ file = File.open(@outfile, "wb")
+ file << "\"\r\n\",\"\r\",\"\n\"\r1,2,3"
+ file.close
+
+ file = File.open(@outfile, "r") # not "rb"
+ begin
+ reader = CSV::IOReader.new(file, ?,, ?\r)
+ assert_equal(["\r\n", "\r", "\n"], reader.shift.to_a)
+ assert_equal(["1", "2", "3"], reader.shift.to_a)
+ reader.close
+ ensure
+ file.close
+ end
+ end
+
def test_Reader_s_parse
ret = CSV::Reader.parse("a,b,c") { |row|
assert_instance_of(CSV::Row, row, "Block parameter")
@@ -486,7 +502,9 @@ public
writer << [nil, 'e', 'f'] << [nil, nil, '']
end
- str = file.open.read
+ file.open
+ file.binmode
+ str = file.read
assert_equal("a,b,c\r\n,e,f\r\n,,\"\"\r\n", str, 'Normal')
file = Tempfile.new("out2.csv")
@@ -496,7 +514,9 @@ public
writer << [d(nil, true), d('e'), d('f')] << [d(nil, true), d(nil, true), d('')]
end
- str = file.open.read
+ file.open
+ file.binmode
+ str = file.read
assert_equal("a,b,c\r\n,e,f\r\n,,\"\"\r\n", str, 'Normal')
end
@@ -513,7 +533,9 @@ public
[d('a', true), d('b', true), d('', false)]
)
end
- str = file.open.read
+ file.open
+ file.binmode
+ str = file.read
assert_equal("a,b,c\r\n,e,f\r\n,,\"\"\r\n", str, 'Normal')
end
@@ -533,12 +555,28 @@ public
f.close
f = File.open(@outfile, "w")
- writer = CSV::BasicWriter.create(f)
+ writer = CSV::BasicWriter.new(f)
writer.close_on_terminate
writer.close
assert(f.closed?)
end
+ def test_BasicWriter_s_create_binmode
+ file = File.open(@outfile, "w") # not "wb"
+ begin
+ writer = CSV::BasicWriter.new(file, ?,, ?\r)
+ writer << ["\r\n", "\r", "\n"]
+ writer << ["1", "2", "3"]
+ writer.close
+ ensure
+ file.close
+ end
+
+ file = File.open(@outfile, "rb")
+ str = file.read
+ file.close
+ assert_equal("\"\r\n\",\"\r\",\"\n\"\r1,2,3\r", str)
+ end
#### CSV unit test
@@ -582,7 +620,7 @@ public
end
# Illegal format.
- File.open(@outfile, "w") do |f|
+ File.open(@outfile, "wb") do |f|
f << "a,b\r\na,b,\"c\"\ra"
end
assert_raises(CSV::IllegalFormatError) do
@@ -590,7 +628,7 @@ public
end
end
- File.open(@outfile, "w") do |f|
+ File.open(@outfile, "wb") do |f|
f << "a,b\r\na,b\""
end
assert_raises(CSV::IllegalFormatError) do
@@ -1192,7 +1230,7 @@ public
rows = []
file = File.open(@bomfile)
- CSV::Reader.parse(file.read) do |row|
+ CSV::Reader.parse(file) do |row|
rows << row.to_a
end
assert_equal([["foo"], ["bar"]], rows)
@@ -1215,7 +1253,7 @@ public
rows = []
file = File.open(@macfile)
- CSV::Reader.parse(file.read, ?,, ?\r) do |row|
+ CSV::Reader.parse(file, ?,, ?\r) do |row|
rows << row.to_a
end
assert_equal([["Avenches", "aus Umgebung"], ["Bad Hersfeld", "Ausgrabung"]], rows)
@@ -1224,7 +1262,7 @@ public
rows = []
file = File.open(@macfile)
assert_raises(CSV::IllegalFormatError) do
- CSV::Reader.parse(file.read, ?,) do |row|
+ CSV::Reader.parse(file, ?,) do |row|
rows << row.to_a
end
end