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
|
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_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
|