roo 2.7.0 → 2.8.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.github/issue_template.md +16 -0
- data/.github/pull_request_template.md +14 -0
- data/.rubocop.yml +186 -0
- data/.travis.yml +12 -7
- data/CHANGELOG.md +53 -2
- data/LICENSE +2 -0
- data/README.md +29 -13
- data/lib/roo/base.rb +69 -61
- data/lib/roo/constants.rb +5 -3
- data/lib/roo/csv.rb +20 -12
- data/lib/roo/excelx/cell/base.rb +26 -12
- data/lib/roo/excelx/cell/boolean.rb +9 -6
- data/lib/roo/excelx/cell/date.rb +7 -7
- data/lib/roo/excelx/cell/datetime.rb +14 -18
- data/lib/roo/excelx/cell/empty.rb +3 -2
- data/lib/roo/excelx/cell/number.rb +35 -34
- data/lib/roo/excelx/cell/string.rb +3 -3
- data/lib/roo/excelx/cell/time.rb +4 -3
- data/lib/roo/excelx/cell.rb +10 -6
- data/lib/roo/excelx/comments.rb +3 -3
- data/lib/roo/excelx/coordinate.rb +11 -4
- data/lib/roo/excelx/extractor.rb +21 -3
- data/lib/roo/excelx/format.rb +38 -31
- data/lib/roo/excelx/images.rb +26 -0
- data/lib/roo/excelx/relationships.rb +12 -4
- data/lib/roo/excelx/shared.rb +10 -3
- data/lib/roo/excelx/shared_strings.rb +9 -15
- data/lib/roo/excelx/sheet.rb +49 -10
- data/lib/roo/excelx/sheet_doc.rb +89 -48
- data/lib/roo/excelx/styles.rb +3 -3
- data/lib/roo/excelx/workbook.rb +7 -3
- data/lib/roo/excelx.rb +42 -16
- data/lib/roo/helpers/default_attr_reader.rb +20 -0
- data/lib/roo/helpers/weak_instance_cache.rb +41 -0
- data/lib/roo/open_office.rb +8 -6
- data/lib/roo/spreadsheet.rb +1 -1
- data/lib/roo/utils.rb +70 -20
- data/lib/roo/version.rb +1 -1
- data/lib/roo.rb +4 -1
- data/roo.gemspec +13 -11
- data/spec/lib/roo/base_spec.rb +45 -3
- data/spec/lib/roo/excelx/relationships_spec.rb +43 -0
- data/spec/lib/roo/excelx/sheet_doc_spec.rb +11 -0
- data/spec/lib/roo/excelx_spec.rb +150 -31
- data/spec/lib/roo/strict_spec.rb +43 -0
- data/spec/lib/roo/utils_spec.rb +25 -3
- data/spec/lib/roo/weak_instance_cache_spec.rb +92 -0
- data/spec/lib/roo_spec.rb +0 -0
- data/spec/spec_helper.rb +1 -1
- data/test/excelx/cell/test_attr_reader_default.rb +72 -0
- data/test/excelx/cell/test_base.rb +5 -0
- data/test/excelx/cell/test_datetime.rb +6 -6
- data/test/excelx/cell/test_empty.rb +11 -0
- data/test/excelx/cell/test_number.rb +9 -0
- data/test/excelx/cell/test_string.rb +20 -0
- data/test/excelx/cell/test_time.rb +4 -4
- data/test/excelx/test_coordinate.rb +51 -0
- data/test/formatters/test_csv.rb +19 -2
- data/test/formatters/test_xml.rb +13 -9
- data/test/helpers/test_accessing_files.rb +60 -0
- data/test/helpers/test_comments.rb +43 -0
- data/test/helpers/test_formulas.rb +9 -0
- data/test/helpers/test_labels.rb +103 -0
- data/test/helpers/test_sheets.rb +55 -0
- data/test/helpers/test_styles.rb +62 -0
- data/test/roo/test_base.rb +182 -0
- data/test/roo/test_csv.rb +37 -1
- data/test/roo/test_excelx.rb +157 -13
- data/test/roo/test_open_office.rb +196 -33
- data/test/test_helper.rb +66 -22
- data/test/test_roo.rb +32 -881
- metadata +32 -14
- data/.github/ISSUE_TEMPLATE +0 -10
- data/Gemfile_ruby2 +0 -30
data/test/test_roo.rb
CHANGED
@@ -10,20 +10,14 @@ require 'test_helper'
|
|
10
10
|
require 'stringio'
|
11
11
|
|
12
12
|
class TestRoo < Minitest::Test
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
oo.default_sheet = sh
|
22
|
-
assert_equal sh, oo.default_sheet
|
23
|
-
}
|
24
|
-
end
|
25
|
-
end
|
26
|
-
|
13
|
+
include TestSheets
|
14
|
+
include TestAccesingFiles
|
15
|
+
include TestFormulas
|
16
|
+
include TestComments
|
17
|
+
include TestLabels
|
18
|
+
include TestStyles
|
19
|
+
|
20
|
+
# Cell related tests
|
27
21
|
def test_cells
|
28
22
|
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
29
23
|
# warum ist Auswaehlen erstes sheet hier nicht
|
@@ -62,12 +56,6 @@ class TestRoo < Minitest::Test
|
|
62
56
|
end
|
63
57
|
end
|
64
58
|
|
65
|
-
def test_celltype
|
66
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
67
|
-
assert_equal :string, oo.celltype(2,6)
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
59
|
def test_cell_address
|
72
60
|
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
73
61
|
assert_equal "tata", oo.cell(6,1)
|
@@ -87,46 +75,6 @@ class TestRoo < Minitest::Test
|
|
87
75
|
end
|
88
76
|
end
|
89
77
|
|
90
|
-
def test_office_version
|
91
|
-
with_each_spreadsheet(:name=>'numbers1', :format=>:openoffice) do |oo|
|
92
|
-
assert_equal "1.0", oo.officeversion
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
def test_sheetname
|
97
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
98
|
-
oo.default_sheet = "Name of Sheet 2"
|
99
|
-
assert_equal 'I am sheet 2', oo.cell('C',5)
|
100
|
-
assert_raises(RangeError) { oo.default_sheet = "non existing sheet name" }
|
101
|
-
assert_raises(RangeError) { oo.default_sheet = "non existing sheet name" }
|
102
|
-
assert_raises(RangeError) { oo.cell('C',5,"non existing sheet name")}
|
103
|
-
assert_raises(RangeError) { oo.celltype('C',5,"non existing sheet name")}
|
104
|
-
assert_raises(RangeError) { oo.empty?('C',5,"non existing sheet name")}
|
105
|
-
assert_raises(RangeError) { oo.formula?('C',5,"non existing sheet name")}
|
106
|
-
assert_raises(RangeError) { oo.formula('C',5,"non existing sheet name")}
|
107
|
-
assert_raises(RangeError) { oo.set('C',5,42,"non existing sheet name")}
|
108
|
-
assert_raises(RangeError) { oo.formulas("non existing sheet name")}
|
109
|
-
assert_raises(RangeError) { oo.to_yaml({},1,1,1,1,"non existing sheet name")}
|
110
|
-
end
|
111
|
-
end
|
112
|
-
|
113
|
-
def test_argument_error
|
114
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
115
|
-
oo.default_sheet = "Tabelle1"
|
116
|
-
end
|
117
|
-
end
|
118
|
-
|
119
|
-
def test_bug_contiguous_cells
|
120
|
-
with_each_spreadsheet(:name=>'numbers1', :format=>:openoffice) do |oo|
|
121
|
-
oo.default_sheet = "Sheet4"
|
122
|
-
assert_equal Date.new(2007,06,16), oo.cell('a',1)
|
123
|
-
assert_equal 10, oo.cell('b',1)
|
124
|
-
assert_equal 10, oo.cell('c',1)
|
125
|
-
assert_equal 10, oo.cell('d',1)
|
126
|
-
assert_equal 10, oo.cell('e',1)
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
78
|
def test_bug_italo_ve
|
131
79
|
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
132
80
|
oo.default_sheet = "Sheet5"
|
@@ -138,127 +86,15 @@ class TestRoo < Minitest::Test
|
|
138
86
|
end
|
139
87
|
end
|
140
88
|
|
141
|
-
def
|
142
|
-
with_each_spreadsheet(:name=>'
|
143
|
-
assert_equal
|
144
|
-
assert_equal '1', oo.cell('B',1)
|
145
|
-
assert_equal '1', oo.cell('C',1)
|
146
|
-
assert_equal 1, oo.cell('A',2).to_i
|
147
|
-
assert_equal 2, oo.cell('B',2).to_i
|
148
|
-
assert_equal 1, oo.cell('C',2).to_i
|
149
|
-
assert_equal 1, oo.cell('A',3)
|
150
|
-
assert_equal 3, oo.cell('B',3)
|
151
|
-
assert_equal 1, oo.cell('C',3)
|
152
|
-
assert_equal 'A', oo.cell('A',4)
|
153
|
-
assert_equal 'A', oo.cell('B',4)
|
154
|
-
assert_equal 'A', oo.cell('C',4)
|
155
|
-
assert_equal 0.01, oo.cell('A',5)
|
156
|
-
assert_equal 0.01, oo.cell('B',5)
|
157
|
-
assert_equal 0.01, oo.cell('C',5)
|
158
|
-
assert_equal 0.03, oo.cell('a',5)+oo.cell('b',5)+oo.cell('c',5)
|
159
|
-
|
160
|
-
# Cells values in row 1:
|
161
|
-
assert_equal "1:string", oo.cell(1, 1)+":"+oo.celltype(1, 1).to_s
|
162
|
-
assert_equal "1:string",oo.cell(1, 2)+":"+oo.celltype(1, 2).to_s
|
163
|
-
assert_equal "1:string",oo.cell(1, 3)+":"+oo.celltype(1, 3).to_s
|
164
|
-
|
165
|
-
# Cells values in row 2:
|
166
|
-
assert_equal "1:string",oo.cell(2, 1)+":"+oo.celltype(2, 1).to_s
|
167
|
-
assert_equal "2:string",oo.cell(2, 2)+":"+oo.celltype(2, 2).to_s
|
168
|
-
assert_equal "1:string",oo.cell(2, 3)+":"+oo.celltype(2, 3).to_s
|
169
|
-
|
170
|
-
# Cells values in row 3:
|
171
|
-
assert_equal "1:float",oo.cell(3, 1).to_s+":"+oo.celltype(3, 1).to_s
|
172
|
-
assert_equal "3:float",oo.cell(3, 2).to_s+":"+oo.celltype(3, 2).to_s
|
173
|
-
assert_equal "1:float",oo.cell(3, 3).to_s+":"+oo.celltype(3, 3).to_s
|
174
|
-
|
175
|
-
# Cells values in row 4:
|
176
|
-
assert_equal "A:string",oo.cell(4, 1)+":"+oo.celltype(4, 1).to_s
|
177
|
-
assert_equal "A:string",oo.cell(4, 2)+":"+oo.celltype(4, 2).to_s
|
178
|
-
assert_equal "A:string",oo.cell(4, 3)+":"+oo.celltype(4, 3).to_s
|
179
|
-
|
180
|
-
# Cells values in row 5:
|
181
|
-
if oo.class == Roo::OpenOffice
|
182
|
-
assert_equal "0.01:percentage",oo.cell(5, 1).to_s+":"+oo.celltype(5, 1).to_s
|
183
|
-
assert_equal "0.01:percentage",oo.cell(5, 2).to_s+":"+oo.celltype(5, 2).to_s
|
184
|
-
assert_equal "0.01:percentage",oo.cell(5, 3).to_s+":"+oo.celltype(5, 3).to_s
|
185
|
-
else
|
186
|
-
assert_equal "0.01:float",oo.cell(5, 1).to_s+":"+oo.celltype(5, 1).to_s
|
187
|
-
assert_equal "0.01:float",oo.cell(5, 2).to_s+":"+oo.celltype(5, 2).to_s
|
188
|
-
assert_equal "0.01:float",oo.cell(5, 3).to_s+":"+oo.celltype(5, 3).to_s
|
189
|
-
end
|
190
|
-
end
|
191
|
-
end
|
192
|
-
|
193
|
-
def test_formula_openoffice
|
194
|
-
with_each_spreadsheet(:name=>'formula', :format=>:openoffice) do |oo|
|
195
|
-
assert_equal 1, oo.cell('A',1)
|
196
|
-
assert_equal 2, oo.cell('A',2)
|
197
|
-
assert_equal 3, oo.cell('A',3)
|
198
|
-
assert_equal 4, oo.cell('A',4)
|
199
|
-
assert_equal 5, oo.cell('A',5)
|
200
|
-
assert_equal 6, oo.cell('A',6)
|
201
|
-
assert_equal 21, oo.cell('A',7)
|
202
|
-
assert_equal :formula, oo.celltype('A',7)
|
203
|
-
assert_equal "=[Sheet2.A1]", oo.formula('C',7)
|
204
|
-
assert_nil oo.formula('A',6)
|
205
|
-
assert_equal [[7, 1, "=SUM([.A1:.A6])"],
|
206
|
-
[7, 2, "=SUM([.$A$1:.B6])"],
|
207
|
-
[7, 3, "=[Sheet2.A1]"],
|
208
|
-
[8, 2, "=SUM([.$A$1:.B7])"],
|
209
|
-
], oo.formulas(oo.sheets.first)
|
210
|
-
|
211
|
-
# setting a cell
|
212
|
-
oo.set('A',15, 41)
|
213
|
-
assert_equal 41, oo.cell('A',15)
|
214
|
-
oo.set('A',16, "41")
|
215
|
-
assert_equal "41", oo.cell('A',16)
|
216
|
-
oo.set('A',17, 42.5)
|
217
|
-
assert_equal 42.5, oo.cell('A',17)
|
218
|
-
end
|
219
|
-
end
|
220
|
-
|
221
|
-
def test_header_with_brackets_excelx
|
222
|
-
with_each_spreadsheet(:name => 'advanced_header', :format => :openoffice) do |oo|
|
223
|
-
parsed_head = oo.parse(:headers => true)
|
224
|
-
assert_equal "Date(yyyy-mm-dd)", oo.cell('A',1)
|
225
|
-
assert_equal parsed_head[0].keys, ["Date(yyyy-mm-dd)"]
|
226
|
-
assert_equal parsed_head[0].values, ["Date(yyyy-mm-dd)"]
|
89
|
+
def test_celltype
|
90
|
+
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
91
|
+
assert_equal :string, oo.celltype(2,6)
|
227
92
|
end
|
228
93
|
end
|
229
94
|
|
230
|
-
def
|
231
|
-
with_each_spreadsheet(:name=>'
|
232
|
-
|
233
|
-
assert_equal 2, oo.cell('A',2)
|
234
|
-
assert_equal 3, oo.cell('A',3)
|
235
|
-
assert_equal 4, oo.cell('A',4)
|
236
|
-
assert_equal 5, oo.cell('A',5)
|
237
|
-
assert_equal 6, oo.cell('A',6)
|
238
|
-
assert_equal 21, oo.cell('A',7)
|
239
|
-
assert_equal :formula, oo.celltype('A',7)
|
240
|
-
#steht nicht in Datei, oder?
|
241
|
-
#nein, diesen Bezug habe ich nur in der OpenOffice-Datei
|
242
|
-
#assert_equal "=[Sheet2.A1]", oo.formula('C',7)
|
243
|
-
assert_nil oo.formula('A',6)
|
244
|
-
# assert_equal [[7, 1, "=SUM([.A1:.A6])"],
|
245
|
-
# [7, 2, "=SUM([.$A$1:.B6])"],
|
246
|
-
#[7, 3, "=[Sheet2.A1]"],
|
247
|
-
#[8, 2, "=SUM([.$A$1:.B7])"],
|
248
|
-
#], oo.formulas(oo.sheets.first)
|
249
|
-
assert_equal [[7, 1, 'SUM(A1:A6)'],
|
250
|
-
[7, 2, 'SUM($A$1:B6)'],
|
251
|
-
# [7, 3, "=[Sheet2.A1]"],
|
252
|
-
# [8, 2, "=SUM([.$A$1:.B7])"],
|
253
|
-
], oo.formulas(oo.sheets.first)
|
254
|
-
|
255
|
-
# setting a cell
|
256
|
-
oo.set('A',15, 41)
|
257
|
-
assert_equal 41, oo.cell('A',15)
|
258
|
-
oo.set('A',16, "41")
|
259
|
-
assert_equal "41", oo.cell('A',16)
|
260
|
-
oo.set('A',17, 42.5)
|
261
|
-
assert_equal 42.5, oo.cell('A',17)
|
95
|
+
def test_argument_error
|
96
|
+
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
97
|
+
oo.default_sheet = "Tabelle1"
|
262
98
|
end
|
263
99
|
end
|
264
100
|
|
@@ -296,57 +132,6 @@ class TestRoo < Minitest::Test
|
|
296
132
|
end
|
297
133
|
end
|
298
134
|
|
299
|
-
def test_bug_ric
|
300
|
-
with_each_spreadsheet(:name=>'ric', :format=>:openoffice) do |oo|
|
301
|
-
assert oo.empty?('A',1)
|
302
|
-
assert oo.empty?('B',1)
|
303
|
-
assert oo.empty?('C',1)
|
304
|
-
assert oo.empty?('D',1)
|
305
|
-
expected = 1
|
306
|
-
letter = 'e'
|
307
|
-
while letter <= 'u'
|
308
|
-
assert_equal expected, oo.cell(letter,1)
|
309
|
-
letter.succ!
|
310
|
-
expected += 1
|
311
|
-
end
|
312
|
-
assert_equal 'J', oo.cell('v',1)
|
313
|
-
assert_equal 'P', oo.cell('w',1)
|
314
|
-
assert_equal 'B', oo.cell('x',1)
|
315
|
-
assert_equal 'All', oo.cell('y',1)
|
316
|
-
assert_equal 0, oo.cell('a',2)
|
317
|
-
assert oo.empty?('b',2)
|
318
|
-
assert oo.empty?('c',2)
|
319
|
-
assert oo.empty?('d',2)
|
320
|
-
assert_equal 'B', oo.cell('e',2)
|
321
|
-
assert_equal 'B', oo.cell('f',2)
|
322
|
-
assert_equal 'B', oo.cell('g',2)
|
323
|
-
assert_equal 'B', oo.cell('h',2)
|
324
|
-
assert_equal 'B', oo.cell('i',2)
|
325
|
-
assert_equal 'B', oo.cell('j',2)
|
326
|
-
assert_equal 'B', oo.cell('k',2)
|
327
|
-
assert_equal 'B', oo.cell('l',2)
|
328
|
-
assert_equal 'B', oo.cell('m',2)
|
329
|
-
assert_equal 'B', oo.cell('n',2)
|
330
|
-
assert_equal 'B', oo.cell('o',2)
|
331
|
-
assert_equal 'B', oo.cell('p',2)
|
332
|
-
assert_equal 'B', oo.cell('q',2)
|
333
|
-
assert_equal 'B', oo.cell('r',2)
|
334
|
-
assert_equal 'B', oo.cell('s',2)
|
335
|
-
assert oo.empty?('t',2)
|
336
|
-
assert oo.empty?('u',2)
|
337
|
-
assert_equal 0 , oo.cell('v',2)
|
338
|
-
assert_equal 0 , oo.cell('w',2)
|
339
|
-
assert_equal 15 , oo.cell('x',2)
|
340
|
-
assert_equal 15 , oo.cell('y',2)
|
341
|
-
end
|
342
|
-
end
|
343
|
-
|
344
|
-
def test_mehrteilig
|
345
|
-
with_each_spreadsheet(:name=>'Bibelbund1', :format=>:openoffice) do |oo|
|
346
|
-
assert_equal "Tagebuch des Sekret\303\244rs. Letzte Tagung 15./16.11.75 Schweiz", oo.cell(45,'A')
|
347
|
-
end
|
348
|
-
end
|
349
|
-
|
350
135
|
def test_bug_mehrere_datum
|
351
136
|
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
352
137
|
oo.default_sheet = 'Sheet5'
|
@@ -426,271 +211,7 @@ class TestRoo < Minitest::Test
|
|
426
211
|
end
|
427
212
|
end
|
428
213
|
|
429
|
-
|
430
|
-
if LONG_RUN
|
431
|
-
with_each_spreadsheet(:name=>'Bibelbund', :format=>[:openoffice, :excelx]) do |oo|
|
432
|
-
oo.default_sheet = oo.sheets.first
|
433
|
-
rec = oo.find 20
|
434
|
-
assert rec
|
435
|
-
# assert_equal "Brief aus dem Sekretariat", rec[0]
|
436
|
-
#p rec
|
437
|
-
assert_equal "Brief aus dem Sekretariat", rec[0]['TITEL']
|
438
|
-
rec = oo.find 22
|
439
|
-
assert rec
|
440
|
-
# assert_equal "Brief aus dem Skretariat. Tagung in Amberg/Opf.",rec[0]
|
441
|
-
assert_equal "Brief aus dem Skretariat. Tagung in Amberg/Opf.",rec[0]['TITEL']
|
442
|
-
end
|
443
|
-
end
|
444
|
-
end
|
445
|
-
|
446
|
-
def test_find_by_row
|
447
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
448
|
-
oo.header_line = nil
|
449
|
-
rec = oo.find 16
|
450
|
-
assert rec
|
451
|
-
assert_nil oo.header_line
|
452
|
-
# keine Headerlines in diesem Beispiel definiert
|
453
|
-
assert_equal "einundvierzig", rec[0]
|
454
|
-
#assert_equal false, rec
|
455
|
-
rec = oo.find 15
|
456
|
-
assert rec
|
457
|
-
assert_equal 41,rec[0]
|
458
|
-
end
|
459
|
-
end
|
460
|
-
|
461
|
-
def test_find_by_row_if_header_line_is_not_nil
|
462
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
463
|
-
oo.header_line = 2
|
464
|
-
refute_nil oo.header_line
|
465
|
-
rec = oo.find 1
|
466
|
-
assert rec
|
467
|
-
assert_equal 5, rec[0]
|
468
|
-
assert_equal 6, rec[1]
|
469
|
-
rec = oo.find 15
|
470
|
-
assert rec
|
471
|
-
assert_equal "einundvierzig", rec[0]
|
472
|
-
end
|
473
|
-
end
|
474
|
-
|
475
|
-
def test_find_by_conditions
|
476
|
-
if LONG_RUN
|
477
|
-
with_each_spreadsheet(:name=>'Bibelbund', :format=>[:openoffice,
|
478
|
-
:excelx]) do |oo|
|
479
|
-
#-----------------------------------------------------------------
|
480
|
-
zeilen = oo.find(:all, :conditions => {
|
481
|
-
'TITEL' => 'Brief aus dem Sekretariat'
|
482
|
-
}
|
483
|
-
)
|
484
|
-
assert_equal 2, zeilen.size
|
485
|
-
assert_equal [{"VERFASSER"=>"Almassy, Annelene von",
|
486
|
-
"INTERNET"=>nil,
|
487
|
-
"SEITE"=>316.0,
|
488
|
-
"KENNUNG"=>"Aus dem Bibelbund",
|
489
|
-
"OBJEKT"=>"Bibel+Gem",
|
490
|
-
"PC"=>"#C:\\Bibelbund\\reprint\\BuG1982-3.pdf#",
|
491
|
-
"NUMMER"=>"1982-3",
|
492
|
-
"TITEL"=>"Brief aus dem Sekretariat"},
|
493
|
-
{"VERFASSER"=>"Almassy, Annelene von",
|
494
|
-
"INTERNET"=>nil,
|
495
|
-
"SEITE"=>222.0,
|
496
|
-
"KENNUNG"=>"Aus dem Bibelbund",
|
497
|
-
"OBJEKT"=>"Bibel+Gem",
|
498
|
-
"PC"=>"#C:\\Bibelbund\\reprint\\BuG1983-2.pdf#",
|
499
|
-
"NUMMER"=>"1983-2",
|
500
|
-
"TITEL"=>"Brief aus dem Sekretariat"}] , zeilen
|
501
|
-
|
502
|
-
#----------------------------------------------------------
|
503
|
-
zeilen = oo.find(:all,
|
504
|
-
:conditions => { 'VERFASSER' => 'Almassy, Annelene von' }
|
505
|
-
)
|
506
|
-
assert_equal 13, zeilen.size
|
507
|
-
#----------------------------------------------------------
|
508
|
-
zeilen = oo.find(:all, :conditions => {
|
509
|
-
'TITEL' => 'Brief aus dem Sekretariat',
|
510
|
-
'VERFASSER' => 'Almassy, Annelene von',
|
511
|
-
}
|
512
|
-
)
|
513
|
-
assert_equal 2, zeilen.size
|
514
|
-
assert_equal [{"VERFASSER"=>"Almassy, Annelene von",
|
515
|
-
"INTERNET"=>nil,
|
516
|
-
"SEITE"=>316.0,
|
517
|
-
"KENNUNG"=>"Aus dem Bibelbund",
|
518
|
-
"OBJEKT"=>"Bibel+Gem",
|
519
|
-
"PC"=>"#C:\\Bibelbund\\reprint\\BuG1982-3.pdf#",
|
520
|
-
"NUMMER"=>"1982-3",
|
521
|
-
"TITEL"=>"Brief aus dem Sekretariat"},
|
522
|
-
{"VERFASSER"=>"Almassy, Annelene von",
|
523
|
-
"INTERNET"=>nil,
|
524
|
-
"SEITE"=>222.0,
|
525
|
-
"KENNUNG"=>"Aus dem Bibelbund",
|
526
|
-
"OBJEKT"=>"Bibel+Gem",
|
527
|
-
"PC"=>"#C:\\Bibelbund\\reprint\\BuG1983-2.pdf#",
|
528
|
-
"NUMMER"=>"1983-2",
|
529
|
-
"TITEL"=>"Brief aus dem Sekretariat"}] , zeilen
|
530
|
-
|
531
|
-
# Result as an array
|
532
|
-
zeilen = oo.find(:all,
|
533
|
-
:conditions => {
|
534
|
-
'TITEL' => 'Brief aus dem Sekretariat',
|
535
|
-
'VERFASSER' => 'Almassy, Annelene von',
|
536
|
-
}, :array => true)
|
537
|
-
assert_equal 2, zeilen.size
|
538
|
-
assert_equal [
|
539
|
-
[
|
540
|
-
"Brief aus dem Sekretariat",
|
541
|
-
"Almassy, Annelene von",
|
542
|
-
"Bibel+Gem",
|
543
|
-
"1982-3",
|
544
|
-
316.0,
|
545
|
-
nil,
|
546
|
-
"#C:\\Bibelbund\\reprint\\BuG1982-3.pdf#",
|
547
|
-
"Aus dem Bibelbund",
|
548
|
-
],
|
549
|
-
[
|
550
|
-
"Brief aus dem Sekretariat",
|
551
|
-
"Almassy, Annelene von",
|
552
|
-
"Bibel+Gem",
|
553
|
-
"1983-2",
|
554
|
-
222.0,
|
555
|
-
nil,
|
556
|
-
"#C:\\Bibelbund\\reprint\\BuG1983-2.pdf#",
|
557
|
-
"Aus dem Bibelbund",
|
558
|
-
]] , zeilen
|
559
|
-
end
|
560
|
-
end
|
561
|
-
end
|
562
|
-
|
563
|
-
#TODO: temporaerer Test
|
564
|
-
def test_seiten_als_date
|
565
|
-
if LONG_RUN
|
566
|
-
with_each_spreadsheet(:name=>'Bibelbund', :format=>:excelx) do |oo|
|
567
|
-
assert_equal 'Bericht aus dem Sekretariat', oo.cell(13,1)
|
568
|
-
assert_equal '1981-4', oo.cell(13,'D')
|
569
|
-
assert_equal String, oo.excelx_type(13,'E')[1].class
|
570
|
-
assert_equal [:numeric_or_formula,"General"], oo.excelx_type(13,'E')
|
571
|
-
assert_equal '428', oo.excelx_value(13,'E')
|
572
|
-
assert_equal 428.0, oo.cell(13,'E')
|
573
|
-
end
|
574
|
-
end
|
575
|
-
end
|
576
|
-
|
577
|
-
def test_column
|
578
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
579
|
-
expected = [1.0,5.0,nil,10.0,Date.new(1961,11,21),'tata',nil,nil,nil,nil,'thisisa11',41.0,nil,nil,41.0,'einundvierzig',nil,Date.new(2007,5,31)]
|
580
|
-
assert_equal expected, oo.column(1)
|
581
|
-
assert_equal expected, oo.column('a')
|
582
|
-
end
|
583
|
-
end
|
584
|
-
|
585
|
-
def test_column_huge_document
|
586
|
-
if LONG_RUN
|
587
|
-
with_each_spreadsheet(:name=>'Bibelbund', :format=>[:openoffice,
|
588
|
-
:excelx]) do |oo|
|
589
|
-
oo.default_sheet = oo.sheets.first
|
590
|
-
assert_equal 3735, oo.column('a').size
|
591
|
-
#assert_equal 499, oo.column('a').size
|
592
|
-
end
|
593
|
-
end
|
594
|
-
end
|
595
|
-
|
596
|
-
def test_simple_spreadsheet_find_by_condition
|
597
|
-
with_each_spreadsheet(:name=>'simple_spreadsheet') do |oo|
|
598
|
-
oo.header_line = 3
|
599
|
-
# oo.date_format = '%m/%d/%Y' if oo.class == Google
|
600
|
-
erg = oo.find(:all, :conditions => {'Comment' => 'Task 1'})
|
601
|
-
assert_equal Date.new(2007,05,07), erg[1]['Date']
|
602
|
-
assert_equal 10.75 , erg[1]['Start time']
|
603
|
-
assert_equal 12.50 , erg[1]['End time']
|
604
|
-
assert_equal 0 , erg[1]['Pause']
|
605
|
-
assert_equal 1.75 , erg[1]['Sum']
|
606
|
-
assert_equal "Task 1" , erg[1]['Comment']
|
607
|
-
end
|
608
|
-
end
|
609
|
-
|
610
|
-
def get_extension(oo)
|
611
|
-
case oo
|
612
|
-
when Roo::OpenOffice
|
613
|
-
".ods"
|
614
|
-
when Roo::Excelx
|
615
|
-
".xlsx"
|
616
|
-
end
|
617
|
-
end
|
618
|
-
|
619
|
-
def test_info
|
620
|
-
expected_templ = "File: numbers1%s\n"+
|
621
|
-
"Number of sheets: 5\n"+
|
622
|
-
"Sheets: Tabelle1, Name of Sheet 2, Sheet3, Sheet4, Sheet5\n"+
|
623
|
-
"Sheet 1:\n"+
|
624
|
-
" First row: 1\n"+
|
625
|
-
" Last row: 18\n"+
|
626
|
-
" First column: A\n"+
|
627
|
-
" Last column: G\n"+
|
628
|
-
"Sheet 2:\n"+
|
629
|
-
" First row: 5\n"+
|
630
|
-
" Last row: 14\n"+
|
631
|
-
" First column: B\n"+
|
632
|
-
" Last column: E\n"+
|
633
|
-
"Sheet 3:\n"+
|
634
|
-
" First row: 1\n"+
|
635
|
-
" Last row: 1\n"+
|
636
|
-
" First column: A\n"+
|
637
|
-
" Last column: BA\n"+
|
638
|
-
"Sheet 4:\n"+
|
639
|
-
" First row: 1\n"+
|
640
|
-
" Last row: 1\n"+
|
641
|
-
" First column: A\n"+
|
642
|
-
" Last column: E\n"+
|
643
|
-
"Sheet 5:\n"+
|
644
|
-
" First row: 1\n"+
|
645
|
-
" Last row: 6\n"+
|
646
|
-
" First column: A\n"+
|
647
|
-
" Last column: E"
|
648
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
649
|
-
ext = get_extension(oo)
|
650
|
-
expected = sprintf(expected_templ,ext)
|
651
|
-
begin
|
652
|
-
if oo.class == Google
|
653
|
-
assert_equal expected.gsub(/numbers1/,key_of("numbers1")), oo.info
|
654
|
-
else
|
655
|
-
assert_equal expected, oo.info
|
656
|
-
end
|
657
|
-
rescue NameError
|
658
|
-
#
|
659
|
-
end
|
660
|
-
end
|
661
|
-
end
|
662
|
-
|
663
|
-
def test_info_doesnt_set_default_sheet
|
664
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
665
|
-
oo.default_sheet = 'Sheet3'
|
666
|
-
oo.info
|
667
|
-
assert_equal 'Sheet3', oo.default_sheet
|
668
|
-
end
|
669
|
-
end
|
670
|
-
|
671
|
-
def test_bug_bbu
|
672
|
-
with_each_spreadsheet(:name=>'bbu', :format=>[:openoffice, :excelx]) do |oo|
|
673
|
-
assert_equal "File: bbu#{get_extension(oo)}
|
674
|
-
Number of sheets: 3
|
675
|
-
Sheets: 2007_12, Tabelle2, Tabelle3
|
676
|
-
Sheet 1:
|
677
|
-
First row: 1
|
678
|
-
Last row: 4
|
679
|
-
First column: A
|
680
|
-
Last column: F
|
681
|
-
Sheet 2:
|
682
|
-
- empty -
|
683
|
-
Sheet 3:
|
684
|
-
- empty -", oo.info
|
685
|
-
|
686
|
-
oo.default_sheet = oo.sheets[1] # empty sheet
|
687
|
-
assert_nil oo.first_row
|
688
|
-
assert_nil oo.last_row
|
689
|
-
assert_nil oo.first_column
|
690
|
-
assert_nil oo.last_column
|
691
|
-
end
|
692
|
-
end
|
693
|
-
|
214
|
+
# Tests for Specific Cell types (time, etc)
|
694
215
|
|
695
216
|
def test_bug_time_nil
|
696
217
|
with_each_spreadsheet(:name=>'time-test') do |oo|
|
@@ -703,54 +224,6 @@ Sheet 3:
|
|
703
224
|
end
|
704
225
|
end
|
705
226
|
|
706
|
-
def test_bug_simple_spreadsheet_time_bug
|
707
|
-
# really a bug? are cells really of type time?
|
708
|
-
# No! :float must be the correct type
|
709
|
-
with_each_spreadsheet(:name=>'simple_spreadsheet', :format=>:excelx) do |oo|
|
710
|
-
# puts oo.cell('B',5).to_s
|
711
|
-
# assert_equal :time, oo.celltype('B',5)
|
712
|
-
assert_equal :float, oo.celltype('B',5)
|
713
|
-
assert_equal 10.75, oo.cell('B',5)
|
714
|
-
assert_equal 12.50, oo.cell('C',5)
|
715
|
-
assert_equal 0, oo.cell('D',5)
|
716
|
-
assert_equal 1.75, oo.cell('E',5)
|
717
|
-
assert_equal 'Task 1', oo.cell('F',5)
|
718
|
-
assert_equal Date.new(2007,5,7), oo.cell('A',5)
|
719
|
-
end
|
720
|
-
end
|
721
|
-
|
722
|
-
def test_simple2_excelx
|
723
|
-
with_each_spreadsheet(:name=>'simple_spreadsheet', :format=>:excelx) do |oo|
|
724
|
-
assert_equal [:numeric_or_formula, "yyyy\\-mm\\-dd"], oo.excelx_type('A',4)
|
725
|
-
assert_equal [:numeric_or_formula, "#,##0.00"], oo.excelx_type('B',4)
|
726
|
-
assert_equal [:numeric_or_formula, "#,##0.00"], oo.excelx_type('c',4)
|
727
|
-
assert_equal [:numeric_or_formula, "General"], oo.excelx_type('d',4)
|
728
|
-
assert_equal [:numeric_or_formula, "General"], oo.excelx_type('e',4)
|
729
|
-
assert_equal :string, oo.excelx_type('f',4)
|
730
|
-
|
731
|
-
assert_equal "39209", oo.excelx_value('a',4)
|
732
|
-
assert_equal "yyyy\\-mm\\-dd", oo.excelx_format('a',4)
|
733
|
-
assert_equal "9.25", oo.excelx_value('b',4)
|
734
|
-
assert_equal "10.25", oo.excelx_value('c',4)
|
735
|
-
assert_equal "0", oo.excelx_value('d',4)
|
736
|
-
#... Sum-Spalte
|
737
|
-
# assert_equal "Task 1", oo.excelx_value('f',4)
|
738
|
-
assert_equal "Task 1", oo.cell('f',4)
|
739
|
-
assert_equal Date.new(2007,05,07), oo.cell('a',4)
|
740
|
-
assert_equal "9.25", oo.excelx_value('b',4)
|
741
|
-
assert_equal "#,##0.00", oo.excelx_format('b',4)
|
742
|
-
assert_equal 9.25, oo.cell('b',4)
|
743
|
-
assert_equal :float, oo.celltype('b',4)
|
744
|
-
assert_equal :float, oo.celltype('d',4)
|
745
|
-
assert_equal 0, oo.cell('d',4)
|
746
|
-
assert_equal :formula, oo.celltype('e',4)
|
747
|
-
assert_equal 1, oo.cell('e',4)
|
748
|
-
assert_equal 'C4-B4-D4', oo.formula('e',4)
|
749
|
-
assert_equal :string, oo.celltype('f',4)
|
750
|
-
assert_equal "Task 1", oo.cell('f',4)
|
751
|
-
end
|
752
|
-
end
|
753
|
-
|
754
227
|
def test_datetime
|
755
228
|
with_each_spreadsheet(:name=>'datetime') do |oo|
|
756
229
|
val = oo.cell('c',3)
|
@@ -783,17 +256,6 @@ Sheet 3:
|
|
783
256
|
end
|
784
257
|
end
|
785
258
|
|
786
|
-
def test_cell_openoffice_html_escape
|
787
|
-
with_each_spreadsheet(:name=>'html-escape', :format=>:openoffice) do |oo|
|
788
|
-
assert_equal "'", oo.cell(1,1)
|
789
|
-
assert_equal "&", oo.cell(2,1)
|
790
|
-
assert_equal ">", oo.cell(3,1)
|
791
|
-
assert_equal "<", oo.cell(4,1)
|
792
|
-
assert_equal "`", oo.cell(5,1)
|
793
|
-
# test_openoffice_zipped will catch issues with "
|
794
|
-
end
|
795
|
-
end
|
796
|
-
|
797
259
|
def test_cell_boolean
|
798
260
|
with_each_spreadsheet(:name=>'boolean', :format=>[:openoffice, :excelx]) do |oo|
|
799
261
|
if oo.class == Roo::Excelx
|
@@ -820,72 +282,9 @@ Sheet 3:
|
|
820
282
|
end
|
821
283
|
end
|
822
284
|
|
823
|
-
def test_cell_styles
|
824
|
-
# styles only valid in excel spreadsheets?
|
825
|
-
# TODO: what todo with other spreadsheet types
|
826
|
-
with_each_spreadsheet(:name=>'style', :format=>[# :openoffice,
|
827
|
-
:excelx
|
828
|
-
]) do |oo|
|
829
|
-
# bold
|
830
|
-
assert_equal true, oo.font(1,1).bold?
|
831
|
-
assert_equal false, oo.font(1,1).italic?
|
832
|
-
assert_equal false, oo.font(1,1).underline?
|
833
|
-
|
834
|
-
# italic
|
835
|
-
assert_equal false, oo.font(2,1).bold?
|
836
|
-
assert_equal true, oo.font(2,1).italic?
|
837
|
-
assert_equal false, oo.font(2,1).underline?
|
838
|
-
|
839
|
-
# normal
|
840
|
-
assert_equal false, oo.font(3,1).bold?
|
841
|
-
assert_equal false, oo.font(3,1).italic?
|
842
|
-
assert_equal false, oo.font(3,1).underline?
|
843
|
-
|
844
|
-
# underline
|
845
|
-
assert_equal false, oo.font(4,1).bold?
|
846
|
-
assert_equal false, oo.font(4,1).italic?
|
847
|
-
assert_equal true, oo.font(4,1).underline?
|
848
|
-
|
849
|
-
# bold italic
|
850
|
-
assert_equal true, oo.font(5,1).bold?
|
851
|
-
assert_equal true, oo.font(5,1).italic?
|
852
|
-
assert_equal false, oo.font(5,1).underline?
|
853
|
-
|
854
|
-
# bold underline
|
855
|
-
assert_equal true, oo.font(6,1).bold?
|
856
|
-
assert_equal false, oo.font(6,1).italic?
|
857
|
-
assert_equal true, oo.font(6,1).underline?
|
858
|
-
|
859
|
-
# italic underline
|
860
|
-
assert_equal false, oo.font(7,1).bold?
|
861
|
-
assert_equal true, oo.font(7,1).italic?
|
862
|
-
assert_equal true, oo.font(7,1).underline?
|
863
|
-
|
864
|
-
# bolded row
|
865
|
-
assert_equal true, oo.font(8,1).bold?
|
866
|
-
assert_equal false, oo.font(8,1).italic?
|
867
|
-
assert_equal false, oo.font(8,1).underline?
|
868
|
-
|
869
|
-
# bolded col
|
870
|
-
assert_equal true, oo.font(9,2).bold?
|
871
|
-
assert_equal false, oo.font(9,2).italic?
|
872
|
-
assert_equal false, oo.font(9,2).underline?
|
873
|
-
|
874
|
-
# bolded row, italic col
|
875
|
-
assert_equal true, oo.font(10,3).bold?
|
876
|
-
assert_equal true, oo.font(10,3).italic?
|
877
|
-
assert_equal false, oo.font(10,3).underline?
|
878
|
-
|
879
|
-
# normal
|
880
|
-
assert_equal false, oo.font(11,4).bold?
|
881
|
-
assert_equal false, oo.font(11,4).italic?
|
882
|
-
assert_equal false, oo.font(11,4).underline?
|
883
|
-
end
|
884
|
-
end
|
885
|
-
|
886
|
-
# Need to extend to other formats
|
887
285
|
def test_row_whitespace
|
888
286
|
# auf dieses Dokument habe ich keinen Zugriff TODO:
|
287
|
+
# TODO: No access to document whitespace?
|
889
288
|
with_each_spreadsheet(:name=>'whitespace') do |oo|
|
890
289
|
oo.default_sheet = "Sheet1"
|
891
290
|
assert_equal [nil, nil, nil, nil, nil, nil], oo.row(1)
|
@@ -921,26 +320,6 @@ Sheet 3:
|
|
921
320
|
end
|
922
321
|
end
|
923
322
|
|
924
|
-
def test_excelx_links
|
925
|
-
with_each_spreadsheet(:name=>'link', :format=>:excelx) do |oo|
|
926
|
-
assert_equal 'Google', oo.cell(1,1)
|
927
|
-
assert_equal 'http://www.google.com', oo.cell(1,1).href
|
928
|
-
end
|
929
|
-
end
|
930
|
-
|
931
|
-
# Excel has two base date formats one from 1900 and the other from 1904.
|
932
|
-
# see #test_base_dates_in_excel
|
933
|
-
def test_base_dates_in_excelx
|
934
|
-
with_each_spreadsheet(:name=>'1900_base', :format=>:excelx) do |oo|
|
935
|
-
assert_equal Date.new(2009,06,15), oo.cell(1,1)
|
936
|
-
assert_equal :date, oo.celltype(1,1)
|
937
|
-
end
|
938
|
-
with_each_spreadsheet(:name=>'1904_base', :format=>:excelx) do |oo|
|
939
|
-
assert_equal Date.new(2009,06,15), oo.cell(1,1)
|
940
|
-
assert_equal :date, oo.celltype(1,1)
|
941
|
-
end
|
942
|
-
end
|
943
|
-
|
944
323
|
def test_cell_methods
|
945
324
|
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
946
325
|
assert_equal 10, oo.a4 # cell(4,'A')
|
@@ -960,252 +339,24 @@ Sheet 3:
|
|
960
339
|
|
961
340
|
# compare large spreadsheets
|
962
341
|
def test_compare_large_spreadsheets
|
963
|
-
|
964
|
-
|
965
|
-
|
966
|
-
|
967
|
-
|
968
|
-
|
969
|
-
|
970
|
-
|
971
|
-
|
972
|
-
|
973
|
-
|
974
|
-
|
975
|
-
|
976
|
-
|
977
|
-
|
978
|
-
end
|
342
|
+
skip_long_test
|
343
|
+
qq = Roo::OpenOffice.new(File.join('test', 'files', "Bibelbund.ods"))
|
344
|
+
with_each_spreadsheet(name: 'Bibelbund') do |oo|
|
345
|
+
oo.sheets.each do |sh|
|
346
|
+
oo.first_row.upto(oo.last_row) do |row|
|
347
|
+
oo.first_column.upto(oo.last_column) do |col|
|
348
|
+
c1 = qq.cell(row, col, sh)
|
349
|
+
c1.force_encoding("UTF-8") if c1.class == String
|
350
|
+
c2 = oo.cell(row,col,sh)
|
351
|
+
c2.force_encoding("UTF-8") if c2.class == String
|
352
|
+
next if c1.nil? && c2.nil?
|
353
|
+
|
354
|
+
assert_equal c1, c2, "diff in #{sh}/#{row}/#{col}}"
|
355
|
+
assert_equal qq.celltype(row, col, sh), oo.celltype(row, col, sh)
|
356
|
+
assert_equal qq.formula?(row, col, sh), oo.formula?(row, col, sh)
|
979
357
|
end
|
980
358
|
end
|
981
359
|
end
|
982
|
-
end # LONG_RUN
|
983
|
-
end
|
984
|
-
|
985
|
-
def test_label
|
986
|
-
with_each_spreadsheet(:name=>'named_cells', :format=>[:openoffice,:excelx,:libreoffice]) do |oo|
|
987
|
-
# oo.default_sheet = oo.sheets.first
|
988
|
-
begin
|
989
|
-
row,col = oo.label('anton')
|
990
|
-
rescue ArgumentError
|
991
|
-
puts "labels error at #{oo.class}"
|
992
|
-
raise
|
993
|
-
end
|
994
|
-
assert_equal 5, row, "error with label in class #{oo.class}"
|
995
|
-
assert_equal 3, col, "error with label in class #{oo.class}"
|
996
|
-
|
997
|
-
row,col = oo.label('anton')
|
998
|
-
assert_equal 'Anton', oo.cell(row,col), "error with label in class #{oo.class}"
|
999
|
-
|
1000
|
-
row,col = oo.label('berta')
|
1001
|
-
assert_equal 'Bertha', oo.cell(row,col), "error with label in class #{oo.class}"
|
1002
|
-
|
1003
|
-
row,col = oo.label('caesar')
|
1004
|
-
assert_equal 'Cäsar', oo.cell(row,col),"error with label in class #{oo.class}"
|
1005
|
-
|
1006
|
-
row,col = oo.label('never')
|
1007
|
-
assert_nil row
|
1008
|
-
assert_nil col
|
1009
|
-
|
1010
|
-
row,col,sheet = oo.label('anton')
|
1011
|
-
assert_equal 5, row
|
1012
|
-
assert_equal 3, col
|
1013
|
-
assert_equal "Sheet1", sheet
|
1014
|
-
end
|
1015
|
-
end
|
1016
|
-
|
1017
|
-
def test_method_missing_anton
|
1018
|
-
with_each_spreadsheet(:name=>'named_cells', :format=>[:openoffice,:excelx,:libreoffice]) do |oo|
|
1019
|
-
# oo.default_sheet = oo.sheets.first
|
1020
|
-
assert_equal "Anton", oo.anton
|
1021
|
-
assert_raises(NoMethodError) {
|
1022
|
-
oo.never
|
1023
|
-
}
|
1024
|
-
end
|
1025
|
-
end
|
1026
|
-
|
1027
|
-
def test_labels
|
1028
|
-
with_each_spreadsheet(:name=>'named_cells', :format=>[:openoffice,:excelx,:libreoffice]) do |oo|
|
1029
|
-
# oo.default_sheet = oo.sheets.first
|
1030
|
-
assert_equal [
|
1031
|
-
['anton',[5,3,'Sheet1']],
|
1032
|
-
['berta',[4,2,'Sheet1']],
|
1033
|
-
['caesar',[7,2,'Sheet1']],
|
1034
|
-
], oo.labels, "error with labels array in class #{oo.class}"
|
1035
360
|
end
|
1036
361
|
end
|
1037
|
-
|
1038
|
-
def test_labeled_cells
|
1039
|
-
with_each_spreadsheet(:name=>'named_cells', :format=>[:openoffice,:excelx,:libreoffice]) do |oo|
|
1040
|
-
oo.default_sheet = oo.sheets.first
|
1041
|
-
begin
|
1042
|
-
row,col = oo.label('anton')
|
1043
|
-
rescue ArgumentError
|
1044
|
-
puts "labels error at #{oo.class}"
|
1045
|
-
raise
|
1046
|
-
end
|
1047
|
-
assert_equal 5, row
|
1048
|
-
assert_equal 3, col
|
1049
|
-
|
1050
|
-
row,col = oo.label('anton')
|
1051
|
-
assert_equal 'Anton', oo.cell(row,col)
|
1052
|
-
|
1053
|
-
row,col = oo.label('berta')
|
1054
|
-
assert_equal 'Bertha', oo.cell(row,col)
|
1055
|
-
|
1056
|
-
row,col = oo.label('caesar')
|
1057
|
-
assert_equal 'Cäsar', oo.cell(row,col)
|
1058
|
-
|
1059
|
-
row,col = oo.label('never')
|
1060
|
-
assert_nil row
|
1061
|
-
assert_nil col
|
1062
|
-
|
1063
|
-
row,col,sheet = oo.label('anton')
|
1064
|
-
assert_equal 5, row
|
1065
|
-
assert_equal 3, col
|
1066
|
-
assert_equal "Sheet1", sheet
|
1067
|
-
|
1068
|
-
assert_equal "Anton", oo.anton
|
1069
|
-
assert_raises(NoMethodError) {
|
1070
|
-
row,col = oo.never
|
1071
|
-
}
|
1072
|
-
|
1073
|
-
# Reihenfolge row,col,sheet analog zu #label
|
1074
|
-
assert_equal [
|
1075
|
-
['anton',[5,3,'Sheet1']],
|
1076
|
-
['berta',[4,2,'Sheet1']],
|
1077
|
-
['caesar',[7,2,'Sheet1']],
|
1078
|
-
], oo.labels, "error with labels array in class #{oo.class}"
|
1079
|
-
end
|
1080
|
-
end
|
1081
|
-
|
1082
|
-
# #formulas of an empty sheet should return an empty array and not result in
|
1083
|
-
# an error message
|
1084
|
-
# 2011-06-24
|
1085
|
-
def test_bug_formulas_empty_sheet
|
1086
|
-
with_each_spreadsheet(:name =>'emptysheets',
|
1087
|
-
:format=>[:openoffice,:excelx]) do |oo|
|
1088
|
-
oo.default_sheet = oo.sheets.first
|
1089
|
-
oo.formulas
|
1090
|
-
assert_equal([], oo.formulas)
|
1091
|
-
end
|
1092
|
-
end
|
1093
|
-
|
1094
|
-
def test_bug_pfand_from_windows_phone_xlsx
|
1095
|
-
return if defined? JRUBY_VERSION
|
1096
|
-
with_each_spreadsheet(:name=>'Pfand_from_windows_phone', :format=>:excelx) do |oo|
|
1097
|
-
oo.default_sheet = oo.sheets.first
|
1098
|
-
assert_equal ['Blatt1','Blatt2','Blatt3'], oo.sheets
|
1099
|
-
assert_equal 'Summe', oo.cell('b',1)
|
1100
|
-
|
1101
|
-
assert_equal Date.new(2011,9,14), oo.cell('a',2)
|
1102
|
-
assert_equal :date, oo.celltype('a',2)
|
1103
|
-
assert_equal Date.new(2011,9,15), oo.cell('a',3)
|
1104
|
-
assert_equal :date, oo.celltype('a',3)
|
1105
|
-
|
1106
|
-
assert_equal 3.81, oo.cell('b',2)
|
1107
|
-
assert_equal "SUM(C2:L2)", oo.formula('b',2)
|
1108
|
-
assert_equal 0.7, oo.cell('c',2)
|
1109
|
-
end # each
|
1110
|
-
end
|
1111
|
-
|
1112
|
-
def test_comment
|
1113
|
-
with_each_spreadsheet(:name=>'comments', :format=>[:openoffice,:libreoffice,
|
1114
|
-
:excelx]) do |oo|
|
1115
|
-
oo.default_sheet = oo.sheets.first
|
1116
|
-
assert_equal 'Kommentar fuer B4',oo.comment('b',4)
|
1117
|
-
assert_equal 'Kommentar fuer B5',oo.comment('b',5)
|
1118
|
-
assert_nil oo.comment('b',99)
|
1119
|
-
# no comment at the second page
|
1120
|
-
oo.default_sheet = oo.sheets[1]
|
1121
|
-
assert_nil oo.comment('b',4)
|
1122
|
-
end
|
1123
|
-
end
|
1124
|
-
|
1125
|
-
def test_comments
|
1126
|
-
with_each_spreadsheet(:name=>'comments', :format=>[:openoffice,:libreoffice,
|
1127
|
-
:excelx]) do |oo|
|
1128
|
-
oo.default_sheet = oo.sheets.first
|
1129
|
-
assert_equal [
|
1130
|
-
[4, 2, "Kommentar fuer B4"],
|
1131
|
-
[5, 2, "Kommentar fuer B5"],
|
1132
|
-
], oo.comments(oo.sheets.first), "comments error in class #{oo.class}"
|
1133
|
-
# no comments at the second page
|
1134
|
-
oo.default_sheet = oo.sheets[1]
|
1135
|
-
assert_equal [], oo.comments, "comments error in class #{oo.class}"
|
1136
|
-
end
|
1137
|
-
|
1138
|
-
with_each_spreadsheet(:name=>'comments-google', :format=>[:excelx]) do |oo|
|
1139
|
-
oo.default_sheet = oo.sheets.first
|
1140
|
-
assert_equal [[1, 1, "this is a comment\n\t-Steven Daniels"]], oo.comments(oo.sheets.first), "comments error in class #{oo.class}"
|
1141
|
-
end
|
1142
|
-
end
|
1143
|
-
|
1144
|
-
def common_possible_bug_snowboard_cells(ss)
|
1145
|
-
assert_equal "A.", ss.cell(13,'A'), ss.class
|
1146
|
-
assert_equal 147, ss.cell(13,'f'), ss.class
|
1147
|
-
assert_equal 152, ss.cell(13,'g'), ss.class
|
1148
|
-
assert_equal 156, ss.cell(13,'h'), ss.class
|
1149
|
-
assert_equal 158, ss.cell(13,'i'), ss.class
|
1150
|
-
assert_equal 160, ss.cell(13,'j'), ss.class
|
1151
|
-
assert_equal 164, ss.cell(13,'k'), ss.class
|
1152
|
-
assert_equal 168, ss.cell(13,'l'), ss.class
|
1153
|
-
assert_equal :string, ss.celltype(13,'m'), ss.class
|
1154
|
-
assert_equal "159W", ss.cell(13,'m'), ss.class
|
1155
|
-
assert_equal "164W", ss.cell(13,'n'), ss.class
|
1156
|
-
assert_equal "168W", ss.cell(13,'o'), ss.class
|
1157
|
-
end
|
1158
|
-
|
1159
|
-
def test_bug_numbered_sheet_names
|
1160
|
-
with_each_spreadsheet(:name=>'bug-numbered-sheet-names', :format=>:excelx) do |oo|
|
1161
|
-
oo.each_with_pagename { }
|
1162
|
-
end
|
1163
|
-
end
|
1164
|
-
|
1165
|
-
def test_close
|
1166
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
1167
|
-
next unless (tempdir = oo.instance_variable_get('@tmpdir'))
|
1168
|
-
oo.close
|
1169
|
-
assert !File.exists?(tempdir), "Expected #{tempdir} to be cleaned up, but it still exists"
|
1170
|
-
end
|
1171
|
-
end
|
1172
|
-
|
1173
|
-
# NOTE: Ruby 2.4.0 changed the way GC works. The last Roo object created by
|
1174
|
-
# with_each_spreadsheet wasn't getting GC'd until after the process
|
1175
|
-
# ended.
|
1176
|
-
#
|
1177
|
-
# That behavior change broke this test. In order to fix it, I forked the
|
1178
|
-
# process and passed the temp directories from the forked process in
|
1179
|
-
# order to check if they were removed properly.
|
1180
|
-
def test_finalize
|
1181
|
-
skip if defined? JRUBY_VERSION
|
1182
|
-
|
1183
|
-
read, write = IO.pipe
|
1184
|
-
pid = Process.fork do
|
1185
|
-
with_each_spreadsheet(name: "numbers1") do |oo|
|
1186
|
-
write.puts oo.instance_variable_get("@tmpdir")
|
1187
|
-
end
|
1188
|
-
end
|
1189
|
-
|
1190
|
-
Process.wait(pid)
|
1191
|
-
write.close
|
1192
|
-
tempdirs = read.read.split("\n")
|
1193
|
-
read.close
|
1194
|
-
|
1195
|
-
refute tempdirs.empty?
|
1196
|
-
tempdirs.each do |tempdir|
|
1197
|
-
refute File.exist?(tempdir), "Expected #{tempdir} to be cleaned up, but it still exists"
|
1198
|
-
end
|
1199
|
-
end
|
1200
|
-
|
1201
|
-
def test_cleanup_on_error
|
1202
|
-
old_temp_files = Dir.open(Dir.tmpdir).to_a
|
1203
|
-
with_each_spreadsheet(:name=>'non_existent_file', :ignore_errors=>true) do |oo|; end
|
1204
|
-
assert_equal Dir.open(Dir.tmpdir).to_a, old_temp_files
|
1205
|
-
end
|
1206
|
-
|
1207
|
-
def test_name_with_leading_slash
|
1208
|
-
xlsx = Roo::Excelx.new(File.join(TESTDIR,'name_with_leading_slash.xlsx'))
|
1209
|
-
assert_equal 1, xlsx.sheets.count
|
1210
|
-
end
|
1211
|
-
end # class
|
362
|
+
end
|