roo 1.0.2 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -172,9 +172,10 @@ class Google < GenericSpreadsheet
172
172
 
173
173
  # returns the type of a cell:
174
174
  # * :float
175
- # * :string,
175
+ # * :string
176
176
  # * :date
177
177
  # * :percentage
178
+ # * :formula
178
179
  # * :time
179
180
  def celltype(row, col, sheet=nil)
180
181
  sheet = @default_sheet unless sheet
@@ -204,7 +205,7 @@ class Google < GenericSpreadsheet
204
205
  # true, if there is a formula
205
206
  def formula?(row,col,sheet=nil)
206
207
  sheet = @default_sheet unless sheet
207
- read_cells unless @cells_read[sheet]
208
+ read_cells(sheet) unless @cells_read[sheet]
208
209
  row,col = normalize(row,col)
209
210
  formula(row,col) != nil
210
211
  end
@@ -12,16 +12,28 @@ class Openoffice < GenericSpreadsheet
12
12
 
13
13
  # initialization and opening of a spreadsheet file
14
14
  # values for packed: :zip
15
- def initialize(filename, packed=nil) #, create = false)
15
+ def initialize(filename, packed=nil, file_warning=:error) #, create = false)
16
+ @file_warning = file_warning
17
+ super()
16
18
  @tmpdir = "oo_"+$$.to_s
17
19
  unless File.exists?(@tmpdir)
18
20
  FileUtils::mkdir(@tmpdir)
19
21
  end
20
22
  filename = open_from_uri(filename) if filename[0,7] == "http://"
21
23
  filename = unzip(filename) if packed and packed == :zip
22
- if File.extname(filename) != ".ods"
23
- warn "are you sure, this is an openoffice file?"
24
- end
24
+ file_type_check(filename,'.ods','an openoffice')
25
+ # if File.extname(filename).downcase != ".ods"
26
+ # case @file_warning
27
+ # when :error
28
+ # raise TypeError, "#{filename} is not an openoffice file"
29
+ # when :warning
30
+ # warn "are you sure, this is an openoffice file?"
31
+ # when :ignore
32
+ # # ignore
33
+ # else
34
+ # raise "#{@file_warning} illegal state of file_warning"
35
+ # end
36
+ # end
25
37
  #if create and ! File.exists?(filename)
26
38
  # self.create_openoffice(filename)
27
39
  #end
@@ -102,7 +114,7 @@ class Openoffice < GenericSpreadsheet
102
114
  # true, if there is a formula
103
115
  def formula?(row,col,sheet=nil)
104
116
  sheet = @default_sheet unless sheet
105
- read_cells unless @cells_read[sheet]
117
+ read_cells(sheet) unless @cells_read[sheet]
106
118
  row,col = normalize(row,col)
107
119
  formula(row,col) != nil
108
120
  end
@@ -127,9 +139,11 @@ class Openoffice < GenericSpreadsheet
127
139
 
128
140
  # returns the type of a cell:
129
141
  # * :float
130
- # * :string,
142
+ # * :string
131
143
  # * :date
132
144
  # * :percentage
145
+ # * :formula
146
+ # * :time
133
147
  def celltype(row,col,sheet=nil)
134
148
  sheet = @default_sheet unless sheet
135
149
  read_cells(sheet) unless @cells_read[sheet]
@@ -182,62 +196,11 @@ class Openoffice < GenericSpreadsheet
182
196
  @cell[sheet].inspect
183
197
  end
184
198
 
185
- # returns all values in this row as an array
186
- # row numbers are 1,2,3,... like in the spreadsheet
187
- def row(rownumber,sheet=nil)
188
- sheet = @default_sheet unless sheet
189
- read_cells(sheet) unless @cells_read[sheet]
190
- result = []
191
- tmp_arr = []
192
- @cell[sheet].each_pair {|key,value|
193
- y,x = key.split(',')
194
- x = x.to_i
195
- y = y.to_i
196
- if y == rownumber
197
- tmp_arr[x] = value
198
- end
199
- }
200
- result = tmp_arr[1..-1]
201
- while result[-1] == nil
202
- result = result[0..-2]
203
- end
204
- result
205
- end
206
-
207
- # returns all values in this column as an array
208
- # column numbers are 1,2,3,... like in the spreadsheet
209
- def column(columnnumber,sheet=nil)
210
- if columnnumber.class == String
211
- columnnumber = Openoffice.letter_to_number(columnnumber)
212
- end
213
- sheet = @default_sheet unless sheet
214
- read_cells(sheet) unless @cells_read[sheet]
215
- result = []
216
- first_row(sheet).upto(last_row(sheet)) do |row|
217
- result << cell(row,columnnumber,sheet)
218
- end
219
- result
220
- end
221
-
222
199
  # save spreadsheet
223
200
  def save #:nodoc:
224
201
  42
225
202
  end
226
203
 
227
- # evaluate the formula at this cell
228
- # experimental: DO NOT USE THIS!
229
- def solve(row,col) #:nodoc:
230
- parser = SpreadsheetParser.new
231
- visitor = Visitor.new
232
- #puts cell(row,col)
233
- #puts formula(row,col)
234
- formula = formula(row,col)[1..-1] # .downcase
235
- # puts formula
236
- #eval formula
237
- #parser.parse(formula)
238
- parser.parse(formula).accept(visitor)
239
- end
240
-
241
204
  # returns each formula in the selected sheet as an array of elements
242
205
  # [row, col, formula]
243
206
  def formulas(sheet=nil)
@@ -299,6 +262,7 @@ class Openoffice < GenericSpreadsheet
299
262
  sheet = @default_sheet unless sheet
300
263
  sheet_found = false
301
264
  raise ArgumentError, "Error: sheet '#{sheet||'nil'}' not valid" if @default_sheet == nil and sheet==nil
265
+ raise RangeError unless self.sheets.include? sheet
302
266
  oo_document_count = 0
303
267
  @doc.each_element do |oo_document|
304
268
  # @officeversion = oo_document.attributes['version']
@@ -1,8 +1,8 @@
1
1
  module Roo #:nodoc:
2
2
  module VERSION #:nodoc:
3
3
  MAJOR = 1
4
- MINOR = 0
5
- TINY = 2
4
+ MINOR = 1
5
+ TINY = 0
6
6
 
7
7
  STRING = [MAJOR, MINOR, TINY].join('.')
8
8
  end
Binary file
Binary file
Binary file
@@ -1,2 +1,13 @@
1
1
  require 'test/unit'
2
2
  require File.dirname(__FILE__) + '/../lib/roo'
3
+
4
+ # helper method
5
+ def after(d)
6
+ yield if DateTime.now > d
7
+ end
8
+
9
+ # helper method
10
+ def before(d)
11
+ yield if DateTime.now <= d
12
+ end
13
+
@@ -23,10 +23,6 @@ DISPLAY_LOG = false
23
23
  DB_LOG = false
24
24
 
25
25
  if DB_LOG
26
- # gem 'activerecord', '< 2.0.0'
27
- # require 'activerecord'
28
- # require_gem 'activerecord', '< 2.0.0'
29
- #gem 'activerecord', '< 2.0.0'
30
26
  require 'activerecord'
31
27
  end
32
28
 
@@ -82,17 +78,7 @@ class Test::Unit::TestCase
82
78
  if DISPLAY_LOG
83
79
  puts "\t#{t2-t1} seconds"
84
80
  end
85
- # record = {'class' => self.class.to_s,
86
- # 'test' => @method_name,
87
- # 'start' => t1,
88
- # 'duration' => t2-t1}
89
- # open('test_runs.yml','a') { |f| YAML.dump(record, f) }
90
- # #--
91
81
  if DB_LOG
92
- # p self.class.to_s
93
- #p @method_name
94
- #p t1
95
- #p t2-t1
96
82
  domain = Testrun.create(
97
83
  :class_name => self.class.to_s,
98
84
  :test_name => @method_name,
@@ -104,13 +90,11 @@ class Test::Unit::TestCase
104
90
  end
105
91
 
106
92
  class File
107
-
108
93
  def File.delete_if_exist(filename)
109
94
  if File.exist?(filename)
110
95
  File.delete(filename)
111
96
  end
112
97
  end
113
-
114
98
  end
115
99
 
116
100
  class TestRoo < Test::Unit::TestCase
@@ -124,22 +108,11 @@ class TestRoo < Test::Unit::TestCase
124
108
  OPENOFFICEWRITE = false # experimental: write access with OO-Documents
125
109
  ONLINE = false
126
110
  LONG_RUN = false
127
- GLOBAL_TIMEOUT = 2*12*60 # seconds
128
-
129
-
130
- # helper method
131
- def after(d)
132
- yield if DateTime.now > d
133
- end
134
-
135
- # helper method
136
- def before(d)
137
- yield if DateTime.now <= d
138
- end
111
+ GLOBAL_TIMEOUT = 24*60 # 2*12*60 # seconds
139
112
 
140
113
  def setup
141
114
  if DISPLAY_LOG
142
- puts "GLOBAL_TIMEOUT = #{GLOBAL_TIMEOUT}"
115
+ puts " GLOBAL_TIMEOUT = #{GLOBAL_TIMEOUT}"
143
116
  end
144
117
  end
145
118
 
@@ -561,8 +534,8 @@ class TestRoo < Test::Unit::TestCase
561
534
  if EXCEL
562
535
  oo = Excel.new(File.join("test","numbers1.xls"))
563
536
  oo.default_sheet = oo.sheets.first
564
- assert_equal "tata", oo.cell(6,1)
565
537
  assert_equal "tata", oo.cell(6,'A')
538
+ assert_equal "tata", oo.cell(6,1)
566
539
  assert_equal "tata", oo.cell('A',6)
567
540
  assert_equal "tata", oo.cell(6,'a')
568
541
  assert_equal "tata", oo.cell('a',6)
@@ -696,7 +669,6 @@ class TestRoo < Test::Unit::TestCase
696
669
  assert_equal ["einundvierzig", "zweiundvierzig", "dreiundvierzig", "vierundvierzig", "fuenfundvierzig"], oo.row(16)
697
670
  end
698
671
  if EXCEL
699
- #-- Excel
700
672
  oo = Excel.new(File.join("test","numbers1.xls"))
701
673
  oo.default_sheet = oo.sheets.first
702
674
  assert_equal 41, oo.cell('a',12)
@@ -947,26 +919,83 @@ class TestRoo < Test::Unit::TestCase
947
919
  oo = Openoffice.new(File.join("test","numbers1.ods"))
948
920
  oo.default_sheet = "Name of Sheet 2"
949
921
  assert_equal 'I am sheet 2', oo.cell('C',5)
922
+ assert_raise(RangeError) { oo.default_sheet = "non existing sheet name" }
923
+ assert_raise(RangeError) { dummy = oo.cell('C',5,"non existing sheet name")}
924
+ assert_raise(RangeError) { dummy = oo.celltype('C',5,"non existing sheet name")}
925
+ assert_raise(RangeError) { dummy = oo.empty?('C',5,"non existing sheet name")}
926
+ assert_raise(RangeError) { dummy = oo.formula?('C',5,"non existing sheet name")}
927
+ assert_raise(RangeError) { dummy = oo.formula('C',5,"non existing sheet name")}
928
+ assert_raise(RangeError) { dummy = oo.set('C',5,42,"non existing sheet name")}
929
+ assert_raise(RangeError) { dummy = oo.formulas("non existing sheet name")}
930
+ assert_raise(RangeError) { dummy = oo.to_yaml({},1,1,1,1,"non existing sheet name")}
950
931
  end
951
932
  if GNUMERIC_ODS
952
933
  oo = Openoffice.new(File.join("test","gnumeric_numbers1.ods"))
953
934
  oo.default_sheet = "Name of Sheet 2"
954
935
  assert_equal 'I am sheet 2', oo.cell('C',5)
936
+ assert_raise(RangeError) {
937
+ oo.default_sheet = "non existing sheet name"
938
+ }
939
+ assert_raise(RangeError) { oo.default_sheet = "non existing sheet name" }
940
+ assert_raise(RangeError) { dummy = oo.cell('C',5,"non existing sheet name")}
941
+ assert_raise(RangeError) { dummy = oo.celltype('C',5,"non existing sheet name")}
942
+ assert_raise(RangeError) { dummy = oo.empty?('C',5,"non existing sheet name")}
943
+ assert_raise(RangeError) { dummy = oo.formula?('C',5,"non existing sheet name")}
944
+ assert_raise(RangeError) { dummy = oo.formula('C',5,"non existing sheet name")}
945
+ assert_raise(RangeError) { dummy = oo.set('C',5,42,"non existing sheet name")}
946
+ assert_raise(RangeError) { dummy = oo.formulas("non existing sheet name")}
947
+ assert_raise(RangeError) { dummy = oo.to_yaml({},1,1,1,1,"non existing sheet name")}
955
948
  end
956
949
  if EXCEL
957
950
  oo = Excel.new(File.join("test","numbers1.xls"))
958
951
  oo.default_sheet = "Name of Sheet 2"
959
952
  assert_equal 'I am sheet 2', oo.cell('C',5)
953
+ assert_raise(RangeError) {
954
+ oo.default_sheet = "non existing sheet name"
955
+ }
956
+ assert_raise(RangeError) { oo.default_sheet = "non existing sheet name" }
957
+ assert_raise(RangeError) { dummy = oo.cell('C',5,"non existing sheet name")}
958
+ assert_raise(RangeError) { dummy = oo.celltype('C',5,"non existing sheet name")}
959
+ assert_raise(RangeError) { dummy = oo.empty?('C',5,"non existing sheet name")}
960
+ assert_raise(RuntimeError) { dummy = oo.formula?('C',5,"non existing sheet name")}
961
+ assert_raise(RuntimeError) { dummy = oo.formula('C',5,"non existing sheet name")}
962
+ #assert_raise(RangeError) { dummy = oo.set('C',5,42,"non existing sheet name")}
963
+ #assert_raise(RangeError) { dummy = oo.formulas("non existing sheet name")}
964
+ assert_raise(RangeError) { dummy = oo.to_yaml({},1,1,1,1,"non existing sheet name")}
960
965
  end
961
966
  if EXCELX
962
967
  oo = Excelx.new(File.join("test","numbers1.xlsx"))
963
968
  oo.default_sheet = "Name of Sheet 2"
964
969
  assert_equal 'I am sheet 2', oo.cell('C',5)
970
+ assert_raise(RangeError) {
971
+ oo.default_sheet = "non existing sheet name"
972
+ }
973
+ assert_raise(RangeError) { oo.default_sheet = "non existing sheet name" }
974
+ assert_raise(RangeError) { dummy = oo.cell('C',5,"non existing sheet name")}
975
+ assert_raise(RangeError) { dummy = oo.celltype('C',5,"non existing sheet name")}
976
+ assert_raise(RangeError) { dummy = oo.empty?('C',5,"non existing sheet name")}
977
+ assert_raise(RangeError) { dummy = oo.formula?('C',5,"non existing sheet name")}
978
+ assert_raise(RangeError) { dummy = oo.formula('C',5,"non existing sheet name")}
979
+ assert_raise(RangeError) { dummy = oo.set('C',5,42,"non existing sheet name")}
980
+ assert_raise(RangeError) { dummy = oo.formulas("non existing sheet name")}
981
+ assert_raise(RangeError) { dummy = oo.to_yaml({},1,1,1,1,"non existing sheet name")}
965
982
  end
966
983
  if GOOGLE
967
984
  oo = Google.new(key_of("numbers1"))
968
985
  oo.default_sheet = "Name of Sheet 2"
969
986
  assert_equal 'I am sheet 2', oo.cell('C',5)
987
+ assert_raise(RangeError) {
988
+ oo.default_sheet = "non existing sheet name"
989
+ }
990
+ assert_raise(RangeError) { oo.default_sheet = "non existing sheet name" }
991
+ assert_raise(RangeError) { dummy = oo.cell('C',5,"non existing sheet name")}
992
+ assert_raise(RangeError) { dummy = oo.celltype('C',5,"non existing sheet name")}
993
+ assert_raise(RangeError) { dummy = oo.empty?('C',5,"non existing sheet name")}
994
+ assert_raise(RangeError) { dummy = oo.formula?('C',5,"non existing sheet name")}
995
+ assert_raise(RangeError) { dummy = oo.formula('C',5,"non existing sheet name")}
996
+ assert_raise(RangeError) { dummy = oo.set('C',5,42,"non existing sheet name")}
997
+ assert_raise(RangeError) { dummy = oo.formulas("non existing sheet name")}
998
+ assert_raise(RangeError) { dummy = oo.to_yaml({},1,1,1,1,"non existing sheet name")}
970
999
  end
971
1000
  end
972
1001
 
@@ -1272,144 +1301,142 @@ class TestRoo < Test::Unit::TestCase
1272
1301
 
1273
1302
  #2008-01-30
1274
1303
  def test_italo_table
1275
- after Date.new(2008,5,30) do
1276
- local_only do
1277
- oo = Openoffice.new(File.join("test","simple_spreadsheet_from_italo.ods"))
1278
- oo.default_sheet = oo.sheets.first
1304
+ local_only do
1305
+ oo = Openoffice.new(File.join("test","simple_spreadsheet_from_italo.ods"))
1306
+ oo.default_sheet = oo.sheets.first
1279
1307
 
1280
- assert_equal '1', oo.cell('A',1)
1281
- assert_equal '1', oo.cell('B',1)
1282
- assert_equal '1', oo.cell('C',1)
1308
+ assert_equal '1', oo.cell('A',1)
1309
+ assert_equal '1', oo.cell('B',1)
1310
+ assert_equal '1', oo.cell('C',1)
1283
1311
 
1284
- # assert_equal 1, oo.cell('A',2)
1285
- # assert_equal 2, oo.cell('B',2)
1286
- # assert_equal 1, oo.cell('C',2)
1287
- # are stored as strings, not numbers
1312
+ # assert_equal 1, oo.cell('A',2)
1313
+ # assert_equal 2, oo.cell('B',2)
1314
+ # assert_equal 1, oo.cell('C',2)
1315
+ # are stored as strings, not numbers
1288
1316
 
1289
- assert_equal 1, oo.cell('A',2).to_i
1290
- assert_equal 2, oo.cell('B',2).to_i
1291
- assert_equal 1, oo.cell('C',2).to_i
1317
+ assert_equal 1, oo.cell('A',2).to_i
1318
+ assert_equal 2, oo.cell('B',2).to_i
1319
+ assert_equal 1, oo.cell('C',2).to_i
1292
1320
 
1293
- assert_equal 1, oo.cell('A',3)
1294
- assert_equal 3, oo.cell('B',3)
1295
- assert_equal 1, oo.cell('C',3)
1321
+ assert_equal 1, oo.cell('A',3)
1322
+ assert_equal 3, oo.cell('B',3)
1323
+ assert_equal 1, oo.cell('C',3)
1296
1324
 
1297
- assert_equal 'A', oo.cell('A',4)
1298
- assert_equal 'A', oo.cell('B',4)
1299
- assert_equal 'A', oo.cell('C',4)
1325
+ assert_equal 'A', oo.cell('A',4)
1326
+ assert_equal 'A', oo.cell('B',4)
1327
+ assert_equal 'A', oo.cell('C',4)
1300
1328
 
1301
- # assert_equal '0.01', oo.cell('A',5)
1302
- # assert_equal '0.01', oo.cell('B',5)
1303
- # assert_equal '0.01', oo.cell('C',5)
1304
- #
1305
- assert_equal 0.01, oo.cell('A',5)
1306
- assert_equal 0.01, oo.cell('B',5)
1307
- assert_equal 0.01, oo.cell('C',5)
1329
+ # assert_equal '0.01', oo.cell('A',5)
1330
+ # assert_equal '0.01', oo.cell('B',5)
1331
+ # assert_equal '0.01', oo.cell('C',5)
1332
+ #
1333
+ assert_equal 0.01, oo.cell('A',5)
1334
+ assert_equal 0.01, oo.cell('B',5)
1335
+ assert_equal 0.01, oo.cell('C',5)
1308
1336
 
1309
- assert_equal 0.03, oo.cell('a',5)+oo.cell('b',5)+oo.cell('c',5)
1337
+ assert_equal 0.03, oo.cell('a',5)+oo.cell('b',5)+oo.cell('c',5)
1310
1338
 
1311
1339
 
1312
- # 1.0
1340
+ # 1.0
1313
1341
 
1314
- # Cells values in row 1:
1315
- assert_equal "1:string", oo.cell(1, 1)+":"+oo.celltype(1, 1).to_s
1316
- assert_equal "1:string",oo.cell(1, 2)+":"+oo.celltype(1, 2).to_s
1317
- assert_equal "1:string",oo.cell(1, 3)+":"+oo.celltype(1, 3).to_s
1342
+ # Cells values in row 1:
1343
+ assert_equal "1:string", oo.cell(1, 1)+":"+oo.celltype(1, 1).to_s
1344
+ assert_equal "1:string",oo.cell(1, 2)+":"+oo.celltype(1, 2).to_s
1345
+ assert_equal "1:string",oo.cell(1, 3)+":"+oo.celltype(1, 3).to_s
1318
1346
 
1319
- # Cells values in row 2:
1320
- assert_equal "1:string",oo.cell(2, 1)+":"+oo.celltype(2, 1).to_s
1321
- assert_equal "2:string",oo.cell(2, 2)+":"+oo.celltype(2, 2).to_s
1322
- assert_equal "1:string",oo.cell(2, 3)+":"+oo.celltype(2, 3).to_s
1347
+ # Cells values in row 2:
1348
+ assert_equal "1:string",oo.cell(2, 1)+":"+oo.celltype(2, 1).to_s
1349
+ assert_equal "2:string",oo.cell(2, 2)+":"+oo.celltype(2, 2).to_s
1350
+ assert_equal "1:string",oo.cell(2, 3)+":"+oo.celltype(2, 3).to_s
1323
1351
 
1324
- # Cells values in row 3:
1325
- assert_equal "1.0:float",oo.cell(3, 1).to_s+":"+oo.celltype(3, 1).to_s
1326
- assert_equal "3.0:float",oo.cell(3, 2).to_s+":"+oo.celltype(3, 2).to_s
1327
- assert_equal "1.0:float",oo.cell(3, 3).to_s+":"+oo.celltype(3, 3).to_s
1352
+ # Cells values in row 3:
1353
+ assert_equal "1.0:float",oo.cell(3, 1).to_s+":"+oo.celltype(3, 1).to_s
1354
+ assert_equal "3.0:float",oo.cell(3, 2).to_s+":"+oo.celltype(3, 2).to_s
1355
+ assert_equal "1.0:float",oo.cell(3, 3).to_s+":"+oo.celltype(3, 3).to_s
1328
1356
 
1329
- # Cells values in row 4:
1330
- assert_equal "A:string",oo.cell(4, 1)+":"+oo.celltype(4, 1).to_s
1331
- assert_equal "A:string",oo.cell(4, 2)+":"+oo.celltype(4, 2).to_s
1332
- assert_equal "A:string",oo.cell(4, 3)+":"+oo.celltype(4, 3).to_s
1357
+ # Cells values in row 4:
1358
+ assert_equal "A:string",oo.cell(4, 1)+":"+oo.celltype(4, 1).to_s
1359
+ assert_equal "A:string",oo.cell(4, 2)+":"+oo.celltype(4, 2).to_s
1360
+ assert_equal "A:string",oo.cell(4, 3)+":"+oo.celltype(4, 3).to_s
1333
1361
 
1334
- # Cells values in row 5:
1335
- assert_equal "0.01:percentage",oo.cell(5, 1).to_s+":"+oo.celltype(5, 1).to_s
1336
- assert_equal "0.01:percentage",oo.cell(5, 2).to_s+":"+oo.celltype(5, 2).to_s
1337
- assert_equal "0.01:percentage",oo.cell(5, 3).to_s+":"+oo.celltype(5, 3).to_s
1362
+ # Cells values in row 5:
1363
+ assert_equal "0.01:percentage",oo.cell(5, 1).to_s+":"+oo.celltype(5, 1).to_s
1364
+ assert_equal "0.01:percentage",oo.cell(5, 2).to_s+":"+oo.celltype(5, 2).to_s
1365
+ assert_equal "0.01:percentage",oo.cell(5, 3).to_s+":"+oo.celltype(5, 3).to_s
1338
1366
 
1339
- oo = Excel.new(File.join("test","simple_spreadsheet_from_italo.xls"))
1340
- oo.default_sheet = oo.sheets.first
1367
+ oo = Excel.new(File.join("test","simple_spreadsheet_from_italo.xls"))
1368
+ oo.default_sheet = oo.sheets.first
1341
1369
 
1342
- assert_equal '1', oo.cell('A',1)
1343
- assert_equal '1', oo.cell('B',1)
1344
- assert_equal '1', oo.cell('C',1)
1370
+ assert_equal '1', oo.cell('A',1)
1371
+ assert_equal '1', oo.cell('B',1)
1372
+ assert_equal '1', oo.cell('C',1)
1345
1373
 
1346
- # assert_equal 1, oo.cell('A',2)
1347
- # assert_equal 2, oo.cell('B',2)
1348
- # assert_equal 1, oo.cell('C',2)
1349
- # are stored as strings, not numbers
1374
+ # assert_equal 1, oo.cell('A',2)
1375
+ # assert_equal 2, oo.cell('B',2)
1376
+ # assert_equal 1, oo.cell('C',2)
1377
+ # are stored as strings, not numbers
1350
1378
 
1351
- assert_equal 1, oo.cell('A',2).to_i
1352
- assert_equal 2, oo.cell('B',2).to_i
1353
- assert_equal 1, oo.cell('C',2).to_i
1379
+ assert_equal 1, oo.cell('A',2).to_i
1380
+ assert_equal 2, oo.cell('B',2).to_i
1381
+ assert_equal 1, oo.cell('C',2).to_i
1354
1382
 
1355
- assert_equal 1, oo.cell('A',3)
1356
- assert_equal 3, oo.cell('B',3)
1357
- assert_equal 1, oo.cell('C',3)
1383
+ assert_equal 1, oo.cell('A',3)
1384
+ assert_equal 3, oo.cell('B',3)
1385
+ assert_equal 1, oo.cell('C',3)
1358
1386
 
1359
- assert_equal 'A', oo.cell('A',4)
1360
- assert_equal 'A', oo.cell('B',4)
1361
- assert_equal 'A', oo.cell('C',4)
1387
+ assert_equal 'A', oo.cell('A',4)
1388
+ assert_equal 'A', oo.cell('B',4)
1389
+ assert_equal 'A', oo.cell('C',4)
1362
1390
 
1363
- # assert_equal '0.01', oo.cell('A',5)
1364
- # assert_equal '0.01', oo.cell('B',5)
1365
- # assert_equal '0.01', oo.cell('C',5)
1366
- #
1367
- assert_equal 0.01, oo.cell('A',5)
1368
- assert_equal 0.01, oo.cell('B',5)
1369
- assert_equal 0.01, oo.cell('C',5)
1370
-
1371
- assert_equal 0.03, oo.cell('a',5)+oo.cell('b',5)+oo.cell('c',5)
1372
-
1373
-
1374
- # 1.0
1375
-
1376
- # Cells values in row 1:
1377
- assert_equal "1:string", oo.cell(1, 1)+":"+oo.celltype(1, 1).to_s
1378
- assert_equal "1:string",oo.cell(1, 2)+":"+oo.celltype(1, 2).to_s
1379
- assert_equal "1:string",oo.cell(1, 3)+":"+oo.celltype(1, 3).to_s
1380
-
1381
- # Cells values in row 2:
1382
- assert_equal "1:string",oo.cell(2, 1)+":"+oo.celltype(2, 1).to_s
1383
- assert_equal "2:string",oo.cell(2, 2)+":"+oo.celltype(2, 2).to_s
1384
- assert_equal "1:string",oo.cell(2, 3)+":"+oo.celltype(2, 3).to_s
1385
-
1386
- # Cells values in row 3:
1387
- assert_equal "1.0:float",oo.cell(3, 1).to_s+":"+oo.celltype(3, 1).to_s
1388
- assert_equal "3.0:float",oo.cell(3, 2).to_s+":"+oo.celltype(3, 2).to_s
1389
- assert_equal "1.0:float",oo.cell(3, 3).to_s+":"+oo.celltype(3, 3).to_s
1390
-
1391
- # Cells values in row 4:
1392
- assert_equal "A:string",oo.cell(4, 1)+":"+oo.celltype(4, 1).to_s
1393
- assert_equal "A:string",oo.cell(4, 2)+":"+oo.celltype(4, 2).to_s
1394
- assert_equal "A:string",oo.cell(4, 3)+":"+oo.celltype(4, 3).to_s
1395
-
1396
- # Cells values in row 5:
1397
- #assert_equal "0.01:percentage",oo.cell(5, 1).to_s+":"+oo.celltype(5, 1).to_s
1398
- #assert_equal "0.01:percentage",oo.cell(5, 2).to_s+":"+oo.celltype(5, 2).to_s
1399
- #assert_equal "0.01:percentage",oo.cell(5, 3).to_s+":"+oo.celltype(5, 3).to_s
1400
- # why do we get floats here? in the spreadsheet the cells were defined
1401
- # to be percentage
1402
- # TODO: should be fixed
1403
- # the excel gem does not support the cell type 'percentage' these
1404
- # cells are returned to be of the type float.
1405
- assert_equal "0.01:float",oo.cell(5, 1).to_s+":"+oo.celltype(5, 1).to_s
1406
- assert_equal "0.01:float",oo.cell(5, 2).to_s+":"+oo.celltype(5, 2).to_s
1407
- assert_equal "0.01:float",oo.cell(5, 3).to_s+":"+oo.celltype(5, 3).to_s
1408
- end
1409
- end #after
1391
+ # assert_equal '0.01', oo.cell('A',5)
1392
+ # assert_equal '0.01', oo.cell('B',5)
1393
+ # assert_equal '0.01', oo.cell('C',5)
1394
+ #
1395
+ assert_equal 0.01, oo.cell('A',5)
1396
+ assert_equal 0.01, oo.cell('B',5)
1397
+ assert_equal 0.01, oo.cell('C',5)
1398
+
1399
+ assert_equal 0.03, oo.cell('a',5)+oo.cell('b',5)+oo.cell('c',5)
1400
+
1401
+
1402
+ # 1.0
1403
+
1404
+ # Cells values in row 1:
1405
+ assert_equal "1:string", oo.cell(1, 1)+":"+oo.celltype(1, 1).to_s
1406
+ assert_equal "1:string",oo.cell(1, 2)+":"+oo.celltype(1, 2).to_s
1407
+ assert_equal "1:string",oo.cell(1, 3)+":"+oo.celltype(1, 3).to_s
1408
+
1409
+ # Cells values in row 2:
1410
+ assert_equal "1:string",oo.cell(2, 1)+":"+oo.celltype(2, 1).to_s
1411
+ assert_equal "2:string",oo.cell(2, 2)+":"+oo.celltype(2, 2).to_s
1412
+ assert_equal "1:string",oo.cell(2, 3)+":"+oo.celltype(2, 3).to_s
1413
+
1414
+ # Cells values in row 3:
1415
+ assert_equal "1.0:float",oo.cell(3, 1).to_s+":"+oo.celltype(3, 1).to_s
1416
+ assert_equal "3.0:float",oo.cell(3, 2).to_s+":"+oo.celltype(3, 2).to_s
1417
+ assert_equal "1.0:float",oo.cell(3, 3).to_s+":"+oo.celltype(3, 3).to_s
1418
+
1419
+ # Cells values in row 4:
1420
+ assert_equal "A:string",oo.cell(4, 1)+":"+oo.celltype(4, 1).to_s
1421
+ assert_equal "A:string",oo.cell(4, 2)+":"+oo.celltype(4, 2).to_s
1422
+ assert_equal "A:string",oo.cell(4, 3)+":"+oo.celltype(4, 3).to_s
1423
+
1424
+ # Cells values in row 5:
1425
+ #assert_equal "0.01:percentage",oo.cell(5, 1).to_s+":"+oo.celltype(5, 1).to_s
1426
+ #assert_equal "0.01:percentage",oo.cell(5, 2).to_s+":"+oo.celltype(5, 2).to_s
1427
+ #assert_equal "0.01:percentage",oo.cell(5, 3).to_s+":"+oo.celltype(5, 3).to_s
1428
+ # why do we get floats here? in the spreadsheet the cells were defined
1429
+ # to be percentage
1430
+ # TODO: should be fixed
1431
+ # the excel gem does not support the cell type 'percentage' these
1432
+ # cells are returned to be of the type float.
1433
+ assert_equal "0.01:float",oo.cell(5, 1).to_s+":"+oo.celltype(5, 1).to_s
1434
+ assert_equal "0.01:float",oo.cell(5, 2).to_s+":"+oo.celltype(5, 2).to_s
1435
+ assert_equal "0.01:float",oo.cell(5, 3).to_s+":"+oo.celltype(5, 3).to_s
1436
+ end
1410
1437
  end
1411
1438
 
1412
- def test_formula
1439
+ def test_formula_openoffice
1413
1440
  if OPENOFFICE
1414
1441
  oo = Openoffice.new(File.join("test","formula.ods"))
1415
1442
  oo.default_sheet = oo.sheets.first
@@ -1429,16 +1456,17 @@ class TestRoo < Test::Unit::TestCase
1429
1456
  [8, 2, "=SUM([.$A$1:.B7])"],
1430
1457
  ], oo.formulas(oo.sheets.first)
1431
1458
 
1432
- after Date.new(2007,6,25) do
1433
- # setting a cell
1434
- oo.set('A',15, 41)
1435
- assert_equal 41, oo.cell('A',15)
1436
- oo.set('A',16, "41")
1437
- assert_equal "41", oo.cell('A',16)
1438
- oo.set('A',17, 42.5)
1439
- assert_equal 42.5, oo.cell('A',17)
1440
- end
1459
+ # setting a cell
1460
+ oo.set('A',15, 41)
1461
+ assert_equal 41, oo.cell('A',15)
1462
+ oo.set('A',16, "41")
1463
+ assert_equal "41", oo.cell('A',16)
1464
+ oo.set('A',17, 42.5)
1465
+ assert_equal 42.5, oo.cell('A',17)
1441
1466
  end
1467
+ end
1468
+
1469
+ def test_formula_excel
1442
1470
  if defined? excel_supports_formulas
1443
1471
  if EXCEL
1444
1472
  oo = Excel.new(File.join("test","formula.xls"))
@@ -1459,18 +1487,18 @@ class TestRoo < Test::Unit::TestCase
1459
1487
  [8, 2, " = SUM([.$A$1:.B7])"],
1460
1488
  ], oo.formulas
1461
1489
 
1462
- after Date.new(2007,6,25) do
1463
- # setting a cell
1464
- oo.set('A',15, 41)
1465
- assert_equal 41, oo.cell('A',15)
1466
- oo.set('A',16, "41")
1467
- assert_equal "41", oo.cell('A',16)
1468
- oo.set('A',17, 42.5)
1469
- assert_equal 42.5, oo.cell('A',17)
1470
- end
1490
+ # setting a cell
1491
+ oo.set('A',15, 41)
1492
+ assert_equal 41, oo.cell('A',15)
1493
+ oo.set('A',16, "41")
1494
+ assert_equal "41", oo.cell('A',16)
1495
+ oo.set('A',17, 42.5)
1496
+ assert_equal 42.5, oo.cell('A',17)
1471
1497
 
1472
1498
  end
1473
1499
  end
1500
+ end
1501
+ def test_formula_google
1474
1502
  if GOOGLE
1475
1503
  oo = Google.new(key_of("formula"))
1476
1504
  oo.default_sheet = oo.sheets.first
@@ -1507,6 +1535,9 @@ class TestRoo < Test::Unit::TestCase
1507
1535
  [8, 2, "=SUM(R1C1:R[-1]C)"]],
1508
1536
  oo.formulas(oo.sheets.first)
1509
1537
  end # GOOGLE
1538
+ end
1539
+
1540
+ def test_formula_excelx
1510
1541
  if EXCELX
1511
1542
  oo = Excelx.new(File.join("test","formula.xlsx"))
1512
1543
  oo.default_sheet = oo.sheets.first
@@ -1518,8 +1549,9 @@ class TestRoo < Test::Unit::TestCase
1518
1549
  assert_equal 6, oo.cell('A',6)
1519
1550
  assert_equal 21, oo.cell('A',7)
1520
1551
  assert_equal :formula, oo.celltype('A',7)
1521
- after Date.new(2008,7,15) do
1552
+ after Date.new(2999,7,30) do
1522
1553
  #steht nicht in Datei, oder?
1554
+ #nein, diesen Bezug habe ich nur in der Openoffice-Datei
1523
1555
  assert_equal "=[Sheet2.A1]", oo.formula('C',7)
1524
1556
  end
1525
1557
  assert_nil oo.formula('A',6)
@@ -1534,15 +1566,13 @@ class TestRoo < Test::Unit::TestCase
1534
1566
  # [8, 2, "=SUM([.$A$1:.B7])"],
1535
1567
  ], oo.formulas(oo.sheets.first)
1536
1568
 
1537
- after Date.new(2007,6,25) do
1538
- # setting a cell
1539
- oo.set('A',15, 41)
1540
- assert_equal 41, oo.cell('A',15)
1541
- oo.set('A',16, "41")
1542
- assert_equal "41", oo.cell('A',16)
1543
- oo.set('A',17, 42.5)
1544
- assert_equal 42.5, oo.cell('A',17)
1545
- end
1569
+ # setting a cell
1570
+ oo.set('A',15, 41)
1571
+ assert_equal 41, oo.cell('A',15)
1572
+ oo.set('A',16, "41")
1573
+ assert_equal "41", oo.cell('A',16)
1574
+ oo.set('A',17, 42.5)
1575
+ assert_equal 42.5, oo.cell('A',17)
1546
1576
  end
1547
1577
  end
1548
1578
 
@@ -1568,6 +1598,7 @@ class TestRoo < Test::Unit::TestCase
1568
1598
  assert_equal 9, oo.last_column
1569
1599
  end
1570
1600
  end
1601
+
1571
1602
  def test_borders_sheets_excel
1572
1603
  if EXCEL
1573
1604
  oo = Excel.new(File.join("test","borders.xls"))
@@ -1918,7 +1949,8 @@ class TestRoo < Test::Unit::TestCase
1918
1949
 
1919
1950
  #TODO: xlsx-Datei anpassen!
1920
1951
  def test_excelx_open_from_uri_and_zipped
1921
- after Date.new(2008,6,30) do
1952
+ #TODO: gezippte xlsx Datei online zum Testen suchen
1953
+ after Date.new(2999,6,30) do
1922
1954
  if EXCELX
1923
1955
  if ONLINE
1924
1956
  url = 'http://stiny-leonhard.de/bode-v1.xlsx.zip'
@@ -1952,8 +1984,9 @@ class TestRoo < Test::Unit::TestCase
1952
1984
  end
1953
1985
 
1954
1986
  def test_excelx_zipped
1987
+ # TODO: bode...xls bei Gelegenheit nach .xlsx konverieren lassen und zippen!
1955
1988
  if EXCELX
1956
- after Date.new(2008,7,15) do
1989
+ after Date.new(2999,7,30) do
1957
1990
  # diese Datei gibt es noch nicht gezippt
1958
1991
  excel = Excelx.new(File.join("test","bode-v1.xlsx.zip"), :zip)
1959
1992
  assert excel
@@ -2082,7 +2115,7 @@ class TestRoo < Test::Unit::TestCase
2082
2115
  if EXCEL
2083
2116
  assert_nothing_raised(Timeout::Error) {
2084
2117
  Timeout::timeout(GLOBAL_TIMEOUT) do |timeout_length|
2085
- File.delete("/tmp/Bibelbund.csv")
2118
+ File.delete_if_exist("/tmp/Bibelbund.csv")
2086
2119
  oo = Excel.new(File.join("test","Bibelbund.xls"))
2087
2120
  oo.default_sheet = oo.sheets.first
2088
2121
  assert oo.to_csv("/tmp/Bibelbund.csv")
@@ -2099,7 +2132,7 @@ class TestRoo < Test::Unit::TestCase
2099
2132
  if EXCELX
2100
2133
  assert_nothing_raised(Timeout::Error) {
2101
2134
  Timeout::timeout(GLOBAL_TIMEOUT) do |timeout_length|
2102
- File.delete("/tmp/Bibelbund.csv")
2135
+ File.delete_if_exist("/tmp/Bibelbund.csv")
2103
2136
  oo = Excelx.new(File.join("test","Bibelbund.xlsx"))
2104
2137
  oo.default_sheet = oo.sheets.first
2105
2138
  assert oo.to_csv("/tmp/Bibelbund.csv")
@@ -2109,27 +2142,25 @@ class TestRoo < Test::Unit::TestCase
2109
2142
  }
2110
2143
  end
2111
2144
  end # LONG_RUN
2112
- end # def to_csv
2145
+ end
2113
2146
 
2114
2147
  def test_huge_document_to_csv_google
2115
2148
  # maybe a better example... TODO:
2116
- after Date.new(2008,1,30) do
2117
- if GOOGLE and LONG_RUN
2118
- assert_nothing_raised(Timeout::Error) {
2119
- Timeout::timeout(GLOBAL_TIMEOUT) do |timeout_length|
2120
- File.delete("/tmp/numbers1.csv") if File.exists?("/tmp/numbers1.csv")
2121
- oo = Google.new(key_of('numbers1'))
2122
- oo.default_sheet = oo.sheets.first
2123
- #?? assert_equal "Tagebuch des Sekret\303\244rs. Letzte Tagung 15./16.11.75 Schweiz", oo.cell(45,'A')
2124
- #?? assert_equal "Tagebuch des Sekret\303\244rs. Nachrichten aus Chile", oo.cell(46,'A')
2125
- #?? assert_equal "Tagebuch aus Chile Juli 1977", oo.cell(55,'A')
2126
- assert oo.to_csv("/tmp/numbers1.csv")
2127
- assert File.exists?("/tmp/numbers1.csv")
2128
- assert_equal "", `diff test/numbers1.csv /tmp/numbers1.csv`
2129
- end # Timeout
2130
- } # nothing_raised
2131
- end # GOOGLE
2132
- end # after
2149
+ if GOOGLE and LONG_RUN
2150
+ assert_nothing_raised(Timeout::Error) {
2151
+ Timeout::timeout(GLOBAL_TIMEOUT) do |timeout_length|
2152
+ File.delete("/tmp/numbers1.csv") if File.exists?("/tmp/numbers1.csv")
2153
+ oo = Google.new(key_of('numbers1'))
2154
+ oo.default_sheet = oo.sheets.first
2155
+ #?? assert_equal "Tagebuch des Sekret\303\244rs. Letzte Tagung 15./16.11.75 Schweiz", oo.cell(45,'A')
2156
+ #?? assert_equal "Tagebuch des Sekret\303\244rs. Nachrichten aus Chile", oo.cell(46,'A')
2157
+ #?? assert_equal "Tagebuch aus Chile Juli 1977", oo.cell(55,'A')
2158
+ assert oo.to_csv("/tmp/numbers1.csv")
2159
+ assert File.exists?("/tmp/numbers1.csv")
2160
+ assert_equal "", `diff test/numbers1.csv /tmp/numbers1.csv`
2161
+ end # Timeout
2162
+ } # nothing_raised
2163
+ end # GOOGLE
2133
2164
  end
2134
2165
 
2135
2166
  def test_to_csv_openoffice
@@ -2174,7 +2205,7 @@ class TestRoo < Test::Unit::TestCase
2174
2205
 
2175
2206
  #}
2176
2207
  end
2177
- end # def to_csv
2208
+ end
2178
2209
 
2179
2210
  def test_to_csv_excelx
2180
2211
  if EXCELX
@@ -2195,31 +2226,29 @@ class TestRoo < Test::Unit::TestCase
2195
2226
 
2196
2227
  #}
2197
2228
  end
2198
- end # def to_csv
2229
+ end
2199
2230
 
2200
2231
  def test_to_csv_google
2201
2232
  # maybe a better example... TODO:
2202
- after Date.new(2008,3,30) do
2203
- if GOOGLE
2204
- #assert_nothing_raised(Timeout::Error) {
2205
- Timeout::timeout(GLOBAL_TIMEOUT) do |timeout_length|
2206
- File.delete_if_exist("/tmp/numbers1.csv") if File.exists?("/tmp/numbers1.csv")
2207
- oo = Google.new(key_of('numbers1'))
2233
+ if GOOGLE
2234
+ #assert_nothing_raised(Timeout::Error) {
2235
+ Timeout::timeout(GLOBAL_TIMEOUT) do |timeout_length|
2236
+ File.delete_if_exist("/tmp/numbers1.csv") if File.exists?("/tmp/numbers1.csv")
2237
+ oo = Google.new(key_of('numbers1'))
2208
2238
 
2209
- oo.default_sheet = oo.sheets.first
2210
- assert oo.to_csv("/tmp/numbers1.csv")
2211
- assert File.exists?("/tmp/numbers1.csv")
2212
- assert_equal "", `diff test/numbers1.csv /tmp/numbers1.csv`
2239
+ oo.default_sheet = oo.sheets.first
2240
+ assert oo.to_csv("/tmp/numbers1.csv")
2241
+ assert File.exists?("/tmp/numbers1.csv")
2242
+ assert_equal "", `diff test/numbers1.csv /tmp/numbers1.csv`
2213
2243
 
2214
- # bug?, 2008-01-15 from Troy Davis
2215
- assert oo.to_csv("/tmp/numbers1.csv",oo.sheets.first)
2216
- assert File.exists?("/tmp/numbers1.csv")
2217
- assert_equal "", `diff test/numbers1.csv /tmp/numbers1.csv`
2244
+ # bug?, 2008-01-15 from Troy Davis
2245
+ assert oo.to_csv("/tmp/numbers1.csv",oo.sheets.first)
2246
+ assert File.exists?("/tmp/numbers1.csv")
2247
+ assert_equal "", `diff test/numbers1.csv /tmp/numbers1.csv`
2218
2248
 
2219
- end # Timeout
2220
- #} # nothing_raised
2221
- end # GOOGLE
2222
- end # after
2249
+ end # Timeout
2250
+ #} # nothing_raised
2251
+ end # GOOGLE
2223
2252
  end
2224
2253
 
2225
2254
  def test_bug_mehrere_datum
@@ -2507,15 +2536,13 @@ class TestRoo < Test::Unit::TestCase
2507
2536
  end
2508
2537
 
2509
2538
  def test_bug_empty_sheet_excelx
2510
- after Date.new(2008,5,22) do
2511
- if EXCELX
2512
- oo = Excelx.new(File.join("test","formula.xlsx"))
2513
- oo.default_sheet = 'Sheet3' # is an empty sheet
2514
- assert_nothing_raised(NoMethodError) {
2515
- oo.to_csv(File.join("/","tmp","emptysheet.csv"))
2516
- }
2517
- assert_equal "", `cat /tmp/emptysheet.csv`
2518
- end
2539
+ if EXCELX
2540
+ oo = Excelx.new(File.join("test","formula.xlsx"))
2541
+ oo.default_sheet = 'Sheet3' # is an empty sheet
2542
+ assert_nothing_raised(NoMethodError) {
2543
+ oo.to_csv(File.join("/","tmp","emptysheet.csv"))
2544
+ }
2545
+ assert_equal "", `cat /tmp/emptysheet.csv`
2519
2546
  end
2520
2547
  end
2521
2548
 
@@ -2548,11 +2575,13 @@ class TestRoo < Test::Unit::TestCase
2548
2575
  oo.default_sheet = oo.sheets.first
2549
2576
  rec = oo.find 20
2550
2577
  assert rec
2551
- assert_equal "Brief aus dem Sekretariat", rec[0]
2578
+ #jetzt als Hash assert_equal "Brief aus dem Sekretariat", rec[0]
2579
+ assert_equal "Brief aus dem Sekretariat", rec[0]['TITEL']
2552
2580
 
2553
2581
  rec = oo.find 22
2554
2582
  assert rec
2555
- assert_equal "Brief aus dem Skretariat. Tagung in Amberg/Opf.",rec[0]
2583
+ # assert_equal "Brief aus dem Skretariat. Tagung in Amberg/Opf.",rec[0]
2584
+ assert_equal "Brief aus dem Skretariat. Tagung in Amberg/Opf.",rec[0]['TITEL']
2556
2585
  end
2557
2586
  end
2558
2587
  end
@@ -3053,16 +3082,18 @@ class TestRoo < Test::Unit::TestCase
3053
3082
  end
3054
3083
 
3055
3084
  def test_column_huge_document_excelx
3056
- if LONG_RUN
3057
- if EXCELX
3058
- assert_nothing_raised(Timeout::Error) {
3059
- Timeout::timeout(GLOBAL_TIMEOUT) do |timeout_length|
3060
- oo = Excelx.new(File.join('test','Bibelbund.xlsx'))
3061
- oo.default_sheet = oo.sheets.first
3062
- assert_equal 3735, oo.column('a').size
3063
- #assert_equal 499, oo.column('a').size
3064
- end
3065
- }
3085
+ after Date.new(2008,7,29) do
3086
+ if LONG_RUN
3087
+ if EXCELX
3088
+ assert_nothing_raised(Timeout::Error) {
3089
+ Timeout::timeout(GLOBAL_TIMEOUT) do |timeout_length|
3090
+ oo = Excelx.new(File.join('test','Bibelbund.xlsx'))
3091
+ oo.default_sheet = oo.sheets.first
3092
+ assert_equal 3735, oo.column('a').size
3093
+ #assert_equal 499, oo.column('a').size
3094
+ end
3095
+ }
3096
+ end
3066
3097
  end
3067
3098
  end
3068
3099
  end
@@ -3115,7 +3146,8 @@ class TestRoo < Test::Unit::TestCase
3115
3146
 
3116
3147
  def test_simple_spreadsheet_find_by_condition_excelx
3117
3148
  if EXCELX
3118
- after Date.new(2008,7,25) do
3149
+ after Date.new(2008,7,28)+10 do
3150
+ # die dezimalen Zeiten bekomme ich seltsamerweise als Date
3119
3151
  oo = Excelx.new(File.join("test","simple_spreadsheet.xlsx"))
3120
3152
  oo.default_sheet = oo.sheets.first
3121
3153
  oo.header_line = 3
@@ -3124,6 +3156,14 @@ class TestRoo < Test::Unit::TestCase
3124
3156
  #
3125
3157
  #
3126
3158
 
3159
+ expected = { "Start time"=>10.75,
3160
+ "Pause"=>0.0,
3161
+ "Sum" => 1.75,
3162
+ "End time" => 12.5,
3163
+ "Pause" => 0.0,
3164
+ "Sum"=> 1.75,
3165
+ "Comment" => "Task 1"}
3166
+ assert_equal expected, erg[1]
3127
3167
  # hier bekomme ich den celltype :time zurueck
3128
3168
  assert_equal Date.new(2007,05,07), erg[1]['Date']
3129
3169
  assert_equal 10.75 , erg[1]['Start time']
@@ -3169,42 +3209,37 @@ class TestRoo < Test::Unit::TestCase
3169
3209
  end
3170
3210
 
3171
3211
  def test_bug_false_borders_with_formulas
3172
- after Date.new(2008,5,30) do
3173
- #TODO: fehlt in Manifest
3174
- ex = Excel.new(File.join('test','false_encoding.xls'))
3175
- ex.default_sheet = ex.sheets.first
3176
- assert_equal 1, ex.first_row
3177
- assert_equal 3, ex.last_row
3178
- assert_equal 1, ex.first_column
3179
- assert_equal 4, ex.last_column
3180
- end
3212
+ ex = Excel.new(File.join('test','false_encoding.xls'))
3213
+ ex.default_sheet = ex.sheets.first
3214
+ assert_equal 1, ex.first_row
3215
+ assert_equal 3, ex.last_row
3216
+ assert_equal 1, ex.first_column
3217
+ assert_equal 4, ex.last_column
3181
3218
  end
3182
3219
 
3183
3220
  def test_fe
3184
- after Date.new(2008,5,30) do
3185
- ex = Excel.new(File.join('test','false_encoding.xls'))
3186
- ex.default_sheet = ex.sheets.first
3187
- #DOES NOT WORK IN EXCEL FILES: assert_equal Date.new(2007,11,1), ex.cell('a',1)
3188
- #DOES NOT WORK IN EXCEL FILES: assert_equal true, ex.formula?('a',1)
3189
- #DOES NOT WORK IN EXCEL FILES: assert_equal '=TODAY()', ex.formula('a',1)
3221
+ ex = Excel.new(File.join('test','false_encoding.xls'))
3222
+ ex.default_sheet = ex.sheets.first
3223
+ #DOES NOT WORK IN EXCEL FILES: assert_equal Date.new(2007,11,1), ex.cell('a',1)
3224
+ #DOES NOT WORK IN EXCEL FILES: assert_equal true, ex.formula?('a',1)
3225
+ #DOES NOT WORK IN EXCEL FILES: assert_equal '=TODAY()', ex.formula('a',1)
3190
3226
 
3191
- #DOES NOT WORK IN EXCEL FILES: assert_equal Date.new(2008,2,9), ex.cell('B',1)
3192
- #DOES NOT WORK IN EXCEL FILES: assert_equal true, ex.formula?('B',1)
3193
- #DOES NOT WORK IN EXCEL FILES: assert_equal "=A1+100", ex.formula('B',1)
3227
+ #DOES NOT WORK IN EXCEL FILES: assert_equal Date.new(2008,2,9), ex.cell('B',1)
3228
+ #DOES NOT WORK IN EXCEL FILES: assert_equal true, ex.formula?('B',1)
3229
+ #DOES NOT WORK IN EXCEL FILES: assert_equal "=A1+100", ex.formula('B',1)
3194
3230
 
3195
- #DOES NOT WORK IN EXCEL FILES: assert_equal Date.new(2008,2,9), ex.cell('C',1)
3196
- #DOES NOT WORK IN EXCEL FILES: assert_equal true, ex.formula?('C',1)
3197
- #DOES NOT WORK IN EXCEL FILES: assert_equal "=C1", ex.formula('C',1)
3231
+ #DOES NOT WORK IN EXCEL FILES: assert_equal Date.new(2008,2,9), ex.cell('C',1)
3232
+ #DOES NOT WORK IN EXCEL FILES: assert_equal true, ex.formula?('C',1)
3233
+ #DOES NOT WORK IN EXCEL FILES: assert_equal "=C1", ex.formula('C',1)
3198
3234
 
3199
- assert_equal 'H1', ex.cell('A',2)
3200
- assert_equal 'H2', ex.cell('B',2)
3201
- assert_equal 'H3', ex.cell('C',2)
3202
- assert_equal 'H4', ex.cell('D',2)
3203
- assert_equal 'R1', ex.cell('A',3)
3204
- assert_equal 'R2', ex.cell('B',3)
3205
- assert_equal 'R3', ex.cell('C',3)
3206
- assert_equal 'R4', ex.cell('D',3)
3207
- end
3235
+ assert_equal 'H1', ex.cell('A',2)
3236
+ assert_equal 'H2', ex.cell('B',2)
3237
+ assert_equal 'H3', ex.cell('C',2)
3238
+ assert_equal 'H4', ex.cell('D',2)
3239
+ assert_equal 'R1', ex.cell('A',3)
3240
+ assert_equal 'R2', ex.cell('B',3)
3241
+ assert_equal 'R3', ex.cell('C',3)
3242
+ assert_equal 'R4', ex.cell('D',3)
3208
3243
  end
3209
3244
 
3210
3245
  def test_excel_does_not_support_formulas
@@ -3574,31 +3609,27 @@ Sheet 3:
3574
3609
 
3575
3610
  def test_date_time_to_csv_excel
3576
3611
  if EXCEL
3577
- after Date.new(2008,7,30) do
3578
- #ueberfluessige leere Zeilen werden am Ende noch angehaengt
3579
- # last_row fehlerhaft?
3580
- File.delete_if_exist("/tmp/time-test.csv")
3581
- oo = Excel.new(File.join("test","time-test.xls"))
3582
- oo.default_sheet = oo.sheets.first
3583
- assert oo.to_csv("/tmp/time-test.csv")
3584
- assert File.exists?("/tmp/time-test.csv")
3585
- assert_equal "", `diff test/time-test.csv /tmp/time-test.csv`
3586
- end
3612
+ #ueberfluessige leere Zeilen werden am Ende noch angehaengt
3613
+ # last_row fehlerhaft?
3614
+ File.delete_if_exist("/tmp/time-test.csv")
3615
+ oo = Excel.new(File.join("test","time-test.xls"))
3616
+ oo.default_sheet = oo.sheets.first
3617
+ assert oo.to_csv("/tmp/time-test.csv")
3618
+ assert File.exists?("/tmp/time-test.csv")
3619
+ assert_equal "", `diff test/time-test.csv /tmp/time-test.csv`
3587
3620
  end # EXCEL
3588
3621
  end
3589
3622
 
3590
3623
  def test_date_time_to_csv_excelx
3591
3624
  if EXCELX
3592
- after Date.new(2008,5,3) do
3593
- #ueberfluessige leere Zeilen werden am Ende noch angehaengt
3594
- # last_row fehlerhaft?
3595
- File.delete_if_exist("/tmp/time-test.csv")
3596
- oo = Excelx.new(File.join("test","time-test.xlsx"))
3597
- oo.default_sheet = oo.sheets.first
3598
- assert oo.to_csv("/tmp/time-test.csv")
3599
- assert File.exists?("/tmp/time-test.csv")
3600
- assert_equal "", `diff test/time-test.csv /tmp/time-test.csv`
3601
- end
3625
+ #ueberfluessige leere Zeilen werden am Ende noch angehaengt
3626
+ # last_row fehlerhaft?
3627
+ File.delete_if_exist("/tmp/time-test.csv")
3628
+ oo = Excelx.new(File.join("test","time-test.xlsx"))
3629
+ oo.default_sheet = oo.sheets.first
3630
+ assert oo.to_csv("/tmp/time-test.csv")
3631
+ assert File.exists?("/tmp/time-test.csv")
3632
+ assert_equal "", `diff test/time-test.csv /tmp/time-test.csv`
3602
3633
  end # EXCELX
3603
3634
  end
3604
3635
 
@@ -3655,33 +3686,51 @@ Sheet 3:
3655
3686
 
3656
3687
  def test_no_remaining_tmp_files_openoffice
3657
3688
  if OPENOFFICE
3658
- assert_raise(Zip::ZipError) { #TODO: besseres Fehlerkriterium bei
3659
- oo = Openoffice.new(File.join("test","no_spreadsheet_file.txt"))
3660
- }
3661
- a=Dir.glob("oo_*")
3662
- assert_equal [], a
3689
+ after Date.new(2008,7,3) do
3690
+ assert_raise(Zip::ZipError) { #TODO: besseres Fehlerkriterium bei
3691
+ # oo = Openoffice.new(File.join("test","no_spreadsheet_file.txt"))
3692
+ # es soll absichtlich ein Abbruch provoziert werden, deshalb :ignore
3693
+ oo = Openoffice.new(File.join("test","no_spreadsheet_file.txt"),
3694
+ false,
3695
+ :ignore)
3696
+ }
3697
+ a=Dir.glob("oo_*")
3698
+ assert_equal [], a
3699
+ end
3663
3700
  end
3664
3701
  end
3665
3702
 
3666
3703
  def test_no_remaining_tmp_files_excel
3667
3704
  if EXCEL
3668
- assert_raise(OLE::UnknownFormatError) {
3669
- oo = Excel.new(File.join("test","no_spreadsheet_file.txt"))
3670
- }
3671
- a=Dir.glob("oo_*")
3672
- assert_equal [], a
3705
+ after Date.new(2008,7,2) do
3706
+ assert_raise(OLE::UnknownFormatError) {
3707
+ # oo = Excel.new(File.join("test","no_spreadsheet_file.txt"))
3708
+ # es soll absichtlich ein Abbruch provoziert werden, deshalb :ignore
3709
+ oo = Excel.new(File.join("test","no_spreadsheet_file.txt"),
3710
+ false,
3711
+ :ignore)
3712
+ }
3713
+ a=Dir.glob("oo_*")
3714
+ assert_equal [], a
3715
+ end
3673
3716
  end
3674
3717
  end
3675
3718
 
3676
3719
  def test_no_remaining_tmp_files_excelx
3677
3720
  if EXCELX
3678
- assert_raise(Zip::ZipError) { #TODO: besseres Fehlerkriterium bei
3679
-
3680
- oo = Excelx.new(File.join("test","no_spreadsheet_file.txt"))
3721
+ after Date.new(2008,7,3) do
3722
+ assert_raise(Zip::ZipError) { #TODO: besseres Fehlerkriterium bei
3723
+
3724
+ # oo = Excelx.new(File.join("test","no_spreadsheet_file.txt"))
3725
+ # es soll absichtlich ein Abbruch provoziert werden, deshalb :ignore
3726
+ oo = Excelx.new(File.join("test","no_spreadsheet_file.txt"),
3727
+ false,
3728
+ :ignore)
3681
3729
 
3682
- }
3683
- a=Dir.glob("oo_*")
3684
- assert_equal [], a
3730
+ }
3731
+ a=Dir.glob("oo_*")
3732
+ assert_equal [], a
3733
+ end
3685
3734
  end
3686
3735
  end
3687
3736
 
@@ -3695,387 +3744,77 @@ Sheet 3:
3695
3744
  end
3696
3745
  end
3697
3746
 
3698
- def emit_cell(row,col,type,value)
3699
- " <cell "+
3700
- "type=\"#{type}\" "+
3701
- "row=\"#{row}\" "+
3702
- "column=\"#{col}\""+
3703
- ">#{value}</cell>\n"
3747
+ # Erstellt eine Liste aller Zellen im Spreadsheet. Dies ist nötig, weil ein einfacher
3748
+ # Textvergleich des XML-Outputs nicht funktioniert, da xml-builder die Attribute
3749
+ # nicht immer in der gleichen Reihenfolge erzeugt.
3750
+ def init_all_cells(oo,sheet)
3751
+ all = []
3752
+ oo.first_row(sheet).upto(oo.last_row(sheet)) do |row|
3753
+ oo.first_column(sheet).upto(oo.last_column(sheet)) do |col|
3754
+ unless oo.empty?(row,col,sheet)
3755
+ all << {:row => row.to_s,
3756
+ :column => col.to_s,
3757
+ :content => oo.cell(row,col,sheet).to_s,
3758
+ :type => oo.celltype(row,col,sheet).to_s,
3759
+ }
3760
+ end
3761
+ end
3762
+ end
3763
+ all
3764
+ end
3765
+
3766
+ def do_test_xml(oo)
3767
+ assert_nothing_raised {oo.to_xml}
3768
+ sheetname = oo.sheets.first
3769
+ doc = REXML::Document.new(oo.to_xml)
3770
+ doc.root.each_element {|xml_sheet|
3771
+ all_cells = init_all_cells(oo, sheetname)
3772
+ x = 0
3773
+ assert_equal sheetname, xml_sheet.attributes['name']
3774
+ xml_sheet.each_element {|cell|
3775
+ expected = [all_cells[x][:row],
3776
+ all_cells[x][:column],
3777
+ all_cells[x][:content],
3778
+ all_cells[x][:type],
3779
+ ]
3780
+ result = [
3781
+ cell.attributes['row'],
3782
+ cell.attributes['column'],
3783
+ cell.text,
3784
+ cell.attributes['type'],
3785
+ ]
3786
+ assert_equal expected, result
3787
+ x += 1
3788
+ } # end of sheet
3789
+ sheetname = oo.sheets[oo.sheets.index(sheetname)+1]
3790
+ }
3704
3791
  end
3705
3792
 
3706
3793
  def test_to_xml_openoffice
3707
- after Date.new(2008,7,15) do
3708
- if OPENOFFICE
3709
- oo = Openoffice.new(File.join('test','numbers1.ods'))
3710
- expected = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"+
3711
- "<sheet name=\"Tabelle1\">\n"+
3712
- emit_cell(1,1,"float","1.0")+
3713
- emit_cell(1,2,'float','2.0')+
3714
- emit_cell(1,3,'float','3.0')+
3715
- emit_cell(1,4,'float','4.0')+
3716
- emit_cell(1,5,'formula','10.0')+
3717
- emit_cell(2,1,'float','5.0')+
3718
- emit_cell(2,2,'float','6.0')+
3719
- emit_cell(2,3,'float','7.0')+
3720
- emit_cell(2,4,'float','8.0')+
3721
- emit_cell(2,5,'float','9.0')+
3722
- emit_cell(2,6,'string','test')+
3723
- emit_cell(2,7,'float','11.0')+
3724
- emit_cell(4, 1, "float", "10.0")+
3725
- emit_cell(4, 2, "float", "11.0")+
3726
- emit_cell(4, 3, "float", "12.0")+
3727
- emit_cell(4, 4, "float", "13.0")+
3728
- emit_cell(4, 5, "float", "14.0")+
3729
- emit_cell(5, 1, "date", "1961-11-21")+
3730
- emit_cell(6, 1, "string", "tata")+
3731
- emit_cell(8, 3, "string", "thisisc8")+
3732
- emit_cell(9,4, "string", "thisisd9")+
3733
- emit_cell(11, 1, "string", "thisisa11")+
3734
- emit_cell(12, 1, "float", "41.0")+
3735
- emit_cell(12, 2, "float", "42.0")+
3736
- emit_cell(12, 3, "float", "43.0")+
3737
- emit_cell(12, 4, "float", "44.0")+
3738
- emit_cell(12, 5, "float", "45.0")+
3739
- emit_cell(15, 1, "float", "41.0")+
3740
- emit_cell(15, 2, "float", "42.0")+
3741
- emit_cell(15, 3, "float", "43.0")+
3742
- emit_cell(15, 4, "float", "44.0")+
3743
- emit_cell(15, 5, "float", "45.0")+
3744
- emit_cell(16, 1, "string", "einundvierzig")+
3745
- emit_cell(16, 2, "string", "zweiundvierzig")+
3746
- emit_cell(16, 3, "string", "dreiundvierzig")+
3747
- emit_cell(16, 4, "string", "vierundvierzig")+
3748
- emit_cell(16, 5, "string", "fuenfundvierzig")+
3749
- emit_cell(18, 1, "date", "2007-05-31")+
3750
- emit_cell(18, 2, "string", "dies hier als Date-Objekt")+
3751
- "</sheet>\n"+
3752
- "<sheet name=\"Name of Sheet 2\">\n"+
3753
- emit_cell(5, 3, "string", "I am sheet 2")+
3754
- emit_cell(7, 2, "float", "3.0")+
3755
- emit_cell(10, 5, "float", "7.0")+
3756
- emit_cell(14, 4, "float", "9.0")+
3757
- "</sheet>\n"+
3758
- "<sheet name=\"Sheet3\">\n"+
3759
- emit_cell(1, 1, "string", "ganz weit rechts geht&#8217;s weiter")+
3760
- emit_cell(1, GenericSpreadsheet.letter_to_number('AA'), "string", "i am AA")+
3761
- emit_cell(1, GenericSpreadsheet.letter_to_number('AB'), "string", "i am AB")+
3762
- emit_cell(1, GenericSpreadsheet.letter_to_number('BA'), "string", "i am BA")+
3763
- "</sheet>\n"+
3764
- "<sheet name=\"Sheet4\">\n"+
3765
- emit_cell(1, 1, "date", "2007-06-16")+
3766
- emit_cell(1, 2, "float", "10.0")+
3767
- emit_cell(1, 3, "float", "10.0")+
3768
- emit_cell(1, 4, "float", "10.0")+
3769
- emit_cell(1, 5, "float", "10.0")+
3770
- "</sheet>\n"+
3771
- "<sheet name=\"Sheet5\">\n"+
3772
- emit_cell(1, 1, "float", "1.0")+
3773
- emit_cell(1, 2, "float", "5.0")+
3774
- emit_cell(1, 3, "float", "5.0")+
3775
- emit_cell(2, 1, "float", "2.0")+
3776
- emit_cell(3, 1, "float", "3.0")+
3777
- emit_cell(4, 1, "date", "2007-11-21")+
3778
- emit_cell(4, 2, "date", "2007-11-21")+
3779
- emit_cell(4, 3, "date", "2007-11-21")+
3780
- emit_cell(4, 4, "date", "2007-11-21")+
3781
- emit_cell(4, 5, "date", "2007-11-21")+
3782
- emit_cell(5, 1, "float", "42.0")+
3783
- emit_cell(5, 2, "float", "42.0")+
3784
- emit_cell(5, 3, "float", "42.0")+
3785
- emit_cell(5, 4, "float", "42.0")+
3786
- emit_cell(5, 5, "float", "42.0")+
3787
- emit_cell(6, 1, "string", "ABC")+
3788
- emit_cell(6, 2, "string", "ABC")+
3789
- emit_cell(6, 3, "string", "ABC")+
3790
- emit_cell(6, 4, "string", "ABC")+
3791
- emit_cell(6, 5, "string", "ABC")+
3792
- "</sheet>\n"+
3793
- ""
3794
- # oo.default_sheet = oo.sheets.first
3795
- assert_equal expected, oo.to_xml
3796
- end
3794
+ if OPENOFFICE
3795
+ oo = Openoffice.new(File.join('test','numbers1.ods'))
3796
+ do_test_xml(oo)
3797
3797
  end
3798
3798
  end
3799
3799
 
3800
3800
  def test_to_xml_excel
3801
- after Date.new(2008,7,15) do
3802
- if EXCEL
3803
- oo = Excel.new(File.join('test','numbers1.xls'))
3804
- expected = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"+
3805
- "<sheet name=\"Tabelle1\">\n"+
3806
- emit_cell(1,1,"float","1.0")+
3807
- emit_cell(1,2,'float','2.0')+
3808
- emit_cell(1,3,'float','3.0')+
3809
- emit_cell(1,4,'float','4.0')+
3810
- emit_cell(1,5,'formula','10.0')+
3811
- emit_cell(2,1,'float','5.0')+
3812
- emit_cell(2,2,'float','6.0')+
3813
- emit_cell(2,3,'float','7.0')+
3814
- emit_cell(2,4,'float','8.0')+
3815
- emit_cell(2,5,'float','9.0')+
3816
- emit_cell(2,6,'string','test')+
3817
- emit_cell(2,7,'float','11.0')+
3818
- emit_cell(4, 1, "float", "10.0")+
3819
- emit_cell(4, 2, "float", "11.0")+
3820
- emit_cell(4, 3, "float", "12.0")+
3821
- emit_cell(4, 4, "float", "13.0")+
3822
- emit_cell(4, 5, "float", "14.0")+
3823
- emit_cell(5, 1, "date", "1961-11-21")+
3824
- emit_cell(6, 1, "string", "tata")+
3825
- emit_cell(8, 3, "string", "thisisc8")+
3826
- emit_cell(9,4, "string", "thisisd9")+
3827
- emit_cell(11, 1, "string", "thisisa11")+
3828
- emit_cell(12, 1, "float", "41.0")+
3829
- emit_cell(12, 2, "float", "42.0")+
3830
- emit_cell(12, 3, "float", "43.0")+
3831
- emit_cell(12, 4, "float", "44.0")+
3832
- emit_cell(12, 5, "float", "45.0")+
3833
- emit_cell(15, 1, "float", "41.0")+
3834
- emit_cell(15, 2, "float", "42.0")+
3835
- emit_cell(15, 3, "float", "43.0")+
3836
- emit_cell(15, 4, "float", "44.0")+
3837
- emit_cell(15, 5, "float", "45.0")+
3838
- emit_cell(16, 1, "string", "einundvierzig")+
3839
- emit_cell(16, 2, "string", "zweiundvierzig")+
3840
- emit_cell(16, 3, "string", "dreiundvierzig")+
3841
- emit_cell(16, 4, "string", "vierundvierzig")+
3842
- emit_cell(16, 5, "string", "fuenfundvierzig")+
3843
- emit_cell(18, 1, "date", "2007-05-31")+
3844
- emit_cell(18, 2, "string", "dies hier als Date-Objekt")+
3845
- "</sheet>\n"+
3846
- "<sheet name=\"Name of Sheet 2\">\n"+
3847
- emit_cell(5, 3, "string", "I am sheet 2")+
3848
- emit_cell(7, 2, "float", "3.0")+
3849
- emit_cell(10, 5, "float", "7.0")+
3850
- emit_cell(14, 4, "float", "9.0")+
3851
- "</sheet>\n"+
3852
- "<sheet name=\"Sheet3\">\n"+
3853
- emit_cell(1, 1, "string", "ganz weit rechts geht&#8217;s weiter")+
3854
- emit_cell(1, GenericSpreadsheet.letter_to_number('AA'), "string", "i am AA")+
3855
- emit_cell(1, GenericSpreadsheet.letter_to_number('AB'), "string", "i am AB")+
3856
- emit_cell(1, GenericSpreadsheet.letter_to_number('BA'), "string", "i am BA")+
3857
- "</sheet>\n"+
3858
- "<sheet name=\"Sheet4\">\n"+
3859
- emit_cell(1, 1, "date", "2007-06-16")+
3860
- emit_cell(1, 2, "float", "10.0")+
3861
- emit_cell(1, 3, "float", "10.0")+
3862
- emit_cell(1, 4, "float", "10.0")+
3863
- emit_cell(1, 5, "float", "10.0")+
3864
- "</sheet>\n"+
3865
- "<sheet name=\"Sheet5\">\n"+
3866
- emit_cell(1, 1, "float", "1.0")+
3867
- emit_cell(1, 2, "float", "5.0")+
3868
- emit_cell(1, 3, "float", "5.0")+
3869
- emit_cell(2, 1, "float", "2.0")+
3870
- emit_cell(3, 1, "float", "3.0")+
3871
- emit_cell(4, 1, "date", "2007-11-21")+
3872
- emit_cell(4, 2, "date", "2007-11-21")+
3873
- emit_cell(4, 3, "date", "2007-11-21")+
3874
- emit_cell(4, 4, "date", "2007-11-21")+
3875
- emit_cell(4, 5, "date", "2007-11-21")+
3876
- emit_cell(5, 1, "float", "42.0")+
3877
- emit_cell(5, 2, "float", "42.0")+
3878
- emit_cell(5, 3, "float", "42.0")+
3879
- emit_cell(5, 4, "float", "42.0")+
3880
- emit_cell(5, 5, "float", "42.0")+
3881
- emit_cell(6, 1, "string", "ABC")+
3882
- emit_cell(6, 2, "string", "ABC")+
3883
- emit_cell(6, 3, "string", "ABC")+
3884
- emit_cell(6, 4, "string", "ABC")+
3885
- emit_cell(6, 5, "string", "ABC")+
3886
- "</sheet>\n"+
3887
- ""
3888
- # oo.default_sheet = oo.sheets.first
3889
- assert_equal expected, oo.to_xml
3890
- end
3801
+ if EXCEL
3802
+ oo = Excel.new(File.join('test','numbers1.xls'))
3803
+ do_test_xml(oo)
3891
3804
  end
3892
3805
  end
3893
3806
 
3894
3807
  def test_to_xml_excelx
3895
- after Date.new(2008,7,15) do
3896
- if EXCELX
3897
- oo = Excelx.new(File.join('test','numbers1.xlsx'))
3898
- expected = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"+
3899
- "<sheet name=\"Tabelle1\">\n"+
3900
- emit_cell(1,1,"float","1.0")+
3901
- emit_cell(1,2,'float','2.0')+
3902
- emit_cell(1,3,'float','3.0')+
3903
- emit_cell(1,4,'float','4.0')+
3904
- emit_cell(1,5,'formula','10.0')+
3905
- emit_cell(2,1,'float','5.0')+
3906
- emit_cell(2,2,'float','6.0')+
3907
- emit_cell(2,3,'float','7.0')+
3908
- emit_cell(2,4,'float','8.0')+
3909
- emit_cell(2,5,'float','9.0')+
3910
- emit_cell(2,6,'string','test')+
3911
- emit_cell(2,7,'float','11.0')+
3912
- emit_cell(4, 1, "float", "10.0")+
3913
- emit_cell(4, 2, "float", "11.0")+
3914
- emit_cell(4, 3, "float", "12.0")+
3915
- emit_cell(4, 4, "float", "13.0")+
3916
- emit_cell(4, 5, "float", "14.0")+
3917
- emit_cell(5, 1, "date", "1961-11-21")+
3918
- emit_cell(6, 1, "string", "tata")+
3919
- emit_cell(8, 3, "string", "thisisc8")+
3920
- emit_cell(9,4, "string", "thisisd9")+
3921
- emit_cell(11, 1, "string", "thisisa11")+
3922
- emit_cell(12, 1, "float", "41.0")+
3923
- emit_cell(12, 2, "float", "42.0")+
3924
- emit_cell(12, 3, "float", "43.0")+
3925
- emit_cell(12, 4, "float", "44.0")+
3926
- emit_cell(12, 5, "float", "45.0")+
3927
- emit_cell(15, 1, "float", "41.0")+
3928
- emit_cell(15, 2, "float", "42.0")+
3929
- emit_cell(15, 3, "float", "43.0")+
3930
- emit_cell(15, 4, "float", "44.0")+
3931
- emit_cell(15, 5, "float", "45.0")+
3932
- emit_cell(16, 1, "string", "einundvierzig")+
3933
- emit_cell(16, 2, "string", "zweiundvierzig")+
3934
- emit_cell(16, 3, "string", "dreiundvierzig")+
3935
- emit_cell(16, 4, "string", "vierundvierzig")+
3936
- emit_cell(16, 5, "string", "fuenfundvierzig")+
3937
- emit_cell(18, 1, "date", "2007-05-31")+
3938
- emit_cell(18, 2, "string", "dies hier als Date-Objekt")+
3939
- "</sheet>\n"+
3940
- "<sheet name=\"Name of Sheet 2\">\n"+
3941
- emit_cell(5, 3, "string", "I am sheet 2")+
3942
- emit_cell(7, 2, "float", "3.0")+
3943
- emit_cell(10, 5, "float", "7.0")+
3944
- emit_cell(14, 4, "float", "9.0")+
3945
- "</sheet>\n"+
3946
- "<sheet name=\"Sheet3\">\n"+
3947
- emit_cell(1, 1, "string", "ganz weit rechts geht&#8217;s weiter")+
3948
- emit_cell(1, GenericSpreadsheet.letter_to_number('AA'), "string", "i am AA")+
3949
- emit_cell(1, GenericSpreadsheet.letter_to_number('AB'), "string", "i am AB")+
3950
- emit_cell(1, GenericSpreadsheet.letter_to_number('BA'), "string", "i am BA")+
3951
- "</sheet>\n"+
3952
- "<sheet name=\"Sheet4\">\n"+
3953
- emit_cell(1, 1, "date", "2007-06-16")+
3954
- emit_cell(1, 2, "float", "10.0")+
3955
- emit_cell(1, 3, "float", "10.0")+
3956
- emit_cell(1, 4, "float", "10.0")+
3957
- emit_cell(1, 5, "float", "10.0")+
3958
- "</sheet>\n"+
3959
- "<sheet name=\"Sheet5\">\n"+
3960
- emit_cell(1, 1, "float", "1.0")+
3961
- emit_cell(1, 2, "float", "5.0")+
3962
- emit_cell(1, 3, "float", "5.0")+
3963
- emit_cell(2, 1, "float", "2.0")+
3964
- emit_cell(3, 1, "float", "3.0")+
3965
- emit_cell(4, 1, "date", "2007-11-21")+
3966
- emit_cell(4, 2, "date", "2007-11-21")+
3967
- emit_cell(4, 3, "date", "2007-11-21")+
3968
- emit_cell(4, 4, "date", "2007-11-21")+
3969
- emit_cell(4, 5, "date", "2007-11-21")+
3970
- emit_cell(5, 1, "float", "42.0")+
3971
- emit_cell(5, 2, "float", "42.0")+
3972
- emit_cell(5, 3, "float", "42.0")+
3973
- emit_cell(5, 4, "float", "42.0")+
3974
- emit_cell(5, 5, "float", "42.0")+
3975
- emit_cell(6, 1, "string", "ABC")+
3976
- emit_cell(6, 2, "string", "ABC")+
3977
- emit_cell(6, 3, "string", "ABC")+
3978
- emit_cell(6, 4, "string", "ABC")+
3979
- emit_cell(6, 5, "string", "ABC")+
3980
- "</sheet>\n"+
3981
- ""
3982
- # oo.default_sheet = oo.sheets.first
3983
- assert_equal expected, oo.to_xml
3984
- end
3808
+ if EXCELX
3809
+ oo = Excelx.new(File.join('test','numbers1.xlsx'))
3810
+ do_test_xml(oo)
3985
3811
  end
3986
3812
  end
3987
3813
 
3988
3814
  def test_to_xml_google
3989
- after Date.new(2008,6,1) do
3990
- if GOOGLE
3991
- oo = Google.new(key_of(File.join('test','numbers1.xlsx')))
3992
- expected = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"+
3993
- "<sheet name=\"Tabelle1\">\n"+
3994
- emit_cell(1,1,"float","1.0")+
3995
- emit_cell(1,2,'float','2.0')+
3996
- emit_cell(1,3,'float','3.0')+
3997
- emit_cell(1,4,'float','4.0')+
3998
- emit_cell(1,5,'formula','10.0')+
3999
- emit_cell(2,1,'float','5.0')+
4000
- emit_cell(2,2,'float','6.0')+
4001
- emit_cell(2,3,'float','7.0')+
4002
- emit_cell(2,4,'float','8.0')+
4003
- emit_cell(2,5,'float','9.0')+
4004
- emit_cell(2,6,'string','test')+
4005
- emit_cell(2,7,'float','11.0')+
4006
- emit_cell(4, 1, "float", "10.0")+
4007
- emit_cell(4, 2, "float", "11.0")+
4008
- emit_cell(4, 3, "float", "12.0")+
4009
- emit_cell(4, 4, "float", "13.0")+
4010
- emit_cell(4, 5, "float", "14.0")+
4011
- emit_cell(5, 1, "date", "1961-11-21")+
4012
- emit_cell(6, 1, "string", "tata")+
4013
- emit_cell(8, 3, "string", "thisisc8")+
4014
- emit_cell(9,4, "string", "thisisd9")+
4015
- emit_cell(11, 1, "string", "thisisa11")+
4016
- emit_cell(12, 1, "float", "41.0")+
4017
- emit_cell(12, 2, "float", "42.0")+
4018
- emit_cell(12, 3, "float", "43.0")+
4019
- emit_cell(12, 4, "float", "44.0")+
4020
- emit_cell(12, 5, "float", "45.0")+
4021
- emit_cell(15, 1, "float", "41.0")+
4022
- emit_cell(15, 2, "float", "42.0")+
4023
- emit_cell(15, 3, "float", "43.0")+
4024
- emit_cell(15, 4, "float", "44.0")+
4025
- emit_cell(15, 5, "float", "45.0")+
4026
- emit_cell(16, 1, "string", "einundvierzig")+
4027
- emit_cell(16, 2, "string", "zweiundvierzig")+
4028
- emit_cell(16, 3, "string", "dreiundvierzig")+
4029
- emit_cell(16, 4, "string", "vierundvierzig")+
4030
- emit_cell(16, 5, "string", "fuenfundvierzig")+
4031
- emit_cell(18, 1, "date", "2007-05-31")+
4032
- emit_cell(18, 2, "string", "dies hier als Date-Objekt")+
4033
- "</sheet>\n"+
4034
- "<sheet name=\"Name of Sheet 2\">\n"+
4035
- emit_cell(5, 3, "string", "I am sheet 2")+
4036
- emit_cell(7, 2, "float", "3.0")+
4037
- emit_cell(10, 5, "float", "7.0")+
4038
- emit_cell(14, 4, "float", "9.0")+
4039
- "</sheet>\n"+
4040
- "<sheet name=\"Sheet3\">\n"+
4041
- emit_cell(1, 1, "string", "ganz weit rechts geht&#8217;s weiter")+
4042
- emit_cell(1, GenericSpreadsheet.letter_to_number('AA'), "string", "i am AA")+
4043
- emit_cell(1, GenericSpreadsheet.letter_to_number('AB'), "string", "i am AB")+
4044
- emit_cell(1, GenericSpreadsheet.letter_to_number('BA'), "string", "i am BA")+
4045
- "</sheet>\n"+
4046
- "<sheet name=\"Sheet4\">\n"+
4047
- emit_cell(1, 1, "date", "2007-06-16")+
4048
- emit_cell(1, 2, "float", "10.0")+
4049
- emit_cell(1, 3, "float", "10.0")+
4050
- emit_cell(1, 4, "float", "10.0")+
4051
- emit_cell(1, 5, "float", "10.0")+
4052
- "</sheet>\n"+
4053
- "<sheet name=\"Sheet5\">\n"+
4054
- emit_cell(1, 1, "float", "1.0")+
4055
- emit_cell(1, 2, "float", "5.0")+
4056
- emit_cell(1, 3, "float", "5.0")+
4057
- emit_cell(2, 1, "float", "2.0")+
4058
- emit_cell(3, 1, "float", "3.0")+
4059
- emit_cell(4, 1, "date", "2007-11-21")+
4060
- emit_cell(4, 2, "date", "2007-11-21")+
4061
- emit_cell(4, 3, "date", "2007-11-21")+
4062
- emit_cell(4, 4, "date", "2007-11-21")+
4063
- emit_cell(4, 5, "date", "2007-11-21")+
4064
- emit_cell(5, 1, "float", "42.0")+
4065
- emit_cell(5, 2, "float", "42.0")+
4066
- emit_cell(5, 3, "float", "42.0")+
4067
- emit_cell(5, 4, "float", "42.0")+
4068
- emit_cell(5, 5, "float", "42.0")+
4069
- emit_cell(6, 1, "string", "ABC")+
4070
- emit_cell(6, 2, "string", "ABC")+
4071
- emit_cell(6, 3, "string", "ABC")+
4072
- emit_cell(6, 4, "string", "ABC")+
4073
- emit_cell(6, 5, "string", "ABC")+
4074
- "</sheet>\n"+
4075
- ""
4076
- # oo.default_sheet = oo.sheets.first
4077
- assert_equal expected, oo.to_xml
4078
- end
3815
+ if GOOGLE
3816
+ oo = Google.new(key_of(File.join('test','numbers1.xlsx')))
3817
+ do_test_xml(oo)
4079
3818
  end
4080
3819
  end
4081
3820
 
@@ -4099,17 +3838,31 @@ Sheet 3:
4099
3838
  end
4100
3839
 
4101
3840
  def test_bug_c2
4102
- @e = Excel.new(File.join('test',"problem.xls"))
4103
- #@e.sheets[2..@e.sheets.length].each do |s|
4104
- (13..13).each do |s|
4105
- @e.default_sheet = s
4106
- name = @e.cell(2,'C')
4107
- #puts "#{name} (sheet: #{s})"
4108
- assert_equal "whatever (sheet: 13)", "#{name} (sheet: #{s})"
3841
+ local_only do
3842
+ after Date.new(2008,7,26)+10 do
3843
+ expected = ['Supermodel X','T6','Shaun White','Jeremy','Custom',
3844
+ 'Warhol','Twin','Malolo','Supermodel','Air','Elite',
3845
+ 'King','Dominant','Dominant Slick','Blunt','Clash',
3846
+ 'Bullet','Tadashi Fuse','Jussi','Royale','S-Series',
3847
+ 'Fish','Love','Feelgood ES','Feelgood','GTwin','Troop',
3848
+ 'Lux','Stigma','Feather','Stria','Alpha','Feelgood ICS']
3849
+ result = []
3850
+ @e = Excel.new(File.join('test',"problem.xls"))
3851
+ @e.sheets[2..@e.sheets.length].each do |s|
3852
+ #(13..13).each do |s|
3853
+ @e.default_sheet = s
3854
+ name = @e.cell(2,'C')
3855
+ result << name
3856
+ #puts "#{name} (sheet: #{s})"
3857
+ #assert_equal "whatever (sheet: 13)", "#{name} (sheet: #{s})"
3858
+ end
3859
+ assert_equal expected, result
4109
3860
  end
3861
+ end
4110
3862
  end
4111
3863
 
4112
3864
  def test_bug_c2_parseexcel
3865
+ local_only do
4113
3866
  #-- this is OK
4114
3867
  @workbook = Spreadsheet::ParseExcel.parse(File.join('test',"problem.xls"))
4115
3868
  worksheet = @workbook.worksheet(11)
@@ -4129,50 +3882,321 @@ Sheet 3:
4129
3882
  line += 1
4130
3883
  }
4131
3884
  #-- worksheet 12 does not work
4132
- @workbook = Spreadsheet::ParseExcel.parse(File.join('test',"problem.xls"))
4133
- worksheet = @workbook.worksheet(12)
4134
- skip = 0
4135
- line = 1
4136
- row = 2
4137
- col = 3
4138
- worksheet.each(skip) { |row_par|
4139
- if line == row
4140
- if row_par == nil
4141
- raise "nil"
3885
+ after Date.new(2008,7,23)+10 do
3886
+ @workbook = Spreadsheet::ParseExcel.parse(File.join('test',"problem.xls"))
3887
+ worksheet = @workbook.worksheet(12)
3888
+ skip = 0
3889
+ line = 1
3890
+ row = 2
3891
+ col = 3
3892
+ worksheet.each(skip) { |row_par|
3893
+ if line == row
3894
+ if row_par == nil
3895
+ raise "nil"
3896
+ end
3897
+ cell = row_par.at(col-1)
3898
+ assert cell, "cell should not be nil"
3899
+ assert_equal "Elite", cell.to_s('utf-8')
4142
3900
  end
4143
- cell = row_par.at(col-1)
4144
- assert cell, "cell should not be nil"
4145
- assert_equal "Elite", cell.to_s('utf-8')
4146
- end
4147
- line += 1
4148
- }
3901
+ line += 1
3902
+ }
3903
+ end
3904
+ end
4149
3905
  end
4150
3906
 
4151
3907
  def test_bug_c2_excelx
4152
- expected = ['Vapor']
4153
- result = []
4154
- @e = Excelx.new(File.join('test',"problem.xlsx"))
4155
- @e.sheets[2..@e.sheets.length].each do |s|
4156
- @e.default_sheet = s
4157
- # assert_equal "A.",@e.cell('a',13)
4158
- name = @e.cell(2,'C',s)
4159
- result << name
4160
- #puts "#{name} (sheet: #{s})"
4161
- #assert_equal :string, @e.celltype('c',2)
4162
- #assert_equal "Vapor (sheet: Vapor)", "#{name} (sheet: #{@e.sheets.first})"
4163
- assert @e.cell(2,'c')
4164
- end
4165
- #assert_equal expected, result
4166
-
4167
- @e = Excelx.new(File.join('test',"problem.xlsx"))
4168
- #@e.sheets[2..@e.sheets.length].each do |s|
4169
- (13..13).each do |s|
4170
- @e.default_sheet = s
4171
- name = @e.cell(2,'C')
4172
- #puts "#{name} (sheet: #{s})"
4173
- assert_equal "Elite (sheet: 13)", "#{name} (sheet: #{s})"
3908
+ local_only do
3909
+ expected = ['Supermodel X','T6','Shaun White','Jeremy','Custom',
3910
+ 'Warhol','Twin','Malolo','Supermodel','Air','Elite',
3911
+ 'King','Dominant','Dominant Slick','Blunt','Clash',
3912
+ 'Bullet','Tadashi Fuse','Jussi','Royale','S-Series',
3913
+ 'Fish','Love','Feelgood ES','Feelgood','GTwin','Troop',
3914
+ 'Lux','Stigma','Feather','Stria','Alpha','Feelgood ICS']
3915
+ result = []
3916
+ @e = Excelx.new(File.join('test',"problem.xlsx"))
3917
+ @e.sheets[2..@e.sheets.length].each do |s|
3918
+ @e.default_sheet = s
3919
+ # assert_equal "A.",@e.cell('a',13)
3920
+ name = @e.cell(2,'C')
3921
+ result << name
3922
+ #puts "#{name} (sheet: #{s})"
3923
+ #assert_equal :string, @e.celltype('c',2)
3924
+ #assert_equal "Vapor (sheet: Vapor)", "#{name} (sheet: #{@e.sheets.first})"
3925
+ assert @e.cell(2,'c')
3926
+ end
3927
+ assert_equal expected, result
3928
+
3929
+ @e = Excelx.new(File.join('test',"problem.xlsx"))
3930
+ #@e.sheets[2..@e.sheets.length].each do |s|
3931
+ (13..13).each do |s|
3932
+ @e.default_sheet = s
3933
+ name = @e.cell(2,'C')
3934
+ #puts "#{name} (sheet: #{s})"
3935
+ assert_equal "Elite (sheet: 13)", "#{name} (sheet: #{s})"
3936
+ end
3937
+ end
3938
+ end
3939
+
3940
+ def test_compare_csv_excelx_excel
3941
+ after Date.new(2008,7,30)+10 do
3942
+ s1 = Excel.new(File.join("test","problem.xls"))
3943
+ s2 = Excelx.new(File.join("test","problem.xlsx"))
3944
+ s1.sheets.each {|sh| #TODO:
3945
+ s1.default_sheet = sh
3946
+ s2.default_sheet = sh
3947
+ File.delete_if_exist("/tmp/problem.csv")
3948
+ File.delete_if_exist("/tmp/problemx.csv")
3949
+ assert s1.to_csv("/tmp/problem.csv")
3950
+ assert s2.to_csv("/tmp/problemx.csv")
3951
+ assert File.exists?("/tmp/problem.csv")
3952
+ assert File.exists?("/tmp/problemx.csv")
3953
+ assert_equal "", `diff /tmp/problem.csv /tmp/problemx.csv`, "Unterschied in Sheet #{sh}"
3954
+ }
3955
+ end
3956
+ end
3957
+
3958
+ def test_file_warning_default
3959
+ if OPENOFFICE
3960
+ assert_raises(TypeError) { oo = Openoffice.new(File.join("test","numbers1.xls")) }
3961
+ assert_raises(TypeError) { oo = Openoffice.new(File.join("test","numbers1.xlsx")) }
3962
+ end
3963
+ if EXCEL
3964
+ assert_raises(TypeError) { oo = Excel.new(File.join("test","numbers1.ods")) }
3965
+ assert_raises(TypeError) { oo = Excel.new(File.join("test","numbers1.xlsx")) }
3966
+ end
3967
+ if EXCELX
3968
+ assert_raises(TypeError) { oo = Excelx.new(File.join("test","numbers1.ods")) }
3969
+ assert_raises(TypeError) { oo = Excelx.new(File.join("test","numbers1.xls")) }
3970
+ end
3971
+ end
3972
+
3973
+ def test_file_warning_error
3974
+ if OPENOFFICE
3975
+ assert_raises(TypeError) { oo = Openoffice.new(File.join("test","numbers1.xls"),false,:error) }
3976
+ assert_raises(TypeError) { oo = Openoffice.new(File.join("test","numbers1.xlsx"),false,:error) }
3977
+ end
3978
+ if EXCEL
3979
+ assert_raises(TypeError) { oo = Excel.new(File.join("test","numbers1.ods"),false,:error) }
3980
+ assert_raises(TypeError) { oo = Excel.new(File.join("test","numbers1.xlsx"),false,:error) }
3981
+ end
3982
+ if EXCELX
3983
+ assert_raises(TypeError) { oo = Excelx.new(File.join("test","numbers1.ods"),false,:error) }
3984
+ assert_raises(TypeError) { oo = Excelx.new(File.join("test","numbers1.xls"),false,:error) }
3985
+ end
3986
+ end
3987
+
3988
+ def test_file_warning_warning
3989
+ after Date.new(2008,7,3) do
3990
+ if OPENOFFICE
3991
+ assert_nothing_raised(TypeError) {
3992
+ assert_raises(Zip::ZipError) {
3993
+ oo = Openoffice.new(File.join("test","numbers1.xls"),false, :warning)
3994
+ }
3995
+ }
3996
+ assert_nothing_raised(TypeError) {
3997
+ assert_raises(Errno::ENOENT) {
3998
+ oo = Openoffice.new(File.join("test","numbers1.xlsx"),false, :warning)
3999
+ }
4000
+ }
4001
+ end
4002
+ after Date.new(2008,7,13) do
4003
+ if EXCEL
4004
+ assert_nothing_raised(TypeError) {
4005
+ assert_raises(OLE::UnknownFormatError) {
4006
+ oo = Excel.new(File.join("test","numbers1.ods"),false, :warning) }
4007
+ }
4008
+ assert_nothing_raised(TypeError) {
4009
+ assert_raises(OLE::UnknownFormatError) {
4010
+ oo = Excel.new(File.join("test","numbers1.xlsx"),false, :warning) }
4011
+ }
4012
+ end
4013
+ if EXCELX
4014
+ assert_nothing_raised(TypeError) {
4015
+ assert_raises(Errno::ENOENT) {
4016
+ oo = Excelx.new(File.join("test","numbers1.ods"),false, :warning) }
4017
+ }
4018
+ assert_nothing_raised(TypeError) {
4019
+ assert_raises(Zip::ZipError) {
4020
+ oo = Excelx.new(File.join("test","numbers1.xls"),false, :warning) }
4021
+ }
4022
+ end
4023
+ end
4024
+ end
4025
+ end
4026
+
4027
+ def test_file_warning_ignore
4028
+ if OPENOFFICE
4029
+ assert_nothing_raised(TypeError) {
4030
+ assert_raises(Zip::ZipError) {
4031
+ oo = Openoffice.new(File.join("test","numbers1.xls"),false, :ignore) }
4032
+ }
4033
+ assert_nothing_raised(TypeError) {
4034
+ assert_raises(Errno::ENOENT) {
4035
+ oo = Openoffice.new(File.join("test","numbers1.xlsx"),false, :ignore) }
4036
+ }
4037
+ end
4038
+ if EXCEL
4039
+ assert_nothing_raised(TypeError) {
4040
+ assert_raises(OLE::UnknownFormatError) {
4041
+ oo = Excel.new(File.join("test","numbers1.ods"),false, :ignore) }
4042
+ }
4043
+ assert_nothing_raised(TypeError) {
4044
+ assert_raises(OLE::UnknownFormatError) {oo = Excel.new(File.join("test","numbers1.xlsx"),false, :ignore) }}
4045
+ end
4046
+ if EXCELX
4047
+ assert_nothing_raised(TypeError) {
4048
+ assert_raises(Errno::ENOENT) {
4049
+ oo = Excelx.new(File.join("test","numbers1.ods"),false, :ignore)
4050
+ }
4051
+ }
4052
+ assert_nothing_raised(TypeError) {
4053
+ assert_raises(Zip::ZipError) {
4054
+ oo = Excelx.new(File.join("test","numbers1.xls"),false, :ignore)
4055
+ }
4056
+ }
4057
+ end
4058
+ end
4059
+
4060
+ def test_open_from_uri
4061
+ if OPENOFFICE
4062
+ assert_raises(RuntimeError) {
4063
+ oo = Openoffice.new("http://gibbsnichtdomainxxxxx.com/file.ods")
4064
+ }
4065
+ end
4066
+ if EXCEL
4067
+ assert_raises(RuntimeError) {
4068
+ oo = Excel.new("http://gibbsnichtdomainxxxxx.com/file.xls")
4069
+ }
4070
+ end
4071
+ if EXCELX
4072
+ assert_raises(RuntimeError) {
4073
+ oo = Excelx.new("http://gibbsnichtdomainxxxxx.com/file.xlsx")
4074
+ }
4075
+ end
4076
+ end
4077
+
4078
+ def test_bug_last_row_excel
4079
+ if EXCEL
4080
+ oo = Excel.new(File.join("test","time-test.xls"))
4081
+ oo.default_sheet = oo.sheets.first
4082
+ assert_equal 2, oo.last_row
4083
+ end
4084
+ end
4085
+
4086
+ def test_bug_to_xml_with_empty_sheets_openoffice
4087
+ if OPENOFFICE
4088
+ oo = Openoffice.new(File.join("test","emptysheets.ods"))
4089
+ oo.sheets.each { |sheet|
4090
+ oo.default_sheet = sheet
4091
+ assert_equal nil, oo.first_row, "first_row not nil in sheet #{sheet}"
4092
+ assert_equal nil, oo.last_row, "last_row not nil in sheet #{sheet}"
4093
+ assert_equal nil, oo.first_column, "first_column not nil in sheet #{sheet}"
4094
+ assert_equal nil, oo.last_column, "last_column not nil in sheet #{sheet}"
4095
+ assert_equal nil, oo.first_row(sheet), "first_row not nil in sheet #{sheet}"
4096
+ assert_equal nil, oo.last_row(sheet), "last_row not nil in sheet #{sheet}"
4097
+ assert_equal nil, oo.first_column(sheet), "first_column not nil in sheet #{sheet}"
4098
+ assert_equal nil, oo.last_column(sheet), "last_column not nil in sheet #{sheet}"
4099
+ }
4100
+ assert_nothing_raised() {
4101
+ result = oo.to_xml
4102
+ }
4103
+ end
4104
+ end
4105
+
4106
+ def test_bug_to_xml_with_empty_sheets_excel
4107
+ if EXCEL
4108
+ oo = Excel.new(File.join("test","emptysheets.xls"))
4109
+ oo.sheets.each { |sheet|
4110
+ oo.default_sheet = sheet
4111
+ assert_equal nil, oo.first_row, "first_row not nil in sheet #{sheet}"
4112
+ assert_equal nil, oo.last_row, "last_row not nil in sheet #{sheet}"
4113
+ assert_equal nil, oo.first_column, "first_column not nil in sheet #{sheet}"
4114
+ assert_equal nil, oo.last_column, "last_column not nil in sheet #{sheet}"
4115
+ assert_equal nil, oo.first_row(sheet), "first_row not nil in sheet #{sheet}"
4116
+ assert_equal nil, oo.last_row(sheet), "last_row not nil in sheet #{sheet}"
4117
+ assert_equal nil, oo.first_column(sheet), "first_column not nil in sheet #{sheet}"
4118
+ assert_equal nil, oo.last_column(sheet), "last_column not nil in sheet #{sheet}"
4119
+ }
4120
+ assert_nothing_raised() {
4121
+ result = oo.to_xml
4122
+ }
4123
+ end
4124
+ end
4125
+
4126
+ def test_bug_to_xml_with_empty_sheets_excelx
4127
+ # kann ich nicht testen, da ich selbst keine .xlsx Files anlegen kann
4128
+ if EXCELX
4129
+ # oo = Excelx.new(File.join("test","emptysheets.xlsx"))
4130
+ # oo.sheets.each { |sheet|
4131
+ # oo.default_sheet = sheet
4132
+ # assert_equal nil, oo.first_row, "first_row not nil in sheet #{sheet}"
4133
+ # assert_equal nil, oo.last_row, "last_row not nil in sheet #{sheet}"
4134
+ # assert_equal nil, oo.first_column, "first_column not nil in sheet #{sheet}"
4135
+ # assert_equal nil, oo.last_column, "last_column not nil in sheet #{sheet}"
4136
+ # assert_equal nil, oo.first_row(sheet), "first_row not nil in sheet #{sheet}"
4137
+ # assert_equal nil, oo.last_row(sheet), "last_row not nil in sheet #{sheet}"
4138
+ # assert_equal nil, oo.first_column(sheet), "first_column not nil in sheet #{sheet}"
4139
+ # assert_equal nil, oo.last_column(sheet), "last_column not nil in sheet #{sheet}"
4140
+ # }
4141
+ # assert_nothing_raised() {
4142
+ # result = oo.to_xml
4143
+ # p result
4144
+ # }
4145
+ end
4146
+ end
4147
+
4148
+ def test_bug_simple_spreadsheet_time_bug
4149
+ # really a bug? are cells really of type time?
4150
+ if EXCELX
4151
+ after Date.new(2999,7,25)+10 do
4152
+ oo = Excelx.new(File.join("test","simple_spreadsheet.xlsx"))
4153
+ oo.default_sheet = oo.sheets.first
4154
+ puts oo.cell('B',5).to_s
4155
+ assert_equal :time, oo.celltype('B',5)
4156
+ assert_equal 10.75, oo.cell('B',5)
4157
+
4158
+ assert_equal 12.50, oo.cell('C',5)
4159
+ assert_equal 0, oo.cell('D',5)
4160
+ assert_equal 1.75, oo.cell('E',5)
4161
+ assert_equal 'Task 1', oo.cell('F',5)
4162
+ assert_equal Date.new(2007,5,7), oo.cell('A',5)
4163
+ end
4164
+ end
4165
+ end
4166
+
4167
+
4168
+ def test_to_ascii_openoffice
4169
+ if OPENOFFICE
4170
+ after Date.new(2999,1,1) do
4171
+ oo = Openoffice.new(File.join("test","verysimple_spreadsheet.ods"))
4172
+ oo.default_sheet = oo.sheets.first
4173
+ expected="
4174
+ A | B | C |
4175
+ -------+-------+------|
4176
+ 7| 8| 9|
4177
+ -------+-------+------|
4178
+ 4| 5| 6|
4179
+ -------+-------+------|
4180
+ 1| 2| 3|
4181
+ ----------------------/
4182
+ "
4183
+ assert_equal expected, oo.to_ascii
4184
+ end
4185
+ end
4186
+ end
4187
+
4188
+ def test_simple2_excelx
4189
+ after Date.new(2999,1,1) do
4190
+ if EXCELX
4191
+ oo = Excelx.new(File.join("test","simple_spreadsheet.xlsx"))
4192
+ oo.default_sheet = oo.sheets.first
4193
+ assert_equal :numeric_or_formula, oo.excelx_type('A',4)
4194
+ assert_equal :numeric_or_formula, oo.excelx_type('B',4)
4195
+ assert_equal :numeric_or_formula, oo.excelx_type('c',4)
4196
+ assert_equal :numeric_or_formula, oo.excelx_type('d',4)
4197
+ assert_equal :numeric_or_formula, oo.excelx_type('e',4)
4198
+ assert_equal :string, oo.excelx_type('f',4)
4199
+ end
4174
4200
  end
4175
4201
  end
4176
-
4177
-
4178
4202
  end # class