1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
|
require "test_helper"
class TestRooFormatterCSV < Minitest::Test
def test_date_time_to_csv
with_each_spreadsheet(name: "time-test") do |workbook|
Dir.mktmpdir do |tempdir|
csv_output = File.join(tempdir, "time_test.csv")
assert workbook.to_csv(csv_output)
assert File.exist?(csv_output)
assert_equal "", `diff --strip-trailing-cr #{TESTDIR}/time-test.csv #{csv_output}`
# --strip-trailing-cr is needed because the test-file use 0A and
# the test on an windows box generates 0D 0A as line endings
end
end
end
def test_boolean_to_csv
with_each_spreadsheet(name: "boolean") do |workbook|
Dir.mktmpdir do |tempdir|
csv_output = File.join(tempdir,"boolean.csv")
assert workbook.to_csv(csv_output)
assert File.exist?(csv_output)
assert_equal "", `diff --strip-trailing-cr #{TESTDIR}/boolean.csv #{csv_output}`
# --strip-trailing-cr is needed because the test-file use 0A and
# the test on an windows box generates 0D 0A as line endings
end
end
end
def test_link_to_csv
with_each_spreadsheet(name: "link", format: :excelx) do |workbook|
Dir.mktmpdir do |tempdir|
csv_output = File.join(tempdir, "link.csv")
assert workbook.to_csv(csv_output)
assert File.exist?(csv_output)
assert_equal "", `diff --strip-trailing-cr #{TESTDIR}/link.csv #{csv_output}`
# --strip-trailing-cr is needed because the test-file use 0A and
# the test on an windows box generates 0D 0A as line endings
end
end
end
# "/tmp/xxxx" darf man unter Windows nicht verwenden, weil das nicht erkannt
# wird.
# Besser: Methode um temporaeres Dir. portabel zu bestimmen
def test_huge_document_to_csv
skip_long_test
original_csv_path = File.join(TESTDIR, "Bibelbund.csv")
with_each_spreadsheet(name: "Bibelbund", format: [:openoffice, :excelx]) do |workbook|
Dir.mktmpdir do |tempdir|
new_csv_path = File.join(tempdir, "Bibelbund.csv")
assert_equal "Tagebuch des Sekret\303\244rs. Letzte Tagung 15./16.11.75 Schweiz", workbook.cell(45, "A")
assert_equal "Tagebuch des Sekret\303\244rs. Nachrichten aus Chile", workbook.cell(46, "A")
assert_equal "Tagebuch aus Chile Juli 1977", workbook.cell(55, "A")
assert workbook.to_csv(new_csv_path)
assert File.exist?(new_csv_path)
assert FileUtils.identical?(original_csv_path, new_csv_path), "error in class #{workbook.class}"
end
end
end
def test_bug_empty_sheet
with_each_spreadsheet(name: "formula", format: [:openoffice, :excelx]) do |workbook|
workbook.default_sheet = "Sheet3" # is an empty sheet
Dir.mktmpdir do |tempdir|
workbook.to_csv(File.join(tempdir, "emptysheet.csv"))
assert_equal "", `cat #{File.join(tempdir, "emptysheet.csv")}`
end
end
end
def test_bug_quotes_excelx
skip_long_test
# TODO: run this test with a much smaller document
with_each_spreadsheet(name: "Bibelbund", format: [:openoffice, :excelx]) do |workbook|
workbook.default_sheet = workbook.sheets.first
assert_equal(
'Einflüsse der neuen Theologie in "de gereformeerde Kerken van Nederland"',
workbook.cell("A", 76)
)
workbook.to_csv("csv#{$$}")
assert_equal(
'Einflüsse der neuen Theologie in "de gereformeerde Kerken van Nederland"',
workbook.cell("A", 78)
)
File.delete_if_exist("csv#{$$}")
end
end
def test_bug_datetime_to_csv
with_each_spreadsheet(name: "datetime") do |workbook|
Dir.mktmpdir do |tempdir|
datetime_csv_file = File.join(tempdir, "datetime.csv")
assert workbook.to_csv(datetime_csv_file)
assert File.exist?(datetime_csv_file)
assert_equal "", file_diff("#{TESTDIR}/so_datetime.csv", datetime_csv_file)
end
end
end
def test_bug_datetime_offset_change
# DO NOT REMOVE Asia/Calcutta
[nil, "US/Eastern", "US/Pacific", "Asia/Calcutta"].each do |zone|
with_timezone(zone) do
with_each_spreadsheet(name: "datetime_timezone_ist_offset_change", format: %i[excelx openoffice libreoffice]) do |workbook|
Dir.mktmpdir do |tempdir|
datetime_csv_file = File.join(tempdir, "datetime_timezone_ist_offset_change.csv")
assert workbook.to_csv(datetime_csv_file)
assert File.exist?(datetime_csv_file)
assert_equal "", file_diff("#{TESTDIR}/so_datetime_timezone_ist_offset_change.csv", datetime_csv_file)
end
end
end
end
end
def test_true_class
assert_equal "true", cell_to_csv(1, 1)
end
def test_false_class
assert_equal "false", cell_to_csv(2, 1)
end
def test_date_class
assert_equal "2017-01-01", cell_to_csv(3, 1)
end
def cell_to_csv(row, col)
filename = File.join(TESTDIR, "formula_cell_types.xlsx")
Roo::Spreadsheet.open(filename).send("cell_to_csv", row, col, "Sheet1")
end
end
|