mirror of
https://github.com/ruby/ruby.git
synced 2022-11-09 12:17:21 -05:00
Import CSV 3.0.8
This includes performance improvements and backward incompatibility fixes. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@67560 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
This commit is contained in:
parent
fb96811d15
commit
e3b6c7c7eb
23 changed files with 1534 additions and 650 deletions
174
test/csv/interface/test_write.rb
Normal file
174
test/csv/interface/test_write.rb
Normal file
|
@ -0,0 +1,174 @@
|
|||
# frozen_string_literal: false
|
||||
|
||||
require_relative "../helper"
|
||||
|
||||
class TestCSVInterfaceWrite < Test::Unit::TestCase
|
||||
extend DifferentOFS
|
||||
|
||||
def setup
|
||||
super
|
||||
@output = Tempfile.new(["interface-write", ".csv"])
|
||||
end
|
||||
|
||||
def teardown
|
||||
@output.close(true)
|
||||
super
|
||||
end
|
||||
|
||||
def test_generate_default
|
||||
csv_text = CSV.generate do |csv|
|
||||
csv << [1, 2, 3] << [4, nil, 5]
|
||||
end
|
||||
assert_equal(<<-CSV, csv_text)
|
||||
1,2,3
|
||||
4,,5
|
||||
CSV
|
||||
end
|
||||
|
||||
def test_generate_append
|
||||
csv_text = <<-CSV
|
||||
1,2,3
|
||||
4,,5
|
||||
CSV
|
||||
CSV.generate(csv_text) do |csv|
|
||||
csv << ["last", %Q{"row"}]
|
||||
end
|
||||
assert_equal(<<-CSV, csv_text)
|
||||
1,2,3
|
||||
4,,5
|
||||
last,"""row"""
|
||||
CSV
|
||||
end
|
||||
|
||||
def test_generate_no_new_line
|
||||
csv_text = CSV.generate("test") do |csv|
|
||||
csv << ["row"]
|
||||
end
|
||||
assert_equal(<<-CSV, csv_text)
|
||||
testrow
|
||||
CSV
|
||||
end
|
||||
|
||||
def test_generate_line_col_sep
|
||||
line = CSV.generate_line(["1", "2", "3"], col_sep: ";")
|
||||
assert_equal(<<-LINE, line)
|
||||
1;2;3
|
||||
LINE
|
||||
end
|
||||
|
||||
def test_generate_line_row_sep
|
||||
line = CSV.generate_line(["1", "2"], row_sep: nil)
|
||||
assert_equal(<<-LINE.chomp, line)
|
||||
1,2
|
||||
LINE
|
||||
end
|
||||
|
||||
def test_generate_line_shortcut
|
||||
line = ["1", "2", "3"].to_csv(col_sep: ";")
|
||||
assert_equal(<<-LINE, line)
|
||||
1;2;3
|
||||
LINE
|
||||
end
|
||||
|
||||
def test_headers_detection
|
||||
headers = ["a", "b", "c"]
|
||||
CSV.open(@output.path, "w", headers: true) do |csv|
|
||||
csv << headers
|
||||
csv << ["1", "2", "3"]
|
||||
assert_equal(headers, csv.headers)
|
||||
end
|
||||
end
|
||||
|
||||
def test_lineno
|
||||
CSV.open(@output.path, "w") do |csv|
|
||||
n_lines = 20
|
||||
n_lines.times do
|
||||
csv << ["a", "b", "c"]
|
||||
end
|
||||
assert_equal(n_lines, csv.lineno)
|
||||
end
|
||||
end
|
||||
|
||||
def test_append_row
|
||||
CSV.open(@output.path, "wb") do |csv|
|
||||
csv <<
|
||||
CSV::Row.new([], ["1", "2", "3"]) <<
|
||||
CSV::Row.new([], ["a", "b", "c"])
|
||||
end
|
||||
assert_equal(<<-CSV, File.read(@output.path, mode: "rb"))
|
||||
1,2,3
|
||||
a,b,c
|
||||
CSV
|
||||
end
|
||||
|
||||
def test_append_hash
|
||||
CSV.open(@output.path, "wb", headers: true) do |csv|
|
||||
csv << [:a, :b, :c]
|
||||
csv << {a: 1, b: 2, c: 3}
|
||||
csv << {a: 4, b: 5, c: 6}
|
||||
end
|
||||
assert_equal(<<-CSV, File.read(@output.path, mode: "rb"))
|
||||
a,b,c
|
||||
1,2,3
|
||||
4,5,6
|
||||
CSV
|
||||
end
|
||||
|
||||
def test_append_hash_headers_array
|
||||
CSV.open(@output.path, "wb", headers: [:b, :a, :c]) do |csv|
|
||||
csv << {a: 1, b: 2, c: 3}
|
||||
csv << {a: 4, b: 5, c: 6}
|
||||
end
|
||||
assert_equal(<<-CSV, File.read(@output.path, mode: "rb"))
|
||||
2,1,3
|
||||
5,4,6
|
||||
CSV
|
||||
end
|
||||
|
||||
def test_append_hash_headers_string
|
||||
CSV.open(@output.path, "wb", headers: "b|a|c", col_sep: "|") do |csv|
|
||||
csv << {"a" => 1, "b" => 2, "c" => 3}
|
||||
csv << {"a" => 4, "b" => 5, "c" => 6}
|
||||
end
|
||||
assert_equal(<<-CSV, File.read(@output.path, mode: "rb"))
|
||||
2|1|3
|
||||
5|4|6
|
||||
CSV
|
||||
end
|
||||
|
||||
def test_write_headers
|
||||
CSV.open(@output.path,
|
||||
"wb",
|
||||
headers: "b|a|c",
|
||||
write_headers: true,
|
||||
col_sep: "|" ) do |csv|
|
||||
csv << {"a" => 1, "b" => 2, "c" => 3}
|
||||
csv << {"a" => 4, "b" => 5, "c" => 6}
|
||||
end
|
||||
assert_equal(<<-CSV, File.read(@output.path, mode: "rb"))
|
||||
b|a|c
|
||||
2|1|3
|
||||
5|4|6
|
||||
CSV
|
||||
end
|
||||
|
||||
def test_write_headers_empty
|
||||
CSV.open(@output.path,
|
||||
"wb",
|
||||
headers: "b|a|c",
|
||||
write_headers: true,
|
||||
col_sep: "|" ) do |csv|
|
||||
end
|
||||
assert_equal(<<-CSV, File.read(@output.path, mode: "rb"))
|
||||
b|a|c
|
||||
CSV
|
||||
end
|
||||
|
||||
def test_options_not_modified
|
||||
options = {}.freeze
|
||||
CSV.generate(options) {}
|
||||
CSV.generate_line([], options)
|
||||
CSV.filter("", "", options)
|
||||
CSV.instance("", options)
|
||||
end
|
||||
end
|
Loading…
Add table
Add a link
Reference in a new issue