roo 1.10.1 → 1.10.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +2 -0
- data/Gemfile +4 -0
- data/Gemfile.lock +38 -0
- data/History.txt +4 -4
- data/License.txt +20 -0
- data/Manifest.txt +68 -0
- data/README.markdown +109 -0
- data/Rakefile +5 -4
- data/bin/roo +0 -0
- data/examples/roo_soap_client.rb +53 -0
- data/examples/roo_soap_server.rb +29 -0
- data/examples/write_me.rb +33 -0
- data/lib/roo.rb +20 -61
- data/lib/roo/csv.rb +13 -11
- data/lib/roo/excel.rb +108 -219
- data/lib/roo/excel2003xml.rb +312 -0
- data/lib/roo/excelx.rb +205 -341
- data/lib/roo/generic_spreadsheet.rb +371 -268
- data/lib/roo/google.rb +64 -54
- data/lib/roo/openoffice.rb +101 -156
- data/lib/roo/roo_rails_helper.rb +5 -5
- data/lib/roo/worksheet.rb +18 -0
- data/roo.gemspec +43 -0
- data/scripts/txt2html +67 -0
- data/test/all_ss.rb +8 -10
- data/test/{1900_base.xls → files/1900_base.xls} +0 -0
- data/test/{1904_base.xls → files/1904_base.xls} +0 -0
- data/test/{Bibelbund.csv → files/Bibelbund.csv} +0 -0
- data/test/{Bibelbund.ods → files/Bibelbund.ods} +0 -0
- data/test/{Bibelbund.xls → files/Bibelbund.xls} +0 -0
- data/test/{Bibelbund.xlsx → files/Bibelbund.xlsx} +0 -0
- data/test/files/Bibelbund.xml +62518 -0
- data/test/{Bibelbund1.ods → files/Bibelbund1.ods} +0 -0
- data/test/{Pfand_from_windows_phone.xlsx → files/Pfand_from_windows_phone.xlsx} +0 -0
- data/test/files/bad_excel_date.xls +0 -0
- data/test/{bbu.ods → files/bbu.ods} +0 -0
- data/test/{bbu.xls → files/bbu.xls} +0 -0
- data/test/{bbu.xlsx → files/bbu.xlsx} +0 -0
- data/test/files/bbu.xml +152 -0
- data/test/{bode-v1.ods.zip → files/bode-v1.ods.zip} +0 -0
- data/test/{bode-v1.xls.zip → files/bode-v1.xls.zip} +0 -0
- data/test/{boolean.ods → files/boolean.ods} +0 -0
- data/test/{boolean.xls → files/boolean.xls} +0 -0
- data/test/{boolean.xlsx → files/boolean.xlsx} +0 -0
- data/test/files/boolean.xml +112 -0
- data/test/{borders.ods → files/borders.ods} +0 -0
- data/test/{borders.xls → files/borders.xls} +0 -0
- data/test/{borders.xlsx → files/borders.xlsx} +0 -0
- data/test/files/borders.xml +144 -0
- data/test/{bug-row-column-fixnum-float.xls → files/bug-row-column-fixnum-float.xls} +0 -0
- data/test/files/bug-row-column-fixnum-float.xml +127 -0
- data/test/{comments.ods → files/comments.ods} +0 -0
- data/test/{comments.xls → files/comments.xls} +0 -0
- data/test/{comments.xlsx → files/comments.xlsx} +0 -0
- data/test/{csvtypes.csv → files/csvtypes.csv} +0 -0
- data/test/{datetime.ods → files/datetime.ods} +0 -0
- data/test/{datetime.xls → files/datetime.xls} +0 -0
- data/test/{datetime.xlsx → files/datetime.xlsx} +0 -0
- data/test/files/datetime.xml +142 -0
- data/test/{datetime_floatconv.xls → files/datetime_floatconv.xls} +0 -0
- data/test/files/datetime_floatconv.xml +148 -0
- data/test/{dreimalvier.ods → files/dreimalvier.ods} +0 -0
- data/test/{emptysheets.ods → files/emptysheets.ods} +0 -0
- data/test/{emptysheets.xls → files/emptysheets.xls} +0 -0
- data/test/{emptysheets.xlsx → files/emptysheets.xlsx} +0 -0
- data/test/files/emptysheets.xml +105 -0
- data/test/files/excel2003.xml +21140 -0
- data/test/{false_encoding.xls → files/false_encoding.xls} +0 -0
- data/test/files/false_encoding.xml +132 -0
- data/test/{formula.ods → files/formula.ods} +0 -0
- data/test/{formula.xls → files/formula.xls} +0 -0
- data/test/{formula.xlsx → files/formula.xlsx} +0 -0
- data/test/files/formula.xml +134 -0
- data/test/files/formula_parse_error.xls +0 -0
- data/test/files/formula_parse_error.xml +1833 -0
- data/test/{formula_string_error.xlsx → files/formula_string_error.xlsx} +0 -0
- data/test/{html-escape.ods → files/html-escape.ods} +0 -0
- data/test/{matrix.ods → files/matrix.ods} +0 -0
- data/test/{matrix.xls → files/matrix.xls} +0 -0
- data/test/{named_cells.ods → files/named_cells.ods} +0 -0
- data/test/{named_cells.xls → files/named_cells.xls} +0 -0
- data/test/{named_cells.xlsx → files/named_cells.xlsx} +0 -0
- data/test/{no_spreadsheet_file.txt → files/no_spreadsheet_file.txt} +0 -0
- data/test/{numbers1.csv → files/numbers1.csv} +0 -0
- data/test/{numbers1.ods → files/numbers1.ods} +0 -0
- data/test/{numbers1.xls → files/numbers1.xls} +0 -0
- data/test/{numbers1.xlsx → files/numbers1.xlsx} +0 -0
- data/test/files/numbers1.xml +312 -0
- data/test/{only_one_sheet.ods → files/only_one_sheet.ods} +0 -0
- data/test/{only_one_sheet.xls → files/only_one_sheet.xls} +0 -0
- data/test/{only_one_sheet.xlsx → files/only_one_sheet.xlsx} +0 -0
- data/test/files/only_one_sheet.xml +67 -0
- data/test/{paragraph.ods → files/paragraph.ods} +0 -0
- data/test/{paragraph.xls → files/paragraph.xls} +0 -0
- data/test/{paragraph.xlsx → files/paragraph.xlsx} +0 -0
- data/test/files/paragraph.xml +127 -0
- data/test/{prova.xls → files/prova.xls} +0 -0
- data/test/{ric.ods → files/ric.ods} +0 -0
- data/test/{simple_spreadsheet.ods → files/simple_spreadsheet.ods} +0 -0
- data/test/{simple_spreadsheet.xls → files/simple_spreadsheet.xls} +0 -0
- data/test/{simple_spreadsheet.xlsx → files/simple_spreadsheet.xlsx} +0 -0
- data/test/files/simple_spreadsheet.xml +225 -0
- data/test/{simple_spreadsheet_from_italo.ods → files/simple_spreadsheet_from_italo.ods} +0 -0
- data/test/{simple_spreadsheet_from_italo.xls → files/simple_spreadsheet_from_italo.xls} +0 -0
- data/test/files/simple_spreadsheet_from_italo.xml +242 -0
- data/test/{so_datetime.csv → files/so_datetime.csv} +0 -0
- data/test/{style.ods → files/style.ods} +0 -0
- data/test/{style.xls → files/style.xls} +0 -0
- data/test/{style.xlsx → files/style.xlsx} +0 -0
- data/test/files/style.xml +154 -0
- data/test/{time-test.csv → files/time-test.csv} +0 -0
- data/test/{time-test.ods → files/time-test.ods} +0 -0
- data/test/{time-test.xls → files/time-test.xls} +0 -0
- data/test/{time-test.xlsx → files/time-test.xlsx} +0 -0
- data/test/files/time-test.xml +131 -0
- data/test/{type_excel.ods → files/type_excel.ods} +0 -0
- data/test/{type_excel.xlsx → files/type_excel.xlsx} +0 -0
- data/test/{type_excelx.ods → files/type_excelx.ods} +0 -0
- data/test/{type_excelx.xls → files/type_excelx.xls} +0 -0
- data/test/{type_openoffice.xls → files/type_openoffice.xls} +0 -0
- data/test/{type_openoffice.xlsx → files/type_openoffice.xlsx} +0 -0
- data/test/{whitespace.ods → files/whitespace.ods} +0 -0
- data/test/{whitespace.xls → files/whitespace.xls} +0 -0
- data/test/{whitespace.xlsx → files/whitespace.xlsx} +0 -0
- data/test/files/whitespace.xml +184 -0
- data/test/test_generic_spreadsheet.rb +257 -0
- data/test/test_helper.rb +167 -27
- data/test/test_roo.rb +1178 -930
- data/website/index.html +385 -0
- data/website/index.txt +423 -0
- data/website/javascripts/rounded_corners_lite.inc.js +285 -0
- data/website/stylesheets/screen.css +130 -0
- data/website/template.rhtml +48 -0
- metadata +151 -121
- data/README.txt +0 -110
- data/lib/roo/.csv.rb.swp +0 -0
data/test/test_roo.rb
CHANGED
@@ -9,216 +9,75 @@
|
|
9
9
|
# (like 'diff') must be changed (or commented out ;-)) if you want to run
|
10
10
|
# the tests under another OS
|
11
11
|
#
|
12
|
-
|
13
|
-
require 'todonotes'
|
14
|
-
require 'tmpdir'
|
15
|
-
require './lib/roo'
|
12
|
+
|
16
13
|
#TODO
|
17
14
|
# Look at formulas in excel - does not work with date/time
|
18
15
|
|
19
|
-
class Csv
|
20
|
-
def cell_postprocessing(row,col,value)
|
21
|
-
if row==1 and col==1
|
22
|
-
return value.to_f
|
23
|
-
end
|
24
|
-
if row==1 and col==2
|
25
|
-
return value.to_s
|
26
|
-
end
|
27
|
-
return value
|
28
|
-
end
|
29
|
-
end
|
30
|
-
|
31
16
|
# Dump warnings that come from the test to open files
|
32
17
|
# with the wrong spreadsheet class
|
33
18
|
#STDERR.reopen "/dev/null","w"
|
34
19
|
|
35
|
-
|
36
|
-
TMP_PREFIX = 'oo_*'
|
37
|
-
# require './' + TESTDIR + '/test_helper.rb'
|
38
|
-
require TESTDIR + '/test_helper.rb'
|
39
|
-
|
40
|
-
require 'fileutils'
|
41
|
-
require 'timeout'
|
42
|
-
require 'logger'
|
43
|
-
$log = Logger.new(File.join(ENV['HOME'],"roo.log"))
|
44
|
-
#$log.level = Logger::WARN
|
45
|
-
$log.level = Logger::DEBUG
|
46
|
-
|
47
|
-
DISPLAY_LOG = false
|
48
|
-
DB_LOG = false
|
49
|
-
|
50
|
-
if DB_LOG
|
51
|
-
require 'activerecord'
|
52
|
-
end
|
53
|
-
|
54
|
-
include FileUtils
|
55
|
-
|
56
|
-
def running_windows?
|
57
|
-
# to do
|
58
|
-
# "besser loesen"
|
59
|
-
# end
|
60
|
-
File.exists? "C:\\"
|
61
|
-
end
|
62
|
-
|
63
|
-
if DB_LOG
|
64
|
-
def activerecord_connect
|
65
|
-
ActiveRecord::Base.establish_connection(:adapter => "mysql",
|
66
|
-
:database => "test_runs",
|
67
|
-
:host => "localhost",
|
68
|
-
:username => "root",
|
69
|
-
:socket => "/var/run/mysqld/mysqld.sock")
|
70
|
-
end
|
71
|
-
|
72
|
-
class Testrun < ActiveRecord::Base
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
class Test::Unit::TestCase
|
77
|
-
def key_of(spreadsheetname)
|
78
|
-
begin
|
79
|
-
|
80
|
-
return {
|
81
|
-
#'formula' => 'rt4Pw1WmjxFtyfrqqy94wPw',
|
82
|
-
'formula' => 'o10837434939102457526.3022866619437760118',
|
83
|
-
#"write.me" => 'r6m7HFlUOwst0RTUTuhQ0Ow',
|
84
|
-
"write.me" => '0AkCuGANLc3jFcHR1NmJiYWhOWnBZME4wUnJ4UWJXZHc',
|
85
|
-
#'numbers1' => "rYraCzjxTtkxw1NxHJgDU8Q",
|
86
|
-
'numbers1' => 'o10837434939102457526.4784396906364855777',
|
87
|
-
#'borders' => "r_nLYMft6uWg_PT9Rc2urXw",
|
88
|
-
'borders' => "o10837434939102457526.664868920231926255",
|
89
|
-
#'simple_spreadsheet' => "r3aMMCBCA153TmU_wyIaxfw",
|
90
|
-
'simple_spreadsheet' => "ptu6bbahNZpYe-L1vEBmgGA",
|
91
|
-
'testnichtvorhandenBibelbund.ods' => "invalidkeyforanyspreadsheet", # !!! intentionally false key
|
92
|
-
#"only_one_sheet" => "rqRtkcPJ97nhQ0m9ksDw2rA",
|
93
|
-
"only_one_sheet" => "o10837434939102457526.762705759906130135",
|
94
|
-
#'time-test' => 'r2XfDBJMrLPjmuLrPQQrEYw',
|
95
|
-
'time-test' => 'ptu6bbahNZpYBMhk01UfXSg',
|
96
|
-
#'datetime' => "r2kQpXWr6xOSUpw9MyXavYg",
|
97
|
-
'datetime' => "ptu6bbahNZpYQEtZwzL_dZQ",
|
98
|
-
'whitespace' => "rZyQaoFebVGeHKzjG6e9gRQ",
|
99
|
-
'matrix' => '0AkCuGANLc3jFdHY3cWtYUkM4bVdadjZ5VGpfTzFEUEE',
|
100
|
-
}[spreadsheetname]
|
101
|
-
# 'numbers1' => "o10837434939102457526.4784396906364855777",
|
102
|
-
# 'borders' => "o10837434939102457526.664868920231926255",
|
103
|
-
# 'simple_spreadsheet' => "ptu6bbahNZpYe-L1vEBmgGA",
|
104
|
-
# 'testnichtvorhandenBibelbund.ods' => "invalidkeyforanyspreadsheet", # !!! intentionally false key
|
105
|
-
# "only_one_sheet" => "o10837434939102457526.762705759906130135",
|
106
|
-
# "write.me" => 'ptu6bbahNZpY0N0RrxQbWdw&hl',
|
107
|
-
# 'formula' => 'o10837434939102457526.3022866619437760118',
|
108
|
-
# 'time-test' => 'ptu6bbahNZpYBMhk01UfXSg',
|
109
|
-
# 'datetime' => "ptu6bbahNZpYQEtZwzL_dZQ",
|
110
|
-
rescue
|
111
|
-
raise "unknown spreadsheetname: #{spreadsheetname}"
|
112
|
-
end
|
113
|
-
end
|
114
|
-
|
115
|
-
if DB_LOG
|
116
|
-
if ! (defined?(@connected) and @connected)
|
117
|
-
activerecord_connect
|
118
|
-
else
|
119
|
-
@connected = true
|
120
|
-
end
|
121
|
-
end
|
122
|
-
alias unlogged_run run
|
123
|
-
def run(result, &block)
|
124
|
-
t1 = Time.now
|
125
|
-
#RAILS_DEFAULT_LOGGER.debug "RUNNING #{self.class} #{@method_name} \t#{Time.now.to_s}"
|
126
|
-
if DISPLAY_LOG
|
127
|
-
v1,v2,v3 = RUBY_VERSION.split('.')
|
128
|
-
if v1.to_i > 1 or
|
129
|
-
(v1.to_i == 1 and v2.to_i > 8)
|
130
|
-
# Ruby 1.9.x
|
131
|
-
print "RUNNING #{self.class} #{self.__name__} \t#{Time.now.to_s}"
|
132
|
-
else
|
133
|
-
# Ruby < 1.9.x
|
134
|
-
print "RUNNING #{self.class} #{@method_name} \t#{Time.now.to_s}"
|
135
|
-
end
|
136
|
-
STDOUT.flush
|
137
|
-
end
|
138
|
-
unlogged_run result, &block
|
139
|
-
t2 = Time.now
|
140
|
-
if DISPLAY_LOG
|
141
|
-
puts "\t#{t2-t1} seconds"
|
142
|
-
end
|
143
|
-
if DB_LOG
|
144
|
-
domain = Testrun.create(
|
145
|
-
:class_name => self.class.to_s,
|
146
|
-
:test_name => @method_name,
|
147
|
-
:start => t1,
|
148
|
-
:duration => t2-t1
|
149
|
-
)
|
150
|
-
end
|
151
|
-
# TODO
|
152
|
-
#if Dir.glob("oo_*") != []
|
153
|
-
# puts "nicht alle temp. Dateien geloescht"
|
154
|
-
# puts Dir.glob("oo_*")
|
155
|
-
# print "? "
|
156
|
-
# STDOUT.flush
|
157
|
-
# a = gets
|
158
|
-
# end
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
class File
|
163
|
-
def File.delete_if_exist(filename)
|
164
|
-
if File.exist?(filename)
|
165
|
-
File.delete(filename)
|
166
|
-
end
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
|
-
# :nodoc
|
171
|
-
class Fixnum
|
172
|
-
def minutes
|
173
|
-
self * 60
|
174
|
-
end
|
175
|
-
end
|
20
|
+
require File.dirname(__FILE__) + '/test_helper'
|
176
21
|
|
177
22
|
class TestRoo < Test::Unit::TestCase
|
178
23
|
|
179
|
-
OPENOFFICE =
|
24
|
+
OPENOFFICE = false # do Openoffice-Spreadsheet Tests? (.ods files)
|
180
25
|
EXCEL = true # do Excel Tests? (.xls files)
|
181
26
|
GOOGLE = false # do Google-Spreadsheet Tests?
|
182
27
|
EXCELX = true # do Excelx Tests? (.xlsx files)
|
183
28
|
LIBREOFFICE = true # do Libreoffice tests? (.ods files)
|
184
29
|
CSV = true # do CSV tests? (.csv files)
|
185
30
|
|
186
|
-
|
187
|
-
|
188
|
-
|
31
|
+
FORMATS = {
|
32
|
+
excel: EXCEL,
|
33
|
+
excelx: EXCELX,
|
34
|
+
openoffice: OPENOFFICE,
|
35
|
+
google: GOOGLE,
|
36
|
+
libreoffice: LIBREOFFICE
|
37
|
+
}
|
189
38
|
|
190
|
-
|
191
|
-
|
192
|
-
# puts " GLOBAL_TIMEOUT = #{GLOBAL_TIMEOUT}"
|
193
|
-
#end
|
194
|
-
end
|
39
|
+
ONLINE = false
|
40
|
+
LONG_RUN = false
|
195
41
|
|
196
42
|
def test_internal_minutes
|
197
43
|
assert_equal 42*60, 42.minutes
|
198
44
|
end
|
199
|
-
|
200
|
-
|
45
|
+
|
46
|
+
def fixture_filename(name, format)
|
47
|
+
case format
|
48
|
+
when :excel
|
49
|
+
"#{name}.xls"
|
50
|
+
when :excelx
|
51
|
+
"#{name}.xlsx"
|
52
|
+
when :openoffice, :libreoffice
|
53
|
+
"#{name}.ods"
|
54
|
+
when :google
|
55
|
+
key_of(name) || name
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
# call a block of code for each spreadsheet type
|
201
60
|
# and yield a reference to the roo object
|
202
61
|
def with_each_spreadsheet(options)
|
203
|
-
# test if the spreadsheet type is valid :nodoc
|
204
62
|
if options[:format]
|
205
|
-
|
206
|
-
|
63
|
+
options[:format] = Array(options[:format])
|
64
|
+
invalid_formats = options[:format] - FORMATS.keys
|
65
|
+
unless invalid_formats.empty?
|
66
|
+
raise "invalid spreadsheet types: #{invalid_formats.join(', ')}"
|
207
67
|
end
|
208
|
-
|
209
|
-
|
210
|
-
|
68
|
+
else
|
69
|
+
options[:format] = FORMATS.keys
|
70
|
+
end
|
71
|
+
options[:format].each do |format|
|
72
|
+
begin
|
73
|
+
if FORMATS[format]
|
74
|
+
yield Roo::Spreadsheet.open(File.join(TESTDIR,
|
75
|
+
fixture_filename(options[:name], format)))
|
211
76
|
end
|
77
|
+
rescue => e
|
78
|
+
raise e, "#{e.message} for #{format}", e.backtrace
|
212
79
|
end
|
213
80
|
end
|
214
|
-
# end test spreadsheet type :nodoc
|
215
|
-
options[:format] ||= [:excel, :excelx, :openoffice, :google, :libreoffice]
|
216
|
-
options[:format] = [options[:format]] if options[:format].class == Symbol
|
217
|
-
yield Roo::Spreadsheet.open(File.join(TESTDIR, options[:name] + '.xls')) if EXCEL && options[:format].include?(:excel)
|
218
|
-
yield Roo::Spreadsheet.open(File.join(TESTDIR, options[:name] + '.xlsx')) if EXCELX && options[:format].include?(:excelx)
|
219
|
-
yield Roo::Spreadsheet.open(File.join(TESTDIR, options[:name] + '.ods')) if OPENOFFICE && options[:format].include?(:openoffice)
|
220
|
-
yield Roo::Spreadsheet.open(key_of(options[:name]) || options[:name]) if GOOGLE && options[:format].include?(:google)
|
221
|
-
yield Roo::Spreadsheet.open(File.join(TESTDIR, options[:name] + '.ods')) if LIBREOFFICE && options[:format].include?(:libreoffice)
|
222
81
|
end
|
223
82
|
|
224
83
|
# Using Date.strptime so check that it's using the method
|
@@ -239,45 +98,34 @@ class TestRoo < Test::Unit::TestCase
|
|
239
98
|
|
240
99
|
def test_classes
|
241
100
|
if OPENOFFICE
|
242
|
-
oo = Openoffice.new(File.join(TESTDIR,"numbers1.ods"))
|
243
|
-
assert_kind_of Openoffice, oo
|
101
|
+
oo = Roo::Openoffice.new(File.join(TESTDIR,"numbers1.ods"))
|
102
|
+
assert_kind_of Roo::Openoffice, oo
|
244
103
|
end
|
245
104
|
if EXCEL
|
246
|
-
oo = Excel.new(File.join(TESTDIR,"numbers1.xls"))
|
247
|
-
assert_kind_of Excel, oo
|
105
|
+
oo = Roo::Excel.new(File.join(TESTDIR,"numbers1.xls"))
|
106
|
+
assert_kind_of Roo::Excel, oo
|
248
107
|
end
|
249
108
|
if GOOGLE
|
250
|
-
oo = Google.new(key_of("numbers1"))
|
251
|
-
assert_kind_of Google, oo
|
109
|
+
oo = Roo::Google.new(key_of("numbers1"))
|
110
|
+
assert_kind_of Roo::Google, oo
|
252
111
|
end
|
253
112
|
if EXCELX
|
254
|
-
oo = Excelx.new(File.join(TESTDIR,"numbers1.xlsx"))
|
255
|
-
assert_kind_of Excelx, oo
|
113
|
+
oo = Roo::Excelx.new(File.join(TESTDIR,"numbers1.xlsx"))
|
114
|
+
assert_kind_of Roo::Excelx, oo
|
256
115
|
end
|
257
116
|
if LIBREOFFICE
|
258
|
-
oo = Libreoffice.new(File.join(TESTDIR,"numbers1.ods"))
|
259
|
-
assert_kind_of Libreoffice, oo
|
117
|
+
oo = Roo::Libreoffice.new(File.join(TESTDIR,"numbers1.ods"))
|
118
|
+
assert_kind_of Roo::Libreoffice, oo
|
260
119
|
end
|
261
120
|
if CSV
|
262
|
-
oo = Csv.new(File.join(TESTDIR,"numbers1.csv"))
|
263
|
-
assert_kind_of Csv, oo
|
121
|
+
oo = Roo::Csv.new(File.join(TESTDIR,"numbers1.csv"))
|
122
|
+
assert_kind_of Roo::Csv, oo
|
264
123
|
end
|
265
124
|
end
|
266
125
|
|
267
|
-
def test_letters
|
268
|
-
assert_equal 1, GenericSpreadsheet.letter_to_number('A')
|
269
|
-
assert_equal 1, GenericSpreadsheet.letter_to_number('a')
|
270
|
-
assert_equal 2, GenericSpreadsheet.letter_to_number('B')
|
271
|
-
assert_equal 26, GenericSpreadsheet.letter_to_number('Z')
|
272
|
-
assert_equal 27, GenericSpreadsheet.letter_to_number('AA')
|
273
|
-
assert_equal 27, GenericSpreadsheet.letter_to_number('aA')
|
274
|
-
assert_equal 27, GenericSpreadsheet.letter_to_number('Aa')
|
275
|
-
assert_equal 27, GenericSpreadsheet.letter_to_number('aa')
|
276
|
-
end
|
277
|
-
|
278
126
|
def test_sheets_csv
|
279
127
|
if CSV
|
280
|
-
oo = Csv.new(File.join(TESTDIR,'numbers1.csv'))
|
128
|
+
oo = Roo::Csv.new(File.join(TESTDIR,'numbers1.csv'))
|
281
129
|
assert_equal ["default"], oo.sheets
|
282
130
|
assert_raise(RangeError) { oo.default_sheet = "no_sheet" }
|
283
131
|
assert_raise(TypeError) { oo.default_sheet = [1,2,3] }
|
@@ -317,7 +165,7 @@ class TestRoo < Test::Unit::TestCase
|
|
317
165
|
assert_equal "test", oo.cell(2,6)
|
318
166
|
assert_equal :string, oo.celltype(2,6)
|
319
167
|
assert_equal 11, oo.cell(2,7)
|
320
|
-
unless oo.kind_of? Csv
|
168
|
+
unless oo.kind_of? Roo::Csv
|
321
169
|
assert_equal :float, oo.celltype(2,7)
|
322
170
|
end
|
323
171
|
assert_equal 10, oo.cell(4,1)
|
@@ -330,14 +178,14 @@ class TestRoo < Test::Unit::TestCase
|
|
330
178
|
assert_equal 12, oo.cell(4,'C')
|
331
179
|
assert_equal 13, oo.cell(4,'D')
|
332
180
|
assert_equal 14, oo.cell(4,'E')
|
333
|
-
unless oo.kind_of? Csv
|
181
|
+
unless oo.kind_of? Roo::Csv
|
334
182
|
assert_equal :date, oo.celltype(5,1)
|
335
183
|
assert_equal Date.new(1961,11,21), oo.cell(5,1)
|
336
184
|
assert_equal "1961-11-21", oo.cell(5,1).to_s
|
337
185
|
end
|
338
186
|
end
|
339
187
|
end
|
340
|
-
|
188
|
+
|
341
189
|
def test_celltype
|
342
190
|
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
343
191
|
assert_equal :string, oo.celltype(2,6)
|
@@ -371,118 +219,35 @@ class TestRoo < Test::Unit::TestCase
|
|
371
219
|
|
372
220
|
def test_libre_office
|
373
221
|
if LIBREOFFICE
|
374
|
-
oo = Libreoffice.new("
|
222
|
+
oo = Roo::Libreoffice.new(File.join(TESTDIR, "numbers1.ods"))
|
375
223
|
oo.default_sheet = oo.sheets.first
|
376
224
|
assert_equal 41, oo.cell('a',12)
|
377
225
|
end
|
378
226
|
end
|
379
227
|
|
380
|
-
#TODO: inkonsequente Lieferung Fixnum/Float
|
381
|
-
def test_rows
|
382
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
383
|
-
oo.default_sheet = oo.sheets.first
|
384
|
-
assert_equal 41, oo.cell('a',12)
|
385
|
-
assert_equal 42, oo.cell('b',12)
|
386
|
-
assert_equal 43, oo.cell('c',12)
|
387
|
-
assert_equal 44, oo.cell('d',12)
|
388
|
-
assert_equal 45, oo.cell('e',12)
|
389
|
-
assert_equal [41.0,42.0,43.0,44.0,45.0, nil, nil], oo.row(12)
|
390
|
-
assert_equal "einundvierzig", oo.cell('a',16)
|
391
|
-
assert_equal "zweiundvierzig", oo.cell('b',16)
|
392
|
-
assert_equal "dreiundvierzig", oo.cell('c',16)
|
393
|
-
assert_equal "vierundvierzig", oo.cell('d',16)
|
394
|
-
assert_equal "fuenfundvierzig", oo.cell('e',16)
|
395
|
-
assert_equal ["einundvierzig", "zweiundvierzig", "dreiundvierzig", "vierundvierzig", "fuenfundvierzig", nil, nil], oo.row(16)
|
396
|
-
end
|
397
|
-
end
|
398
|
-
|
399
|
-
def test_last_row
|
400
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
401
|
-
oo.default_sheet = oo.sheets.first
|
402
|
-
assert_equal 18, oo.last_row
|
403
|
-
end
|
404
|
-
end
|
405
|
-
|
406
|
-
def test_last_column
|
407
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
408
|
-
oo.default_sheet = oo.sheets.first
|
409
|
-
assert_equal 7, oo.last_column
|
410
|
-
end
|
411
|
-
end
|
412
|
-
|
413
|
-
def test_last_column_as_letter
|
414
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
415
|
-
oo.default_sheet = oo.sheets.first
|
416
|
-
assert_equal 'G', oo.last_column_as_letter
|
417
|
-
end
|
418
|
-
end
|
419
|
-
|
420
|
-
def test_first_row
|
421
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
422
|
-
oo.default_sheet = oo.sheets.first
|
423
|
-
assert_equal 1, oo.first_row
|
424
|
-
end
|
425
|
-
end
|
426
|
-
|
427
|
-
def test_first_column
|
428
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
429
|
-
oo.default_sheet = oo.sheets.first
|
430
|
-
assert_equal 1, oo.first_column
|
431
|
-
end
|
432
|
-
end
|
433
|
-
|
434
|
-
def test_first_column_as_letter
|
435
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
436
|
-
oo.default_sheet = oo.sheets.first
|
437
|
-
assert_equal 'A', oo.first_column_as_letter
|
438
|
-
end
|
439
|
-
end
|
440
|
-
|
441
228
|
def test_sheetname
|
442
229
|
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
443
230
|
oo.default_sheet = "Name of Sheet 2"
|
444
231
|
assert_equal 'I am sheet 2', oo.cell('C',5)
|
445
232
|
assert_raise(RangeError) { oo.default_sheet = "non existing sheet name" }
|
446
233
|
assert_raise(RangeError) { oo.default_sheet = "non existing sheet name" }
|
447
|
-
assert_raise(RangeError) {
|
448
|
-
assert_raise(RangeError) {
|
449
|
-
assert_raise(RangeError) {
|
450
|
-
if oo.class == Excel
|
451
|
-
assert_raise(RuntimeError) {
|
452
|
-
assert_raise(RuntimeError) {
|
234
|
+
assert_raise(RangeError) { oo.cell('C',5,"non existing sheet name")}
|
235
|
+
assert_raise(RangeError) { oo.celltype('C',5,"non existing sheet name")}
|
236
|
+
assert_raise(RangeError) { oo.empty?('C',5,"non existing sheet name")}
|
237
|
+
if oo.class == Roo::Excel
|
238
|
+
assert_raise(RuntimeError) { oo.formula?('C',5,"non existing sheet name")}
|
239
|
+
assert_raise(RuntimeError) { oo.formula('C',5,"non existing sheet name")}
|
453
240
|
else
|
454
|
-
assert_raise(RangeError) {
|
455
|
-
assert_raise(RangeError) {
|
241
|
+
assert_raise(RangeError) { oo.formula?('C',5,"non existing sheet name")}
|
242
|
+
assert_raise(RangeError) { oo.formula('C',5,"non existing sheet name")}
|
456
243
|
begin
|
457
|
-
assert_raise(RangeError) {
|
244
|
+
assert_raise(RangeError) { oo.set('C',5,42,"non existing sheet name")}
|
458
245
|
rescue NameError
|
459
246
|
#
|
460
247
|
end
|
461
|
-
assert_raise(RangeError) {
|
248
|
+
assert_raise(RangeError) { oo.formulas("non existing sheet name")}
|
462
249
|
end
|
463
|
-
assert_raise(RangeError) {
|
464
|
-
end
|
465
|
-
end
|
466
|
-
|
467
|
-
def test_boundaries
|
468
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
469
|
-
oo.default_sheet = "Name of Sheet 2"
|
470
|
-
assert_equal 2, oo.first_column
|
471
|
-
assert_equal 'B', oo.first_column_as_letter
|
472
|
-
assert_equal 5, oo.first_row
|
473
|
-
assert_equal 'E', oo.last_column_as_letter
|
474
|
-
assert_equal 14, oo.last_row
|
475
|
-
end
|
476
|
-
end
|
477
|
-
|
478
|
-
def test_multiple_letters
|
479
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
480
|
-
oo.default_sheet = "Sheet3"
|
481
|
-
assert_equal "i am AA", oo.cell('AA',1)
|
482
|
-
assert_equal "i am AB", oo.cell('AB',1)
|
483
|
-
assert_equal "i am BA", oo.cell('BA',1)
|
484
|
-
assert_equal 'BA', oo.last_column_as_letter
|
485
|
-
assert_equal "i am BA", oo.cell(1,'BA')
|
250
|
+
assert_raise(RangeError) { oo.to_yaml({},1,1,1,1,"non existing sheet name")}
|
486
251
|
end
|
487
252
|
end
|
488
253
|
|
@@ -492,23 +257,6 @@ class TestRoo < Test::Unit::TestCase
|
|
492
257
|
end
|
493
258
|
end
|
494
259
|
|
495
|
-
def test_empty_eh
|
496
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
497
|
-
assert oo.empty?('a',14)
|
498
|
-
assert ! oo.empty?('a',15)
|
499
|
-
assert oo.empty?('a',20)
|
500
|
-
end
|
501
|
-
end
|
502
|
-
|
503
|
-
def test_reload
|
504
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
505
|
-
oo.default_sheet = oo.sheets.first
|
506
|
-
assert_equal 1, oo.cell(1,1)
|
507
|
-
oo.reload
|
508
|
-
assert_equal 1, oo.cell(1,1)
|
509
|
-
end
|
510
|
-
end
|
511
|
-
|
512
260
|
def test_bug_contiguous_cells
|
513
261
|
with_each_spreadsheet(:name=>'numbers1', :format=>:openoffice) do |oo|
|
514
262
|
oo.default_sheet = "Sheet4"
|
@@ -571,7 +319,7 @@ class TestRoo < Test::Unit::TestCase
|
|
571
319
|
assert_equal "A:string",oo.cell(4, 3)+":"+oo.celltype(4, 3).to_s
|
572
320
|
|
573
321
|
# Cells values in row 5:
|
574
|
-
if oo.class == Openoffice
|
322
|
+
if oo.class == Roo::Openoffice
|
575
323
|
assert_equal "0.01:percentage",oo.cell(5, 1).to_s+":"+oo.celltype(5, 1).to_s
|
576
324
|
assert_equal "0.01:percentage",oo.cell(5, 2).to_s+":"+oo.celltype(5, 2).to_s
|
577
325
|
assert_equal "0.01:percentage",oo.cell(5, 3).to_s+":"+oo.celltype(5, 3).to_s
|
@@ -683,7 +431,7 @@ class TestRoo < Test::Unit::TestCase
|
|
683
431
|
assert_equal 42.5, oo.cell('A',17)
|
684
432
|
end
|
685
433
|
end
|
686
|
-
|
434
|
+
|
687
435
|
# Excel can only read the cell's value
|
688
436
|
def test_formula_excel
|
689
437
|
with_each_spreadsheet(:name=>'formula', :format=>:excel) do |oo|
|
@@ -692,7 +440,6 @@ class TestRoo < Test::Unit::TestCase
|
|
692
440
|
end
|
693
441
|
end
|
694
442
|
|
695
|
-
|
696
443
|
def test_borders_sheets
|
697
444
|
with_each_spreadsheet(:name=>'borders') do |oo|
|
698
445
|
oo.default_sheet = oo.sheets[1]
|
@@ -715,33 +462,6 @@ class TestRoo < Test::Unit::TestCase
|
|
715
462
|
end
|
716
463
|
end
|
717
464
|
|
718
|
-
def yaml_entry(row,col,type,value)
|
719
|
-
"cell_#{row}_#{col}: \n row: #{row} \n col: #{col} \n celltype: #{type} \n value: #{value} \n"
|
720
|
-
end
|
721
|
-
|
722
|
-
def test_to_yaml
|
723
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
724
|
-
oo.default_sheet = oo.sheets.first
|
725
|
-
assert_equal "--- \n"+yaml_entry(5,1,"date","1961-11-21"), oo.to_yaml({}, 5,1,5,1)
|
726
|
-
assert_equal "--- \n"+yaml_entry(8,3,"string","thisisc8"), oo.to_yaml({}, 8,3,8,3)
|
727
|
-
assert_equal "--- \n"+yaml_entry(12,3,"float",43.0), oo.to_yaml({}, 12,3,12,3)
|
728
|
-
assert_equal \
|
729
|
-
"--- \n"+yaml_entry(12,3,"float",43.0) +
|
730
|
-
yaml_entry(12,4,"float",44.0) +
|
731
|
-
yaml_entry(12,5,"float",45.0), oo.to_yaml({}, 12,3,12)
|
732
|
-
assert_equal \
|
733
|
-
"--- \n"+yaml_entry(12,3,"float",43.0)+
|
734
|
-
yaml_entry(12,4,"float",44.0)+
|
735
|
-
yaml_entry(12,5,"float",45.0)+
|
736
|
-
yaml_entry(15,3,"float",43.0)+
|
737
|
-
yaml_entry(15,4,"float",44.0)+
|
738
|
-
yaml_entry(15,5,"float",45.0)+
|
739
|
-
yaml_entry(16,3,"string","dreiundvierzig")+
|
740
|
-
yaml_entry(16,4,"string","vierundvierzig")+
|
741
|
-
yaml_entry(16,5,"string","fuenfundvierzig"), oo.to_yaml({}, 12,3)
|
742
|
-
end
|
743
|
-
end
|
744
|
-
|
745
465
|
def test_only_one_sheet
|
746
466
|
with_each_spreadsheet(:name=>'only_one_sheet') do |oo|
|
747
467
|
assert_equal 42, oo.cell('B',4)
|
@@ -757,12 +477,10 @@ class TestRoo < Test::Unit::TestCase
|
|
757
477
|
def test_excel_open_from_uri_and_zipped
|
758
478
|
if EXCEL
|
759
479
|
if ONLINE
|
760
|
-
|
761
|
-
|
762
|
-
|
763
|
-
|
764
|
-
assert_equal 'ist "e" im Nenner von H(s)', excel.cell('b', 5)
|
765
|
-
end
|
480
|
+
url = 'http://stiny-leonhard.de/bode-v1.xls.zip'
|
481
|
+
excel = Roo::Excel.new(url, :zip)
|
482
|
+
excel.default_sheet = excel.sheets.first
|
483
|
+
assert_equal 'ist "e" im Nenner von H(s)', excel.cell('b', 5)
|
766
484
|
end
|
767
485
|
end
|
768
486
|
end
|
@@ -770,38 +488,26 @@ class TestRoo < Test::Unit::TestCase
|
|
770
488
|
def test_openoffice_open_from_uri_and_zipped
|
771
489
|
if OPENOFFICE
|
772
490
|
if ONLINE
|
773
|
-
|
774
|
-
|
775
|
-
|
776
|
-
|
777
|
-
assert_in_delta 0.001, 505.14, sheet.cell('c', 33).to_f
|
778
|
-
end
|
491
|
+
url = 'http://spazioinwind.libero.it/s2/rata.ods.zip'
|
492
|
+
sheet = Roo::Openoffice.new(url, :zip)
|
493
|
+
#has been changed: assert_equal 'ist "e" im Nenner von H(s)', sheet.cell('b', 5)
|
494
|
+
assert_in_delta 0.001, 505.14, sheet.cell('c', 33).to_f
|
779
495
|
end
|
780
496
|
end
|
781
497
|
end
|
782
498
|
|
783
499
|
def test_excel_zipped
|
784
|
-
|
785
|
-
|
786
|
-
|
787
|
-
|
788
|
-
das spreadsheet gem die Datei nicht schliesst.
|
789
|
-
Fehler von spreadsheet gem'
|
790
|
-
end
|
791
|
-
if EXCEL
|
792
|
-
begin
|
793
|
-
oo = Excel.new(File.join(TESTDIR,"bode-v1.xls.zip"), :zip)
|
794
|
-
assert oo
|
795
|
-
assert_equal 'ist "e" im Nenner von H(s)', oo.cell('b', 5)
|
796
|
-
end
|
797
|
-
end
|
500
|
+
if EXCEL
|
501
|
+
oo = Roo::Excel.new(File.join(TESTDIR,"bode-v1.xls.zip"), :zip)
|
502
|
+
assert oo
|
503
|
+
assert_equal 'ist "e" im Nenner von H(s)', oo.cell('b', 5)
|
798
504
|
end
|
799
505
|
end
|
800
506
|
|
801
507
|
def test_openoffice_zipped
|
802
508
|
if OPENOFFICE
|
803
509
|
begin
|
804
|
-
oo = Openoffice.new(File.join(TESTDIR,"bode-v1.ods.zip"), :zip)
|
510
|
+
oo = Roo::Openoffice.new(File.join(TESTDIR,"bode-v1.ods.zip"), :zip)
|
805
511
|
assert oo
|
806
512
|
assert_equal 'ist "e" im Nenner von H(s)', oo.cell('b', 5)
|
807
513
|
end
|
@@ -859,52 +565,38 @@ class TestRoo < Test::Unit::TestCase
|
|
859
565
|
end
|
860
566
|
#if EXCELX
|
861
567
|
# #Datei gibt es noch nicht
|
862
|
-
# oo = Excelx.new(File.join(TESTDIR,"Bibelbund1.xlsx"))
|
568
|
+
# oo = Roo::Excelx.new(File.join(TESTDIR,"Bibelbund1.xlsx"))
|
863
569
|
# oo.default_sheet = oo.sheets.first
|
864
570
|
# assert_equal "Tagebuch des Sekret\303\244rs. Letzte Tagung 15./16.11.75 Schweiz", oo.cell(45,'A')
|
865
571
|
#end
|
866
572
|
end
|
867
|
-
|
868
|
-
def tempdir
|
869
|
-
Dir::tmpdir
|
870
|
-
end
|
871
573
|
|
872
574
|
# "/tmp/xxxx" darf man unter Windows nicht verwenden, weil das nicht erkannt
|
873
575
|
# wird.
|
874
576
|
# Besser: Methode um temporaeres Dir. portabel zu bestimmen
|
875
577
|
def test_huge_document_to_csv
|
876
578
|
if LONG_RUN
|
877
|
-
with_each_spreadsheet(:name=>'Bibelbund', :format=>[
|
878
|
-
|
879
|
-
|
880
|
-
|
881
|
-
|
882
|
-
|
883
|
-
|
884
|
-
|
885
|
-
|
886
|
-
|
887
|
-
|
888
|
-
|
889
|
-
|
890
|
-
|
891
|
-
#if running_windows?
|
892
|
-
# to do
|
893
|
-
# "diff is not available under windows"
|
894
|
-
# end
|
895
|
-
#else
|
896
|
-
# assert_equal "", `diff test/Bibelbund.csv /tmp/Bibelbund.csv`, "error in class #{oo.class}"
|
897
|
-
# assert_equal "", `diff test/Bibelbund.csv #{File.join(tempdir,"Bibelbund.csv")}`, "error in class #{oo.class}"
|
898
|
-
assert_equal "",
|
899
|
-
diff("test/Bibelbund.csv","#{File.join(tempdir,"Bibelbund.csv")}"),
|
579
|
+
with_each_spreadsheet(:name=>'Bibelbund', :format=>[
|
580
|
+
:openoffice,
|
581
|
+
:excel,
|
582
|
+
:excelx
|
583
|
+
# Google hier nicht, weil Google-Spreadsheets nicht so gross werden
|
584
|
+
# duerfen
|
585
|
+
]) do |oo|
|
586
|
+
Dir.mktmpdir do |tempdir|
|
587
|
+
assert_equal "Tagebuch des Sekret\303\244rs. Letzte Tagung 15./16.11.75 Schweiz", oo.cell(45,'A')
|
588
|
+
assert_equal "Tagebuch des Sekret\303\244rs. Nachrichten aus Chile", oo.cell(46,'A')
|
589
|
+
assert_equal "Tagebuch aus Chile Juli 1977", oo.cell(55,'A')
|
590
|
+
assert oo.to_csv(File.join(tempdir,"Bibelbund.csv"))
|
591
|
+
assert File.exists?(File.join(tempdir,"Bibelbund.csv"))
|
592
|
+
assert_equal "", file_diff(File.join(TESTDIR, "Bibelbund.csv"), File.join(tempdir,"Bibelbund.csv")),
|
900
593
|
"error in class #{oo.class}"
|
901
|
-
|
902
|
-
|
903
|
-
}
|
594
|
+
#end
|
595
|
+
end
|
904
596
|
end
|
905
597
|
end
|
906
598
|
end
|
907
|
-
|
599
|
+
|
908
600
|
def test_bug_quotes_excelx
|
909
601
|
if LONG_RUN
|
910
602
|
with_each_spreadsheet(:name=>'Bibelbund', :format=>[:openoffice,
|
@@ -913,7 +605,7 @@ class TestRoo < Test::Unit::TestCase
|
|
913
605
|
oo.default_sheet = oo.sheets.first
|
914
606
|
assert_equal 'Einflüsse der neuen Theologie in "de gereformeerde Kerken van Nederland"',
|
915
607
|
oo.cell('a',76)
|
916
|
-
|
608
|
+
oo.to_csv("csv#{$$}")
|
917
609
|
assert_equal 'Einflüsse der neuen Theologie in "de gereformeerde Kerken van Nederland"',
|
918
610
|
oo.cell('a',78)
|
919
611
|
File.delete_if_exist("csv#{$$}")
|
@@ -921,23 +613,6 @@ class TestRoo < Test::Unit::TestCase
|
|
921
613
|
end
|
922
614
|
end
|
923
615
|
|
924
|
-
def test_to_csv
|
925
|
-
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
926
|
-
master = "#{TESTDIR}/numbers1.csv"
|
927
|
-
File.delete_if_exist(File.join(tempdir,"numbers1.csv"))
|
928
|
-
assert oo.to_csv(File.join(tempdir,"numbers1.csv"),oo.sheets.first)
|
929
|
-
assert(File.exists?(File.join(tempdir,"numbers1.csv")), "Datei #{tempdir}/numbers1.csv existiert nicht")
|
930
|
-
if running_windows?
|
931
|
-
warn "no 'diff' in windows"
|
932
|
-
else
|
933
|
-
assert_equal "", `diff #{master} #{File.join(tempdir,"numbers1.csv")}`
|
934
|
-
assert oo.to_csv(File.join(tempdir,"numbers1.csv"))
|
935
|
-
assert File.exists?(File.join(tempdir,"numbers1.csv"))
|
936
|
-
assert_equal "", `diff #{master} #{File.join(tempdir,"numbers1.csv")}`
|
937
|
-
end
|
938
|
-
end
|
939
|
-
end
|
940
|
-
|
941
616
|
def test_bug_mehrere_datum
|
942
617
|
with_each_spreadsheet(:name=>'numbers1') do |oo|
|
943
618
|
oo.default_sheet = 'Sheet5'
|
@@ -1021,8 +696,10 @@ class TestRoo < Test::Unit::TestCase
|
|
1021
696
|
def test_bug_empty_sheet
|
1022
697
|
with_each_spreadsheet(:name=>'formula', :format=>[:openoffice, :excelx]) do |oo|
|
1023
698
|
oo.default_sheet = 'Sheet3' # is an empty sheet
|
1024
|
-
|
1025
|
-
|
699
|
+
Dir.mktmpdir do |tempdir|
|
700
|
+
assert_nothing_raised() { oo.to_csv(File.join(tempdir,"emptysheet.csv")) }
|
701
|
+
assert_equal "", `cat #{File.join(tempdir,"emptysheet.csv")}`
|
702
|
+
end
|
1026
703
|
end
|
1027
704
|
end
|
1028
705
|
|
@@ -1031,18 +708,16 @@ class TestRoo < Test::Unit::TestCase
|
|
1031
708
|
with_each_spreadsheet(:name=>'Bibelbund', :format=>[:openoffice,
|
1032
709
|
:excel,
|
1033
710
|
:excelx]) do |oo|
|
1034
|
-
|
1035
|
-
|
1036
|
-
|
1037
|
-
|
1038
|
-
|
1039
|
-
|
1040
|
-
|
1041
|
-
|
1042
|
-
|
1043
|
-
|
1044
|
-
assert_equal "Brief aus dem Skretariat. Tagung in Amberg/Opf.",rec[0]['TITEL']
|
1045
|
-
end
|
711
|
+
oo.default_sheet = oo.sheets.first
|
712
|
+
rec = oo.find 20
|
713
|
+
assert rec
|
714
|
+
# assert_equal "Brief aus dem Sekretariat", rec[0]
|
715
|
+
#p rec
|
716
|
+
assert_equal "Brief aus dem Sekretariat", rec[0]['TITEL']
|
717
|
+
rec = oo.find 22
|
718
|
+
assert rec
|
719
|
+
# assert_equal "Brief aus dem Skretariat. Tagung in Amberg/Opf.",rec[0]
|
720
|
+
assert_equal "Brief aus dem Skretariat. Tagung in Amberg/Opf.",rec[0]['TITEL']
|
1046
721
|
end
|
1047
722
|
end
|
1048
723
|
end
|
@@ -1067,90 +742,86 @@ class TestRoo < Test::Unit::TestCase
|
|
1067
742
|
with_each_spreadsheet(:name=>'Bibelbund', :format=>[:openoffice,
|
1068
743
|
:excel,
|
1069
744
|
:excelx]) do |oo|
|
1070
|
-
|
1071
|
-
|
1072
|
-
|
1073
|
-
|
1074
|
-
|
1075
|
-
|
1076
|
-
|
1077
|
-
|
1078
|
-
|
1079
|
-
|
1080
|
-
|
1081
|
-
|
1082
|
-
|
1083
|
-
|
1084
|
-
|
1085
|
-
|
1086
|
-
|
1087
|
-
|
1088
|
-
|
1089
|
-
|
1090
|
-
|
1091
|
-
|
1092
|
-
|
1093
|
-
|
1094
|
-
|
1095
|
-
|
1096
|
-
|
1097
|
-
|
1098
|
-
|
1099
|
-
|
1100
|
-
|
1101
|
-
|
1102
|
-
|
1103
|
-
|
1104
|
-
|
1105
|
-
|
1106
|
-
|
1107
|
-
|
1108
|
-
|
1109
|
-
|
1110
|
-
|
1111
|
-
|
1112
|
-
|
1113
|
-
|
1114
|
-
|
1115
|
-
|
1116
|
-
|
1117
|
-
|
1118
|
-
|
1119
|
-
|
1120
|
-
|
1121
|
-
|
1122
|
-
|
1123
|
-
|
1124
|
-
|
1125
|
-
|
1126
|
-
|
1127
|
-
|
1128
|
-
|
1129
|
-
|
1130
|
-
|
1131
|
-
|
1132
|
-
|
1133
|
-
|
1134
|
-
|
1135
|
-
|
1136
|
-
|
1137
|
-
|
1138
|
-
|
1139
|
-
|
1140
|
-
|
1141
|
-
|
1142
|
-
|
1143
|
-
|
1144
|
-
|
1145
|
-
|
1146
|
-
|
1147
|
-
|
1148
|
-
|
1149
|
-
|
1150
|
-
"Aus dem Bibelbund",
|
1151
|
-
]] , zeilen
|
1152
|
-
end # Timeout
|
1153
|
-
} # nothing_raised
|
745
|
+
#-----------------------------------------------------------------
|
746
|
+
zeilen = oo.find(:all, :conditions => {
|
747
|
+
'TITEL' => 'Brief aus dem Sekretariat'
|
748
|
+
}
|
749
|
+
)
|
750
|
+
assert_equal 2, zeilen.size
|
751
|
+
assert_equal [{"VERFASSER"=>"Almassy, Annelene von",
|
752
|
+
"INTERNET"=>nil,
|
753
|
+
"SEITE"=>316.0,
|
754
|
+
"KENNUNG"=>"Aus dem Bibelbund",
|
755
|
+
"OBJEKT"=>"Bibel+Gem",
|
756
|
+
"PC"=>"#C:\\Bibelbund\\reprint\\BuG1982-3.pdf#",
|
757
|
+
"NUMMER"=>"1982-3",
|
758
|
+
"TITEL"=>"Brief aus dem Sekretariat"},
|
759
|
+
{"VERFASSER"=>"Almassy, Annelene von",
|
760
|
+
"INTERNET"=>nil,
|
761
|
+
"SEITE"=>222.0,
|
762
|
+
"KENNUNG"=>"Aus dem Bibelbund",
|
763
|
+
"OBJEKT"=>"Bibel+Gem",
|
764
|
+
"PC"=>"#C:\\Bibelbund\\reprint\\BuG1983-2.pdf#",
|
765
|
+
"NUMMER"=>"1983-2",
|
766
|
+
"TITEL"=>"Brief aus dem Sekretariat"}] , zeilen
|
767
|
+
|
768
|
+
#----------------------------------------------------------
|
769
|
+
zeilen = oo.find(:all,
|
770
|
+
:conditions => { 'VERFASSER' => 'Almassy, Annelene von' }
|
771
|
+
)
|
772
|
+
assert_equal 13, zeilen.size
|
773
|
+
#----------------------------------------------------------
|
774
|
+
zeilen = oo.find(:all, :conditions => {
|
775
|
+
'TITEL' => 'Brief aus dem Sekretariat',
|
776
|
+
'VERFASSER' => 'Almassy, Annelene von',
|
777
|
+
}
|
778
|
+
)
|
779
|
+
assert_equal 2, zeilen.size
|
780
|
+
assert_equal [{"VERFASSER"=>"Almassy, Annelene von",
|
781
|
+
"INTERNET"=>nil,
|
782
|
+
"SEITE"=>316.0,
|
783
|
+
"KENNUNG"=>"Aus dem Bibelbund",
|
784
|
+
"OBJEKT"=>"Bibel+Gem",
|
785
|
+
"PC"=>"#C:\\Bibelbund\\reprint\\BuG1982-3.pdf#",
|
786
|
+
"NUMMER"=>"1982-3",
|
787
|
+
"TITEL"=>"Brief aus dem Sekretariat"},
|
788
|
+
{"VERFASSER"=>"Almassy, Annelene von",
|
789
|
+
"INTERNET"=>nil,
|
790
|
+
"SEITE"=>222.0,
|
791
|
+
"KENNUNG"=>"Aus dem Bibelbund",
|
792
|
+
"OBJEKT"=>"Bibel+Gem",
|
793
|
+
"PC"=>"#C:\\Bibelbund\\reprint\\BuG1983-2.pdf#",
|
794
|
+
"NUMMER"=>"1983-2",
|
795
|
+
"TITEL"=>"Brief aus dem Sekretariat"}] , zeilen
|
796
|
+
|
797
|
+
# Result as an array
|
798
|
+
zeilen = oo.find(:all,
|
799
|
+
:conditions => {
|
800
|
+
'TITEL' => 'Brief aus dem Sekretariat',
|
801
|
+
'VERFASSER' => 'Almassy, Annelene von',
|
802
|
+
}, :array => true)
|
803
|
+
assert_equal 2, zeilen.size
|
804
|
+
assert_equal [
|
805
|
+
[
|
806
|
+
"Brief aus dem Sekretariat",
|
807
|
+
"Almassy, Annelene von",
|
808
|
+
"Bibel+Gem",
|
809
|
+
"1982-3",
|
810
|
+
316.0,
|
811
|
+
nil,
|
812
|
+
"#C:\\Bibelbund\\reprint\\BuG1982-3.pdf#",
|
813
|
+
"Aus dem Bibelbund",
|
814
|
+
],
|
815
|
+
[
|
816
|
+
"Brief aus dem Sekretariat",
|
817
|
+
"Almassy, Annelene von",
|
818
|
+
"Bibel+Gem",
|
819
|
+
"1983-2",
|
820
|
+
222.0,
|
821
|
+
nil,
|
822
|
+
"#C:\\Bibelbund\\reprint\\BuG1983-2.pdf#",
|
823
|
+
"Aus dem Bibelbund",
|
824
|
+
]] , zeilen
|
1154
825
|
end
|
1155
826
|
end
|
1156
827
|
end
|
@@ -1183,13 +854,9 @@ class TestRoo < Test::Unit::TestCase
|
|
1183
854
|
with_each_spreadsheet(:name=>'Bibelbund', :format=>[:openoffice,
|
1184
855
|
:excel,
|
1185
856
|
:excelx]) do |oo|
|
1186
|
-
|
1187
|
-
|
1188
|
-
|
1189
|
-
assert_equal 3735, oo.column('a').size
|
1190
|
-
#assert_equal 499, oo.column('a').size
|
1191
|
-
end
|
1192
|
-
}
|
857
|
+
oo.default_sheet = oo.sheets.first
|
858
|
+
assert_equal 3735, oo.column('a').size
|
859
|
+
#assert_equal 499, oo.column('a').size
|
1193
860
|
end
|
1194
861
|
end
|
1195
862
|
end
|
@@ -1203,11 +870,11 @@ class TestRoo < Test::Unit::TestCase
|
|
1203
870
|
assert_equal 10.75 , erg[1]['Start time']
|
1204
871
|
assert_equal 12.50 , erg[1]['End time']
|
1205
872
|
assert_equal 0 , erg[1]['Pause']
|
1206
|
-
assert_equal 1.75 , erg[1]['Sum'] unless oo.class == Excel
|
873
|
+
assert_equal 1.75 , erg[1]['Sum'] unless oo.class == Roo::Excel
|
1207
874
|
assert_equal "Task 1" , erg[1]['Comment']
|
1208
875
|
end
|
1209
876
|
end
|
1210
|
-
|
877
|
+
|
1211
878
|
# Ruby-spreadsheet now allows us to at least give the current value
|
1212
879
|
# from a cell with a formula (no possible with parseexcel)
|
1213
880
|
def test_bug_false_borders_with_formulas
|
@@ -1248,25 +915,25 @@ class TestRoo < Test::Unit::TestCase
|
|
1248
915
|
|
1249
916
|
def test_excel_does_not_support_formulas
|
1250
917
|
with_each_spreadsheet(:name=>'false_encoding', :format=>:excel) do |oo|
|
1251
|
-
assert_raise(RuntimeError) {
|
1252
|
-
assert_raise(RuntimeError) {
|
1253
|
-
assert_raise(RuntimeError) {
|
918
|
+
assert_raise(RuntimeError) { oo.formula('a',1) }
|
919
|
+
assert_raise(RuntimeError) { oo.formula?('a',1) }
|
920
|
+
assert_raise(RuntimeError) { oo.formulas(oo.sheets.first) }
|
1254
921
|
end
|
1255
922
|
end
|
1256
923
|
|
1257
924
|
def get_extension(oo)
|
1258
925
|
case oo
|
1259
|
-
when Openoffice
|
926
|
+
when Roo::Openoffice
|
1260
927
|
".ods"
|
1261
|
-
when Excel
|
928
|
+
when Roo::Excel
|
1262
929
|
".xls"
|
1263
|
-
when Excelx
|
930
|
+
when Roo::Excelx
|
1264
931
|
".xlsx"
|
1265
|
-
when Google
|
932
|
+
when Roo::Google
|
1266
933
|
""
|
1267
934
|
end
|
1268
935
|
end
|
1269
|
-
|
936
|
+
|
1270
937
|
def test_info
|
1271
938
|
expected_templ = "File: numbers1%s\n"+
|
1272
939
|
"Number of sheets: 5\n"+
|
@@ -1316,100 +983,98 @@ class TestRoo < Test::Unit::TestCase
|
|
1316
983
|
oo.default_sheet = "Tabelle1"
|
1317
984
|
assert_equal 1, oo.first_row
|
1318
985
|
assert_equal 18, oo.last_row
|
1319
|
-
assert_equal Openoffice.letter_to_number('A'), oo.first_column
|
1320
|
-
assert_equal Openoffice.letter_to_number('G'), oo.last_column
|
986
|
+
assert_equal Roo::Openoffice.letter_to_number('A'), oo.first_column
|
987
|
+
assert_equal Roo::Openoffice.letter_to_number('G'), oo.last_column
|
1321
988
|
oo.default_sheet = "Name of Sheet 2"
|
1322
989
|
assert_equal 5, oo.first_row
|
1323
990
|
assert_equal 14, oo.last_row
|
1324
|
-
assert_equal Openoffice.letter_to_number('B'), oo.first_column
|
1325
|
-
assert_equal Openoffice.letter_to_number('E'), oo.last_column
|
991
|
+
assert_equal Roo::Openoffice.letter_to_number('B'), oo.first_column
|
992
|
+
assert_equal Roo::Openoffice.letter_to_number('E'), oo.last_column
|
1326
993
|
oo.default_sheet = "Sheet3"
|
1327
994
|
assert_equal 1, oo.first_row
|
1328
995
|
assert_equal 1, oo.last_row
|
1329
|
-
assert_equal Openoffice.letter_to_number('A'), oo.first_column
|
1330
|
-
assert_equal Openoffice.letter_to_number('BA'), oo.last_column
|
996
|
+
assert_equal Roo::Openoffice.letter_to_number('A'), oo.first_column
|
997
|
+
assert_equal Roo::Openoffice.letter_to_number('BA'), oo.last_column
|
1331
998
|
oo.default_sheet = "Sheet4"
|
1332
999
|
assert_equal 1, oo.first_row
|
1333
1000
|
assert_equal 1, oo.last_row
|
1334
|
-
assert_equal Openoffice.letter_to_number('A'), oo.first_column
|
1335
|
-
assert_equal Openoffice.letter_to_number('E'), oo.last_column
|
1001
|
+
assert_equal Roo::Openoffice.letter_to_number('A'), oo.first_column
|
1002
|
+
assert_equal Roo::Openoffice.letter_to_number('E'), oo.last_column
|
1336
1003
|
oo.default_sheet = "Sheet5"
|
1337
1004
|
assert_equal 1, oo.first_row
|
1338
1005
|
assert_equal 6, oo.last_row
|
1339
|
-
assert_equal Openoffice.letter_to_number('A'), oo.first_column
|
1340
|
-
assert_equal Openoffice.letter_to_number('E'), oo.last_column
|
1006
|
+
assert_equal Roo::Openoffice.letter_to_number('A'), oo.first_column
|
1007
|
+
assert_equal Roo::Openoffice.letter_to_number('E'), oo.last_column
|
1341
1008
|
end
|
1342
1009
|
end
|
1343
1010
|
|
1344
1011
|
def test_should_raise_file_not_found_error
|
1345
1012
|
if OPENOFFICE
|
1346
1013
|
assert_raise(IOError) {
|
1347
|
-
|
1014
|
+
Roo::Openoffice.new(File.join('testnichtvorhanden','Bibelbund.ods'))
|
1348
1015
|
}
|
1349
1016
|
end
|
1350
1017
|
if EXCEL
|
1351
1018
|
assert_raise(IOError) {
|
1352
|
-
|
1019
|
+
Roo::Excel.new(File.join('testnichtvorhanden','Bibelbund.xls'))
|
1353
1020
|
}
|
1354
1021
|
end
|
1355
1022
|
if EXCELX
|
1356
1023
|
assert_raise(IOError) {
|
1357
|
-
|
1024
|
+
Roo::Excelx.new(File.join('testnichtvorhanden','Bibelbund.xlsx'))
|
1358
1025
|
}
|
1359
1026
|
end
|
1360
1027
|
if GOOGLE
|
1361
|
-
#
|
1362
|
-
#
|
1363
|
-
#
|
1364
|
-
#
|
1028
|
+
# assert_raise(Net::HTTPServerException) {
|
1029
|
+
# Google.new(key_of('testnichtvorhanden'+'Bibelbund.ods'))
|
1030
|
+
# Google.new('testnichtvorhanden')
|
1031
|
+
# }
|
1365
1032
|
end
|
1366
1033
|
end
|
1367
|
-
|
1034
|
+
|
1368
1035
|
def test_write_google
|
1369
1036
|
# write.me: http://spreadsheets.google.com/ccc?key=ptu6bbahNZpY0N0RrxQbWdw&hl=en_GB
|
1370
1037
|
with_each_spreadsheet(:name=>'write.me', :format=>:google) do |oo|
|
1371
1038
|
oo.default_sheet = oo.sheets.first
|
1372
|
-
oo.
|
1039
|
+
oo.set(1,1,"hello from the tests")
|
1373
1040
|
assert_equal "hello from the tests", oo.cell(1,1)
|
1374
|
-
oo.
|
1041
|
+
oo.set(1,1, 1.0)
|
1375
1042
|
assert_equal 1.0, oo.cell(1,1)
|
1376
1043
|
end
|
1377
1044
|
end
|
1378
1045
|
|
1379
|
-
def
|
1046
|
+
def test_bug_set_with_more_than_one_sheet_google
|
1380
1047
|
# write.me: http://spreadsheets.google.com/ccc?key=ptu6bbahNZpY0N0RrxQbWdw&hl=en_GB
|
1381
|
-
|
1382
|
-
|
1383
|
-
|
1384
|
-
|
1385
|
-
|
1386
|
-
|
1387
|
-
|
1388
|
-
|
1389
|
-
|
1390
|
-
|
1391
|
-
|
1392
|
-
assert_equal content2, oo.cell(1,1)
|
1393
|
-
end
|
1048
|
+
with_each_spreadsheet(:name=>'write.me', :format=>:google) do |oo|
|
1049
|
+
content1 = 'AAA'
|
1050
|
+
content2 = 'BBB'
|
1051
|
+
oo.default_sheet = oo.sheets.first
|
1052
|
+
oo.set(1,1,content1)
|
1053
|
+
oo.default_sheet = oo.sheets[1]
|
1054
|
+
oo.set(1,1,content2) # in the second sheet
|
1055
|
+
oo.default_sheet = oo.sheets.first
|
1056
|
+
assert_equal content1, oo.cell(1,1)
|
1057
|
+
oo.default_sheet = oo.sheets[1]
|
1058
|
+
assert_equal content2, oo.cell(1,1)
|
1394
1059
|
end
|
1395
1060
|
end
|
1396
1061
|
|
1397
|
-
def
|
1062
|
+
def test_set_with_sheet_argument_google
|
1398
1063
|
with_each_spreadsheet(:name=>'write.me', :format=>:google) do |oo|
|
1399
1064
|
random_row = rand(10)+1
|
1400
1065
|
random_column = rand(10)+1
|
1401
1066
|
content1 = 'ABC'
|
1402
1067
|
content2 = 'DEF'
|
1403
|
-
oo.
|
1404
|
-
oo.
|
1068
|
+
oo.set(random_row,random_column,content1,oo.sheets.first)
|
1069
|
+
oo.set(random_row,random_column,content2,oo.sheets[1])
|
1405
1070
|
assert_equal content1, oo.cell(random_row,random_column,oo.sheets.first)
|
1406
1071
|
assert_equal content2, oo.cell(random_row,random_column,oo.sheets[1])
|
1407
1072
|
end
|
1408
1073
|
end
|
1409
1074
|
|
1410
|
-
def
|
1075
|
+
def test_set_for_non_existing_sheet_google
|
1411
1076
|
with_each_spreadsheet(:name=>'ptu6bbahNZpY0N0RrxQbWdw', :format=>:google) do |oo|
|
1412
|
-
assert_raise(RangeError) { oo.
|
1077
|
+
assert_raise(RangeError) { oo.set(1,1,"dummy","no_sheet") }
|
1413
1078
|
end
|
1414
1079
|
end
|
1415
1080
|
|
@@ -1452,15 +1117,13 @@ Sheet 3:
|
|
1452
1117
|
|
1453
1118
|
def test_date_time_to_csv
|
1454
1119
|
with_each_spreadsheet(:name=>'time-test') do |oo|
|
1455
|
-
|
1120
|
+
Dir.mktmpdir do |tempdir|
|
1456
1121
|
csv_output = File.join(tempdir,'time_test.csv')
|
1457
1122
|
assert oo.to_csv(csv_output)
|
1458
1123
|
assert File.exists?(csv_output)
|
1459
1124
|
assert_equal "", `diff --strip-trailing-cr #{TESTDIR}/time-test.csv #{csv_output}`
|
1460
1125
|
# --strip-trailing-cr is needed because the test-file use 0A and
|
1461
1126
|
# the test on an windows box generates 0D 0A as line endings
|
1462
|
-
ensure
|
1463
|
-
File.delete_if_exist(csv_output)
|
1464
1127
|
end
|
1465
1128
|
end
|
1466
1129
|
end
|
@@ -1473,81 +1136,6 @@ Sheet 3:
|
|
1473
1136
|
end
|
1474
1137
|
end
|
1475
1138
|
|
1476
|
-
def test_no_remaining_tmp_files_openoffice
|
1477
|
-
after Date.new(2011,12,7) do
|
1478
|
-
# alles noch mal ueberarbeiten
|
1479
|
-
# temp. Directories sollten in diesem Fall ueberhaupt nicht
|
1480
|
-
# angelegt werden
|
1481
|
-
if OPENOFFICE
|
1482
|
-
assert_raise(Zip::ZipError) { #TODO: besseres Fehlerkriterium bei
|
1483
|
-
# oo = Openoffice.new(File.join(TESTDIR,"no_spreadsheet_file.txt"))
|
1484
|
-
# es soll absichtlich ein Abbruch provoziert werden, deshalb :ignore
|
1485
|
-
begin
|
1486
|
-
oo = Openoffice.new(File.join(TESTDIR,"no_spreadsheet_file.txt"),
|
1487
|
-
false,
|
1488
|
-
:ignore)
|
1489
|
-
rescue Zip::ZipError
|
1490
|
-
@tmp = Dir.glob(oo.tmpdir)
|
1491
|
-
raise
|
1492
|
-
end
|
1493
|
-
}
|
1494
|
-
assert @tmp.empty?, "temporay directory was not deleted"
|
1495
|
-
end
|
1496
|
-
end
|
1497
|
-
end
|
1498
|
-
|
1499
|
-
def test_no_remaining_tmp_files_excel
|
1500
|
-
after Date.new(2011,12,7) do
|
1501
|
-
# alles noch mal ueberarbeiten
|
1502
|
-
# temp. Directories sollten in diesem Fall ueberhaupt nicht
|
1503
|
-
# angelegt werden
|
1504
|
-
if EXCEL
|
1505
|
-
prev = Dir.glob(TMP_PREFIX)
|
1506
|
-
assert_raise(Ole::Storage::FormatError) {
|
1507
|
-
oo = Excel.new(File.join(TESTDIR,"no_spreadsheet_file.txt"),
|
1508
|
-
false,
|
1509
|
-
:ignore)
|
1510
|
-
}
|
1511
|
-
now = Dir.glob(TMP_PREFIX)
|
1512
|
-
assert (now-prev).empty?, "temporary directory not removed"
|
1513
|
-
end
|
1514
|
-
end
|
1515
|
-
end
|
1516
|
-
|
1517
|
-
def test_no_remaining_tmp_files_excelx
|
1518
|
-
after Date.new(2011,12,7) do
|
1519
|
-
# alles noch mal ueberarbeiten
|
1520
|
-
# temp. Directories sollten in diesem Fall ueberhaupt nicht
|
1521
|
-
# angelegt werden
|
1522
|
-
if EXCELX
|
1523
|
-
prev = Dir.glob(TMP_PREFIX)
|
1524
|
-
assert_raise(Zip::ZipError) { #TODO: besseres Fehlerkriterium bei
|
1525
|
-
# oo = Excelx.new(File.join(TESTDIR,"no_spreadsheet_file.txt"))
|
1526
|
-
# es soll absichtlich ein Abbruch provoziert werden, deshalb :ignore
|
1527
|
-
oo = Excelx.new(File.join(TESTDIR,"no_spreadsheet_file.txt"),
|
1528
|
-
false,
|
1529
|
-
:ignore)
|
1530
|
-
}
|
1531
|
-
now = Dir.glob(TMP_PREFIX)
|
1532
|
-
assert (now-prev).empty?
|
1533
|
-
end
|
1534
|
-
end
|
1535
|
-
end
|
1536
|
-
|
1537
|
-
def test_no_remaining_tmp_files_google
|
1538
|
-
# Exception ist irgendwie anders, nochmal ansehen TODO:
|
1539
|
-
after Date.new(2011,6,19) do
|
1540
|
-
if GOOGLE
|
1541
|
-
prev = Dir.glob(TMP_PREFIX)
|
1542
|
-
assert_nothing_raised() {
|
1543
|
-
oo = Google.new(key_of("no_spreadsheet_file.txt"))
|
1544
|
-
}
|
1545
|
-
now = Dir.glob(TMP_PREFIX)
|
1546
|
-
assert (now-prev).empty?
|
1547
|
-
end
|
1548
|
-
end
|
1549
|
-
end
|
1550
|
-
|
1551
1139
|
# Erstellt eine Liste aller Zellen im Spreadsheet. Dies ist nötig, weil ein einfacher
|
1552
1140
|
# Textvergleich des XML-Outputs nicht funktioniert, da xml-builder die Attribute
|
1553
1141
|
# nicht immer in der gleichen Reihenfolge erzeugt.
|
@@ -1601,7 +1189,7 @@ Sheet 3:
|
|
1601
1189
|
sheetname = oo.sheets[oo.sheets.index(sheetname)+1]
|
1602
1190
|
}
|
1603
1191
|
end
|
1604
|
-
|
1192
|
+
end
|
1605
1193
|
|
1606
1194
|
def test_bug_row_column_fixnum_float
|
1607
1195
|
with_each_spreadsheet(:name=>'bug-row-column-fixnum-float', :format=>:excel) do |oo|
|
@@ -1614,107 +1202,72 @@ Sheet 3:
|
|
1614
1202
|
|
1615
1203
|
def test_file_warning_default
|
1616
1204
|
if OPENOFFICE
|
1617
|
-
|
1618
|
-
|
1619
|
-
|
1620
|
-
|
1621
|
-
assert (now-prev).empty?
|
1205
|
+
assert_raises(TypeError, "test/files/numbers1.xls is not an openoffice spreadsheet") {
|
1206
|
+
Roo::Openoffice.new(File.join(TESTDIR,"numbers1.xls"))
|
1207
|
+
}
|
1208
|
+
assert_raises(TypeError) { Roo::Openoffice.new(File.join(TESTDIR,"numbers1.xlsx")) }
|
1622
1209
|
end
|
1623
1210
|
if EXCEL
|
1624
|
-
|
1625
|
-
assert_raises(TypeError) {
|
1626
|
-
assert_raises(TypeError) { oo = Excel.new(File.join(TESTDIR,"numbers1.xlsx")) }
|
1627
|
-
now = Dir.glob(TMP_PREFIX)
|
1628
|
-
assert (now-prev).empty?, "temporary directory was not removed"
|
1211
|
+
assert_raises(TypeError) { Roo::Excel.new(File.join(TESTDIR,"numbers1.ods")) }
|
1212
|
+
assert_raises(TypeError) { Roo::Excel.new(File.join(TESTDIR,"numbers1.xlsx")) }
|
1629
1213
|
end
|
1630
1214
|
if EXCELX
|
1631
|
-
|
1632
|
-
assert_raises(TypeError) {
|
1633
|
-
assert_raises(TypeError) { oo = Excelx.new(File.join(TESTDIR,"numbers1.xls")) }
|
1634
|
-
now = Dir.glob(TMP_PREFIX)
|
1635
|
-
assert (now-prev).empty?
|
1215
|
+
assert_raises(TypeError) { Roo::Excelx.new(File.join(TESTDIR,"numbers1.ods")) }
|
1216
|
+
assert_raises(TypeError) { Roo::Excelx.new(File.join(TESTDIR,"numbers1.xls")) }
|
1636
1217
|
end
|
1637
1218
|
end
|
1638
1219
|
|
1639
1220
|
def test_file_warning_error
|
1640
1221
|
if OPENOFFICE
|
1641
|
-
|
1642
|
-
assert_raises(TypeError) {
|
1643
|
-
now = Dir.glob(TMP_PREFIX)
|
1644
|
-
assert (now-prev).empty?
|
1645
|
-
|
1646
|
-
prev = Dir.glob(TMP_PREFIX)
|
1647
|
-
assert_raises(TypeError) { oo = Openoffice.new(File.join(TESTDIR,"numbers1.xlsx"),false,:error) }
|
1648
|
-
now = Dir.glob(TMP_PREFIX)
|
1649
|
-
assert (now-prev).empty?
|
1222
|
+
assert_raises(TypeError) { Roo::Openoffice.new(File.join(TESTDIR,"numbers1.xls"),false,:error) }
|
1223
|
+
assert_raises(TypeError) { Roo::Openoffice.new(File.join(TESTDIR,"numbers1.xlsx"),false,:error) }
|
1650
1224
|
end
|
1651
1225
|
if EXCEL
|
1652
|
-
|
1653
|
-
assert_raises(TypeError) {
|
1654
|
-
now = Dir.glob(TMP_PREFIX)
|
1655
|
-
assert (now-prev).empty?, "temporary directory was not deleted"
|
1656
|
-
|
1657
|
-
prev = Dir.glob(TMP_PREFIX)
|
1658
|
-
assert_raises(TypeError) { oo = Excel.new(File.join(TESTDIR,"numbers1.xlsx"),false,:error) }
|
1659
|
-
now = Dir.glob(TMP_PREFIX)
|
1660
|
-
assert (now-prev).empty?, "temporary directory was not deleted"
|
1226
|
+
assert_raises(TypeError) { Roo::Excel.new(File.join(TESTDIR,"numbers1.ods"),false,:error) }
|
1227
|
+
assert_raises(TypeError) { Roo::Excel.new(File.join(TESTDIR,"numbers1.xlsx"),false,:error) }
|
1661
1228
|
end
|
1662
1229
|
if EXCELX
|
1663
|
-
|
1664
|
-
assert_raises(TypeError) {
|
1665
|
-
now = Dir.glob(TMP_PREFIX)
|
1666
|
-
assert (now-prev).empty?, "temporary directory was not deleted"
|
1667
|
-
|
1668
|
-
prev = Dir.glob(TMP_PREFIX)
|
1669
|
-
assert_raises(TypeError) { oo = Excelx.new(File.join(TESTDIR,"numbers1.xls"),false,:error) }
|
1670
|
-
now = Dir.glob(TMP_PREFIX)
|
1671
|
-
assert (now-prev).empty?, "temporary directory was not deleted"
|
1230
|
+
assert_raises(TypeError) { Roo::Excelx.new(File.join(TESTDIR,"numbers1.ods"),false,:error) }
|
1231
|
+
assert_raises(TypeError) { Roo::Excelx.new(File.join(TESTDIR,"numbers1.xls"),false,:error) }
|
1672
1232
|
end
|
1673
1233
|
end
|
1674
1234
|
|
1675
1235
|
def test_file_warning_warning
|
1676
|
-
|
1677
|
-
|
1678
|
-
|
1679
|
-
|
1680
|
-
oo = Openoffice.new(File.join(TESTDIR,"numbers1.xls"),false, :warning)
|
1681
|
-
}
|
1236
|
+
if OPENOFFICE
|
1237
|
+
assert_nothing_raised(TypeError) {
|
1238
|
+
assert_raises(Zip::ZipError) {
|
1239
|
+
Roo::Openoffice.new(File.join(TESTDIR,"numbers1.xls"),false, :warning)
|
1682
1240
|
}
|
1683
|
-
|
1684
|
-
|
1685
|
-
|
1686
|
-
|
1687
|
-
}
|
1241
|
+
}
|
1242
|
+
assert_nothing_raised(TypeError) {
|
1243
|
+
assert_raises(Errno::ENOENT) {
|
1244
|
+
Roo::Openoffice.new(File.join(TESTDIR,"numbers1.xlsx"),false, :warning)
|
1688
1245
|
}
|
1689
|
-
|
1690
|
-
|
1691
|
-
|
1692
|
-
|
1693
|
-
|
1694
|
-
|
1695
|
-
assert_raises(Ole::Storage::FormatError) {
|
1696
|
-
oo = Excel.new(File.join(TESTDIR,"numbers1.ods"),false, :warning) }
|
1246
|
+
}
|
1247
|
+
end
|
1248
|
+
if EXCEL
|
1249
|
+
assert_nothing_raised(TypeError) {
|
1250
|
+
assert_raises(Ole::Storage::FormatError) {
|
1251
|
+
Roo::Excel.new(File.join(TESTDIR,"numbers1.ods"),false, :warning)
|
1697
1252
|
}
|
1698
|
-
|
1699
|
-
|
1700
|
-
|
1253
|
+
}
|
1254
|
+
assert_nothing_raised(TypeError) {
|
1255
|
+
assert_raises(Ole::Storage::FormatError) {
|
1256
|
+
Roo::Excel.new(File.join(TESTDIR,"numbers1.xlsx"),false, :warning)
|
1701
1257
|
}
|
1702
|
-
|
1703
|
-
|
1704
|
-
|
1705
|
-
|
1706
|
-
|
1707
|
-
|
1708
|
-
assert_raises(Errno::ENOENT) {
|
1709
|
-
oo = Excelx.new(File.join(TESTDIR,"numbers1.ods"),false, :warning) }
|
1258
|
+
}
|
1259
|
+
end
|
1260
|
+
if EXCELX
|
1261
|
+
assert_nothing_raised(TypeError) {
|
1262
|
+
assert_raises(Errno::ENOENT) {
|
1263
|
+
Roo::Excelx.new(File.join(TESTDIR,"numbers1.ods"),false, :warning)
|
1710
1264
|
}
|
1711
|
-
|
1712
|
-
|
1713
|
-
|
1265
|
+
}
|
1266
|
+
assert_nothing_raised(TypeError) {
|
1267
|
+
assert_raises(Zip::ZipError) {
|
1268
|
+
Roo::Excelx.new(File.join(TESTDIR,"numbers1.xls"),false, :warning)
|
1714
1269
|
}
|
1715
|
-
|
1716
|
-
assert (now-prev).empty?
|
1717
|
-
end
|
1270
|
+
}
|
1718
1271
|
end
|
1719
1272
|
end
|
1720
1273
|
|
@@ -1727,64 +1280,29 @@ Sheet 3:
|
|
1727
1280
|
|
1728
1281
|
# xls
|
1729
1282
|
assert_nothing_raised() {
|
1730
|
-
|
1283
|
+
Roo::Openoffice.new(File.join(TESTDIR,"type_openoffice.xls"),false, :ignore)
|
1731
1284
|
}
|
1732
1285
|
# xlsx
|
1733
1286
|
assert_nothing_raised() {
|
1734
|
-
|
1287
|
+
Roo::Openoffice.new(File.join(TESTDIR,"type_openoffice.xlsx"),false, :ignore)
|
1735
1288
|
}
|
1736
1289
|
end
|
1737
1290
|
if EXCEL
|
1738
1291
|
assert_nothing_raised() {
|
1739
|
-
|
1292
|
+
Roo::Excel.new(File.join(TESTDIR,"type_excel.ods"),false, :ignore)
|
1740
1293
|
}
|
1741
1294
|
assert_nothing_raised() {
|
1742
|
-
|
1295
|
+
Roo::Excel.new(File.join(TESTDIR,"type_excel.xlsx"),false, :ignore)
|
1743
1296
|
}
|
1744
1297
|
end
|
1745
1298
|
if EXCELX
|
1746
1299
|
assert_nothing_raised() {
|
1747
|
-
|
1300
|
+
Roo::Excelx.new(File.join(TESTDIR,"type_excelx.ods"),false, :ignore)
|
1748
1301
|
}
|
1749
1302
|
assert_nothing_raised() {
|
1750
|
-
|
1303
|
+
Roo::Excelx.new(File.join(TESTDIR,"type_excelx.xls"),false, :ignore)
|
1751
1304
|
}
|
1752
1305
|
end
|
1753
|
-
=begin
|
1754
|
-
if OPENOFFICE
|
1755
|
-
assert_nothing_raised() {
|
1756
|
-
assert_raises(Zip::ZipError) {
|
1757
|
-
oo = Openoffice.new(File.join(TESTDIR,"numbers1.xls"),false, :ignore) }
|
1758
|
-
}
|
1759
|
-
assert_nothing_raised() {
|
1760
|
-
assert_raises(Errno::ENOENT) {
|
1761
|
-
oo = Openoffice.new(File.join(TESTDIR,"numbers1.xlsx"),false, :ignore) }
|
1762
|
-
}
|
1763
|
-
assert Dir.glob(TMP_PREFIX).empty?
|
1764
|
-
end
|
1765
|
-
if EXCEL
|
1766
|
-
assert_nothing_raised(TypeError) {
|
1767
|
-
assert_raises(Ole::Storage::FormatError) {
|
1768
|
-
oo = Excel.new(File.join(TESTDIR,"numbers1.ods"),false, :ignore) }
|
1769
|
-
}
|
1770
|
-
assert_nothing_raised(TypeError) {
|
1771
|
-
assert_raises(Ole::Storage::FormatError) {oo = Excel.new(File.join(TESTDIR,"numbers1.xlsx"),false, :ignore) }}
|
1772
|
-
assert Dir.glob(TMP_PREFIX).empty?
|
1773
|
-
end
|
1774
|
-
if EXCELX
|
1775
|
-
assert_nothing_raised(TypeError) {
|
1776
|
-
assert_raises(Errno::ENOENT) {
|
1777
|
-
oo = Excelx.new(File.join(TESTDIR,"numbers1.ods"),false, :ignore)
|
1778
|
-
}
|
1779
|
-
}
|
1780
|
-
assert_nothing_raised(TypeError) {
|
1781
|
-
assert_raises(Zip::ZipError) {
|
1782
|
-
oo = Excelx.new(File.join(TESTDIR,"numbers1.xls"),false, :ignore)
|
1783
|
-
}
|
1784
|
-
}
|
1785
|
-
assert Dir.glob(TMP_PREFIX).empty?
|
1786
|
-
end
|
1787
|
-
=end
|
1788
1306
|
end
|
1789
1307
|
|
1790
1308
|
def test_bug_last_row_excel
|
@@ -1805,7 +1323,7 @@ Sheet 3:
|
|
1805
1323
|
assert_equal nil, oo.first_column(sheet), "first_column not nil in sheet #{sheet}"
|
1806
1324
|
assert_equal nil, oo.last_column(sheet), "last_column not nil in sheet #{sheet}"
|
1807
1325
|
}
|
1808
|
-
assert_nothing_raised() {
|
1326
|
+
assert_nothing_raised() { oo.to_xml }
|
1809
1327
|
end
|
1810
1328
|
end
|
1811
1329
|
|
@@ -1885,7 +1403,7 @@ Sheet 3:
|
|
1885
1403
|
assert_equal Date.new(1961,11,21), oo.cell('c',7)
|
1886
1404
|
end
|
1887
1405
|
end
|
1888
|
-
|
1406
|
+
|
1889
1407
|
def test_cell_openoffice_html_escape
|
1890
1408
|
with_each_spreadsheet(:name=>'html-escape', :format=>:openoffice) do |oo|
|
1891
1409
|
assert_equal "'", oo.cell(1,1)
|
@@ -1896,10 +1414,10 @@ Sheet 3:
|
|
1896
1414
|
# test_openoffice_zipped will catch issues with "
|
1897
1415
|
end
|
1898
1416
|
end
|
1899
|
-
|
1417
|
+
|
1900
1418
|
def test_cell_boolean
|
1901
1419
|
with_each_spreadsheet(:name=>'boolean', :format=>[:openoffice, :excel, :excelx]) do |oo|
|
1902
|
-
if oo.class == Excelx
|
1420
|
+
if oo.class == Roo::Excelx
|
1903
1421
|
assert_equal "TRUE", oo.cell(1,1), "failure in "+oo.class.to_s
|
1904
1422
|
assert_equal "FALSE", oo.cell(2,1), "failure in "+oo.class.to_s
|
1905
1423
|
else
|
@@ -1908,7 +1426,7 @@ Sheet 3:
|
|
1908
1426
|
end
|
1909
1427
|
end
|
1910
1428
|
end
|
1911
|
-
|
1429
|
+
|
1912
1430
|
def test_cell_multiline
|
1913
1431
|
with_each_spreadsheet(:name=>'paragraph', :format=>[:openoffice, :excel, :excelx]) do |oo|
|
1914
1432
|
assert_equal "This is a test\nof a multiline\nCell", oo.cell(1,1)
|
@@ -1916,7 +1434,7 @@ Sheet 3:
|
|
1916
1434
|
assert_equal "first p\n\nsecond p\n\nlast p", oo.cell(2,1)
|
1917
1435
|
end
|
1918
1436
|
end
|
1919
|
-
|
1437
|
+
|
1920
1438
|
def test_cell_styles
|
1921
1439
|
# styles only valid in excel spreadsheets?
|
1922
1440
|
# TODO: what todo with other spreadsheet types
|
@@ -1928,7 +1446,7 @@ Sheet 3:
|
|
1928
1446
|
assert_equal true, oo.font(1,1).bold?
|
1929
1447
|
assert_equal false, oo.font(1,1).italic?
|
1930
1448
|
assert_equal false, oo.font(1,1).underline?
|
1931
|
-
|
1449
|
+
|
1932
1450
|
# italic
|
1933
1451
|
assert_equal false, oo.font(2,1).bold?
|
1934
1452
|
assert_equal true, oo.font(2,1).italic?
|
@@ -1980,7 +1498,7 @@ Sheet 3:
|
|
1980
1498
|
assert_equal false, oo.font(11,4).underline?
|
1981
1499
|
end
|
1982
1500
|
end
|
1983
|
-
|
1501
|
+
|
1984
1502
|
# If a cell has a date-like string but is preceeded by a '
|
1985
1503
|
# to force that date to be treated like a string, we were getting an exception.
|
1986
1504
|
# This test just checks for that exception to make sure it's not raised in this case
|
@@ -2010,7 +1528,7 @@ Sheet 3:
|
|
2010
1528
|
assert_equal [Date.new(2007,5,7), nil, 10.75], oo.row(3)
|
2011
1529
|
end
|
2012
1530
|
end
|
2013
|
-
|
1531
|
+
|
2014
1532
|
def test_col_whitespace
|
2015
1533
|
#TODO:
|
2016
1534
|
# kein Zugriff auf Dokument whitespace
|
@@ -2030,7 +1548,14 @@ Sheet 3:
|
|
2030
1548
|
assert_equal [ "Start time", 9.25, 10.75], oo.column(5)
|
2031
1549
|
end
|
2032
1550
|
end
|
2033
|
-
|
1551
|
+
|
1552
|
+
def test_ruby_spreadsheet_formula_bug
|
1553
|
+
with_each_spreadsheet(:name=>'formula_parse_error', :format=>:excel) do |oo|
|
1554
|
+
assert_equal '5026', oo.cell(2,3)
|
1555
|
+
assert_equal '5026', oo.cell(3,3)
|
1556
|
+
end
|
1557
|
+
end
|
1558
|
+
|
2034
1559
|
# Excel has two base date formats one from 1900 and the other from 1904.
|
2035
1560
|
# There's a MS bug that 1900 base dates include an extra day due to erroneously
|
2036
1561
|
# including 1900 as a leap yar.
|
@@ -2050,13 +1575,21 @@ Sheet 3:
|
|
2050
1575
|
assert_equal :date, oo.celltype(1,1)
|
2051
1576
|
end
|
2052
1577
|
end
|
2053
|
-
|
1578
|
+
|
2054
1579
|
def test_bad_date
|
2055
1580
|
with_each_spreadsheet(:name=>'prova', :format=>:excel) do |oo|
|
2056
1581
|
assert_nothing_raised(ArgumentError) {
|
2057
1582
|
assert_equal DateTime.new(2006,2,2,10,0,0), oo.cell('a',1)
|
2058
1583
|
}
|
2059
|
-
end
|
1584
|
+
end
|
1585
|
+
end
|
1586
|
+
|
1587
|
+
def test_bad_excel_date
|
1588
|
+
with_each_spreadsheet(:name=>'bad_excel_date', :format=>:excel) do |oo|
|
1589
|
+
assert_nothing_raised(ArgumentError) {
|
1590
|
+
assert_equal DateTime.new(2006,2,2,10,0,0), oo.cell('a',1)
|
1591
|
+
}
|
1592
|
+
end
|
2060
1593
|
end
|
2061
1594
|
|
2062
1595
|
def test_cell_methods
|
@@ -2081,7 +1614,7 @@ Sheet 3:
|
|
2081
1614
|
def test_compare_large_spreadsheets
|
2082
1615
|
# problematisch, weil Formeln in Excel nicht unterstützt werden
|
2083
1616
|
if LONG_RUN
|
2084
|
-
qq = Openoffice.new(File.join('test',"Bibelbund.ods"))
|
1617
|
+
qq = Roo::Openoffice.new(File.join('test',"Bibelbund.ods"))
|
2085
1618
|
with_each_spreadsheet(:name=>'Bibelbund') do |oo|
|
2086
1619
|
# p "comparing Bibelbund.ods with #{oo.class}"
|
2087
1620
|
oo.sheets.each do |sh|
|
@@ -2093,7 +1626,7 @@ Sheet 3:
|
|
2093
1626
|
c2.force_encoding("UTF-8") if c2.class == String
|
2094
1627
|
assert_equal c1, c2, "diff in #{sh}/#{row}/#{col}}"
|
2095
1628
|
assert_equal qq.celltype(row,col,sh), oo.celltype(row,col,sh)
|
2096
|
-
assert_equal qq.formula?(row,col,sh), oo.formula?(row,col,sh) if oo.class != Excel
|
1629
|
+
assert_equal qq.formula?(row,col,sh), oo.formula?(row,col,sh) if oo.class != Roo::Excel
|
2097
1630
|
end
|
2098
1631
|
end
|
2099
1632
|
end
|
@@ -2138,7 +1671,7 @@ Sheet 3:
|
|
2138
1671
|
# oo.default_sheet = oo.sheets.first
|
2139
1672
|
assert_equal "Anton", oo.anton
|
2140
1673
|
assert_raises(NoMethodError) {
|
2141
|
-
|
1674
|
+
oo.never
|
2142
1675
|
}
|
2143
1676
|
end
|
2144
1677
|
end
|
@@ -2154,63 +1687,55 @@ Sheet 3:
|
|
2154
1687
|
end
|
2155
1688
|
end
|
2156
1689
|
|
2157
|
-
|
2158
|
-
|
2159
|
-
|
2160
|
-
|
2161
|
-
|
2162
|
-
|
2163
|
-
|
2164
|
-
|
2165
|
-
|
2166
|
-
|
2167
|
-
|
2168
|
-
|
2169
|
-
|
2170
|
-
|
2171
|
-
|
2172
|
-
|
2173
|
-
|
2174
|
-
|
2175
|
-
|
2176
|
-
|
2177
|
-
|
2178
|
-
|
2179
|
-
|
2180
|
-
|
2181
|
-
|
2182
|
-
|
2183
|
-
|
2184
|
-
|
2185
|
-
|
2186
|
-
|
2187
|
-
|
2188
|
-
|
2189
|
-
|
2190
|
-
|
2191
|
-
|
2192
|
-
#
|
2193
|
-
|
2194
|
-
|
2195
|
-
|
2196
|
-
|
2197
|
-
|
2198
|
-
|
2199
|
-
|
2200
|
-
## Reihenfolge row,col,sheet analog zu #label
|
2201
|
-
# assert_equal [
|
2202
|
-
# ['anton',[5,3,'Sheet1']],
|
2203
|
-
# ['berta',[4,2,'Sheet1']],
|
2204
|
-
# ['caesar',[7,2,'Sheet1']],
|
2205
|
-
# ], oo.labels, "error with labels array in class #{oo.class}"
|
2206
|
-
# end
|
2207
|
-
# end
|
1690
|
+
def test_labeled_cells
|
1691
|
+
with_each_spreadsheet(:name=>'named_cells', :format=>[:openoffice,:excelx,:libreoffice]) do |oo|
|
1692
|
+
oo.default_sheet = oo.sheets.first
|
1693
|
+
begin
|
1694
|
+
row,col = oo.label('anton')
|
1695
|
+
rescue ArgumentError
|
1696
|
+
puts "labels error at #{oo.class}"
|
1697
|
+
raise
|
1698
|
+
end
|
1699
|
+
assert_equal 5, row
|
1700
|
+
assert_equal 3, col
|
1701
|
+
|
1702
|
+
row,col = oo.label('anton')
|
1703
|
+
assert_equal 'Anton', oo.cell(row,col)
|
1704
|
+
|
1705
|
+
row,col = oo.label('berta')
|
1706
|
+
assert_equal 'Bertha', oo.cell(row,col)
|
1707
|
+
|
1708
|
+
row,col = oo.label('caesar')
|
1709
|
+
assert_equal 'Cäsar', oo.cell(row,col)
|
1710
|
+
|
1711
|
+
row,col = oo.label('never')
|
1712
|
+
assert_nil row
|
1713
|
+
assert_nil col
|
1714
|
+
|
1715
|
+
row,col,sheet = oo.label('anton')
|
1716
|
+
assert_equal 5, row
|
1717
|
+
assert_equal 3, col
|
1718
|
+
assert_equal "Sheet1", sheet
|
1719
|
+
|
1720
|
+
assert_equal "Anton", oo.anton
|
1721
|
+
assert_raises(NoMethodError) {
|
1722
|
+
row,col = oo.never
|
1723
|
+
}
|
1724
|
+
|
1725
|
+
# Reihenfolge row,col,sheet analog zu #label
|
1726
|
+
assert_equal [
|
1727
|
+
['anton',[5,3,'Sheet1']],
|
1728
|
+
['berta',[4,2,'Sheet1']],
|
1729
|
+
['caesar',[7,2,'Sheet1']],
|
1730
|
+
], oo.labels, "error with labels array in class #{oo.class}"
|
1731
|
+
end
|
1732
|
+
end
|
2208
1733
|
|
2209
1734
|
|
2210
1735
|
def test_bug_excel_last_row_255
|
2211
1736
|
if LONG_RUN
|
2212
1737
|
local_only do
|
2213
|
-
oo = Excel.new(File.join('..','confidential','ScienceStaff.xls'))
|
1738
|
+
oo = Roo::Excel.new(File.join('..','confidential','ScienceStaff.xls'))
|
2214
1739
|
oo.default_sheet = oo.sheets.first
|
2215
1740
|
assert_equal "COMSCI", oo.cell(255,1)
|
2216
1741
|
assert_equal "lala", oo.cell(256,1)
|
@@ -2221,7 +1746,7 @@ Sheet 3:
|
|
2221
1746
|
|
2222
1747
|
def test_bug_excel_last_row_255_modified
|
2223
1748
|
local_only do
|
2224
|
-
oo = Excel.new(File.join('..','confidential','ScienceStaff_modified.xls'))
|
1749
|
+
oo = Roo::Excel.new(File.join('..','confidential','ScienceStaff_modified.xls'))
|
2225
1750
|
oo.default_sheet = oo.sheets.first
|
2226
1751
|
assert_equal 1537, oo.last_row
|
2227
1752
|
end
|
@@ -2265,15 +1790,12 @@ Sheet 3:
|
|
2265
1790
|
[1.0, nil, 3.0],
|
2266
1791
|
[4.0, 5.0, 6.0],
|
2267
1792
|
[7.0, 8.0, nil] ], oo.to_matrix(1,1,3,3)
|
2268
|
-
end
|
1793
|
+
end
|
1794
|
+
end
|
2269
1795
|
|
2270
1796
|
def test_bug_date_mileszs
|
2271
|
-
|
2272
|
-
|
2273
|
-
# "An richtige Stelle kopieren. Ist das Dokument vertraulich?"
|
2274
|
-
# 'ist auf dem Netbook nicht vorhanden'
|
2275
|
-
# end
|
2276
|
-
oo = Excel.new "/home/tp/Documents/feb-sales-analysis.xls"
|
1797
|
+
local_only do
|
1798
|
+
oo = Roo::Excel.new "/home/tp/Documents/feb-sales-analysis.xls"
|
2277
1799
|
oo.default_sheet = oo.sheets.first
|
2278
1800
|
# 2/1/2010 A2-A6 mm/dd/yyyy
|
2279
1801
|
2.upto(6) do |i|
|
@@ -2282,25 +1804,15 @@ Sheet 3:
|
|
2282
1804
|
end
|
2283
1805
|
end
|
2284
1806
|
|
2285
|
-
#def test_no_generic_new
|
2286
|
-
#oo = GenericSpreadsheet.new
|
2287
|
-
#assert_equal GenericSpreadsheet, oo.class
|
2288
|
-
#end
|
2289
|
-
|
2290
1807
|
# unter Windows soll es laut Bug-Reports nicht moeglich sein, eine Excel-Datei, die
|
2291
1808
|
# mit Excel.new geoeffnet wurde nach dem Processing anschliessend zu loeschen.
|
2292
1809
|
# Anmerkung: Das Spreadsheet-Gem erlaubt kein explizites Close von Spreadsheet-Dateien,
|
2293
1810
|
# was verhindern koennte, das die Datei geloescht werden kann.
|
2294
|
-
def test_bug_cannot_delete_opened_excel_sheet
|
2295
|
-
|
2296
|
-
|
2297
|
-
|
2298
|
-
|
2299
|
-
# und versuche diese zu oeffnen und zu loeschen'
|
2300
|
-
# end
|
2301
|
-
end
|
2302
|
-
#end
|
2303
|
-
end
|
1811
|
+
# def test_bug_cannot_delete_opened_excel_sheet
|
1812
|
+
# with_each_spreadsheet(:name=>'simple_spreadsheet') do |oo|
|
1813
|
+
# 'kopiere nach temporaere Datei und versuche diese zu oeffnen und zu loeschen'
|
1814
|
+
# end
|
1815
|
+
# end
|
2304
1816
|
|
2305
1817
|
def test_bug_xlsx_reference_cell
|
2306
1818
|
|
@@ -2310,7 +1822,7 @@ Sheet 3:
|
|
2310
1822
|
"0.0" instead of the value of cell A.
|
2311
1823
|
|
2312
1824
|
With the attached test case, I ran the following code:
|
2313
|
-
spreadsheet = Excelx.new('formula_string_error.xlsx')
|
1825
|
+
spreadsheet = Roo::Excelx.new('formula_string_error.xlsx')
|
2314
1826
|
spreadsheet.default_sheet = 'sheet1'
|
2315
1827
|
p "A: #{spreadsheet.cell(1, 1)}"
|
2316
1828
|
p "B: #{spreadsheet.cell(2, 1)}"
|
@@ -2323,16 +1835,16 @@ where the expected result is
|
|
2323
1835
|
"A: TestString"
|
2324
1836
|
"B: TestString"
|
2325
1837
|
=end
|
2326
|
-
xlsx = Excelx.new(File.join(
|
1838
|
+
xlsx = Roo::Excelx.new(File.join(TESTDIR, "formula_string_error.xlsx"))
|
2327
1839
|
xlsx.default_sheet = xlsx.sheets.first
|
2328
1840
|
assert_equal 'Teststring', xlsx.cell('a',1)
|
2329
1841
|
assert_equal 'Teststring', xlsx.cell('a',2)
|
2330
1842
|
end
|
2331
1843
|
end
|
2332
|
-
|
1844
|
+
|
2333
1845
|
def test_bug_guest_list_2011_05_05
|
2334
|
-
|
2335
|
-
oo = Excel.new(File.join("..","confidential","guest_list_addresses.xls"))
|
1846
|
+
local_only do
|
1847
|
+
oo = Roo::Excel.new(File.join("..","confidential","guest_list_addresses.xls"))
|
2336
1848
|
oo.default_sheet = oo.sheets.first
|
2337
1849
|
assert_equal "lalala", oo.cell('a',1) # anderer Inhalt im Spreadsheet
|
2338
1850
|
assert_equal :string, oo.celltype('a',1)
|
@@ -2340,37 +1852,34 @@ where the expected result is
|
|
2340
1852
|
end
|
2341
1853
|
|
2342
1854
|
def test_bug_guest_list_2011_05_05_spreadsheet
|
2343
|
-
|
2344
|
-
|
2345
|
-
|
2346
|
-
|
2347
|
-
|
2348
|
-
|
2349
|
-
|
2350
|
-
|
2351
|
-
|
2352
|
-
end
|
1855
|
+
local_only do
|
1856
|
+
require 'spreadsheet'
|
1857
|
+
book = Spreadsheet.open File.join('..','confidential','guest_list_addresses.xls')
|
1858
|
+
sheet1 = book.worksheet 0
|
1859
|
+
sheet1.each do |row|
|
1860
|
+
p row[0]
|
1861
|
+
end
|
1862
|
+
end
|
2353
1863
|
end
|
2354
1864
|
|
2355
1865
|
# don't test it with other spreadsheet types! this was only a problem
|
2356
1866
|
# with .xlsx files
|
2357
1867
|
def test_bug_date_not_recognized_2011_05_21
|
2358
1868
|
if EXCELX
|
2359
|
-
|
2360
|
-
|
2361
|
-
|
2362
|
-
|
2363
|
-
|
2364
|
-
|
1869
|
+
local_only do
|
1870
|
+
oo = Roo::Excelx.new(File.join('..','confidential','2011-05-21_sample_date_problem.xlsx'))
|
1871
|
+
oo.default_sheet = oo.sheets.first
|
1872
|
+
assert_equal Date.new(2011,3,24), oo.b4
|
1873
|
+
assert_equal Date.new(2011,3,25), oo.b5
|
1874
|
+
assert_equal Date.new(2011,5,5), oo.b6
|
1875
|
+
assert_equal Date.new(2012,3,23), oo.b7
|
1876
|
+
end
|
2365
1877
|
end
|
2366
1878
|
end
|
2367
1879
|
|
2368
1880
|
def test_bug_string_as_a_date_2011_05_21_spreadsheet_only
|
2369
|
-
|
2370
|
-
|
2371
|
-
# to do
|
2372
|
-
# 'wieder entfernen'
|
2373
|
-
# end
|
1881
|
+
if EXCEL
|
1882
|
+
local_only do
|
2374
1883
|
require 'spreadsheet'
|
2375
1884
|
book = Spreadsheet.open File.join('..','confidential','2011-05-21_sample_type_problem.xls')
|
2376
1885
|
sheet1 = book.worksheet 0
|
@@ -2385,9 +1894,23 @@ where the expected result is
|
|
2385
1894
|
end
|
2386
1895
|
|
2387
1896
|
def test_bug_string_as_a_date_2011_05_21
|
2388
|
-
|
2389
|
-
|
2390
|
-
|
1897
|
+
if EXCEL
|
1898
|
+
local_only do
|
1899
|
+
oo = Roo::Excel.new(File.join('..','confidential','2011-05-21_sample_type_problem.xls'))
|
1900
|
+
oo.default_sheet = oo.sheets.first
|
1901
|
+
assert_equal 68, oo.g2
|
1902
|
+
assert_equal 72, oo.g3
|
1903
|
+
assert_equal 75, oo.g4
|
1904
|
+
assert_equal 76, oo.g5
|
1905
|
+
assert_equal 77, oo.g6
|
1906
|
+
assert_equal 78, oo.g7
|
1907
|
+
end
|
1908
|
+
end
|
1909
|
+
end
|
1910
|
+
|
1911
|
+
def test_bug_string_as_a_date_2011_05_21_saved_as_ods
|
1912
|
+
local_only do
|
1913
|
+
oo = Roo::Openoffice.new(File.join('..','confidential','2011-05-21_sample_type_problem.ods'))
|
2391
1914
|
oo.default_sheet = oo.sheets.first
|
2392
1915
|
assert_equal 68, oo.g2
|
2393
1916
|
assert_equal 72, oo.g3
|
@@ -2398,18 +1921,6 @@ where the expected result is
|
|
2398
1921
|
end
|
2399
1922
|
end
|
2400
1923
|
|
2401
|
-
def test_bug_string_as_a_date_2011_05_21_saved_as_ods
|
2402
|
-
#oo = Openoffice.new(File.join(TESTDIR,'2011-05-21_sample_type_problem.ods'))
|
2403
|
-
oo = Openoffice.new(File.join('..','confidential','2011-05-21_sample_type_problem.ods'))
|
2404
|
-
oo.default_sheet = oo.sheets.first
|
2405
|
-
assert_equal 68, oo.g2
|
2406
|
-
assert_equal 72, oo.g3
|
2407
|
-
assert_equal 75, oo.g4
|
2408
|
-
assert_equal 76, oo.g5
|
2409
|
-
assert_equal 77, oo.g6
|
2410
|
-
assert_equal 78, oo.g7
|
2411
|
-
end
|
2412
|
-
|
2413
1924
|
# #formulas of an empty sheet should return an empty array and not result in
|
2414
1925
|
# an error message
|
2415
1926
|
# 2011-06-24
|
@@ -2418,7 +1929,7 @@ where the expected result is
|
|
2418
1929
|
:format=>[:openoffice,:excelx,:google]) do |oo|
|
2419
1930
|
assert_nothing_raised(NoMethodError) {
|
2420
1931
|
oo.default_sheet = oo.sheets.first
|
2421
|
-
|
1932
|
+
oo.formulas
|
2422
1933
|
}
|
2423
1934
|
assert_equal([], oo.formulas)
|
2424
1935
|
end
|
@@ -2432,7 +1943,7 @@ where the expected result is
|
|
2432
1943
|
:format=>[:openoffice,:excelx,:google]) do |oo|
|
2433
1944
|
assert_nothing_raised(NoMethodError) {
|
2434
1945
|
oo.default_sheet = oo.sheets.first
|
2435
|
-
|
1946
|
+
oo.to_yaml
|
2436
1947
|
}
|
2437
1948
|
assert_equal('', oo.to_yaml)
|
2438
1949
|
end
|
@@ -2446,7 +1957,7 @@ where the expected result is
|
|
2446
1957
|
:format=>[:openoffice,:excelx,:google]) do |oo|
|
2447
1958
|
assert_nothing_raised(NoMethodError) {
|
2448
1959
|
oo.default_sheet = oo.sheets.first
|
2449
|
-
|
1960
|
+
oo.to_matrix
|
2450
1961
|
}
|
2451
1962
|
assert_equal(Matrix.empty(0,0), oo.to_matrix)
|
2452
1963
|
end
|
@@ -2455,9 +1966,13 @@ where the expected result is
|
|
2455
1966
|
# 2011-08-03
|
2456
1967
|
def test_bug_datetime_to_csv
|
2457
1968
|
with_each_spreadsheet(:name=>'datetime') do |oo|
|
2458
|
-
|
2459
|
-
|
2460
|
-
|
1969
|
+
Dir.mktmpdir do |tempdir|
|
1970
|
+
datetime_csv_file = File.join(tempdir,"datetime.csv")
|
1971
|
+
|
1972
|
+
assert oo.to_csv(datetime_csv_file)
|
1973
|
+
assert File.exists?(datetime_csv_file)
|
1974
|
+
assert_equal "", file_diff('test/files/so_datetime.csv', datetime_csv_file)
|
1975
|
+
end
|
2461
1976
|
end
|
2462
1977
|
end
|
2463
1978
|
|
@@ -2471,12 +1986,12 @@ where the expected result is
|
|
2471
1986
|
# Bei den Openoffice-Dateien ist in diesem Feld in der XML-
|
2472
1987
|
# Datei of: als Prefix enthalten, waehrend in dieser Datei
|
2473
1988
|
# irgendetwas mit oooc: als Prefix verwendet wird.
|
2474
|
-
oo = Openoffice.new(File.join(TESTDIR,'dreimalvier.ods'))
|
1989
|
+
oo = Roo::Openoffice.new(File.join(TESTDIR,'dreimalvier.ods'))
|
2475
1990
|
oo.default_sheet = oo.sheets.first
|
2476
1991
|
assert_equal '=SUM([.A1:.D1])', oo.formula('e',1)
|
2477
1992
|
assert_equal '=SUM([.A2:.D2])', oo.formula('e',2)
|
2478
1993
|
assert_equal '=SUM([.A3:.D3])', oo.formula('e',3)
|
2479
|
-
assert_equal [
|
1994
|
+
assert_equal [
|
2480
1995
|
[1,5,'=SUM([.A1:.D1])'],
|
2481
1996
|
[2,5,'=SUM([.A2:.D2])'],
|
2482
1997
|
[3,5,'=SUM([.A3:.D3])'],
|
@@ -2526,17 +2041,12 @@ where the expected result is
|
|
2526
2041
|
=end
|
2527
2042
|
|
2528
2043
|
def test_nil_rows_and_lines_csv
|
2529
|
-
|
2530
|
-
'wieder aktivieren'
|
2531
|
-
end
|
2532
|
-
=begin
|
2533
|
-
x_123
|
2044
|
+
# x_123
|
2534
2045
|
if CSV
|
2535
|
-
oo = Csv.new(File.join(TESTDIR,'Bibelbund.csv'))
|
2046
|
+
oo = Roo::Csv.new(File.join(TESTDIR,'Bibelbund.csv'))
|
2536
2047
|
oo.default_sheet = oo.sheets.first
|
2537
|
-
assert_equal
|
2048
|
+
assert_equal 1, oo.first_row
|
2538
2049
|
end
|
2539
|
-
=end
|
2540
2050
|
end
|
2541
2051
|
|
2542
2052
|
def test_bug_pfand_from_windows_phone_xlsx
|
@@ -2557,9 +2067,6 @@ where the expected result is
|
|
2557
2067
|
end
|
2558
2068
|
|
2559
2069
|
def test_comment
|
2560
|
-
to do
|
2561
|
-
"more spreadsheet types"
|
2562
|
-
end
|
2563
2070
|
with_each_spreadsheet(:name=>'comments', :format=>[:openoffice,:libreoffice,
|
2564
2071
|
:excelx]) do |oo|
|
2565
2072
|
oo.default_sheet = oo.sheets.first
|
@@ -2595,4 +2102,745 @@ where the expected result is
|
|
2595
2102
|
end
|
2596
2103
|
end
|
2597
2104
|
|
2105
|
+
## PREVIOUSLY SKIPPED
|
2106
|
+
|
2107
|
+
# don't have these test files so removing. We can easily add in
|
2108
|
+
# by modifying with_each_spreadsheet
|
2109
|
+
GNUMERIC_ODS = false # do gnumeric with ods files Tests?
|
2110
|
+
OPENOFFICEWRITE = false # experimental: write access with OO-Documents
|
2111
|
+
|
2112
|
+
def test_writeopenoffice
|
2113
|
+
if OPENOFFICEWRITE
|
2114
|
+
File.cp(File.join(TESTDIR,"numbers1.ods"),
|
2115
|
+
File.join(TESTDIR,"numbers2.ods"))
|
2116
|
+
File.cp(File.join(TESTDIR,"numbers2.ods"),
|
2117
|
+
File.join(TESTDIR,"bak_numbers2.ods"))
|
2118
|
+
oo = Openoffice.new(File.join(TESTDIR,"numbers2.ods"))
|
2119
|
+
oo.default_sheet = oo.sheets.first
|
2120
|
+
oo.first_row.upto(oo.last_row) {|y|
|
2121
|
+
oo.first_column.upto(oo.last_column) {|x|
|
2122
|
+
unless oo.empty?(y,x)
|
2123
|
+
# oo.set(y, x, oo.cell(y,x) + 7) if oo.celltype(y,x) == "float"
|
2124
|
+
oo.set(y, x, oo.cell(y,x) + 7) if oo.celltype(y,x) == :float
|
2125
|
+
end
|
2126
|
+
}
|
2127
|
+
}
|
2128
|
+
oo.save
|
2129
|
+
|
2130
|
+
oo1 = Roo::Openoffice.new(File.join(TESTDIR,"numbers2.ods"))
|
2131
|
+
oo2 = Roo::Openoffice.new(File.join(TESTDIR,"bak_numbers2.ods"))
|
2132
|
+
#p oo2.to_s
|
2133
|
+
assert_equal 999, oo2.cell('a',1), oo2.cell('a',1)
|
2134
|
+
assert_equal oo2.cell('a',1) + 7, oo1.cell('a',1)
|
2135
|
+
assert_equal oo2.cell('b',1)+7, oo1.cell('b',1)
|
2136
|
+
assert_equal oo2.cell('c',1)+7, oo1.cell('c',1)
|
2137
|
+
assert_equal oo2.cell('d',1)+7, oo1.cell('d',1)
|
2138
|
+
assert_equal oo2.cell('a',2)+7, oo1.cell('a',2)
|
2139
|
+
assert_equal oo2.cell('b',2)+7, oo1.cell('b',2)
|
2140
|
+
assert_equal oo2.cell('c',2)+7, oo1.cell('c',2)
|
2141
|
+
assert_equal oo2.cell('d',2)+7, oo1.cell('d',2)
|
2142
|
+
assert_equal oo2.cell('e',2)+7, oo1.cell('e',2)
|
2143
|
+
|
2144
|
+
File.cp(File.join(TESTDIR,"bak_numbers2.ods"),
|
2145
|
+
File.join(TESTDIR,"numbers2.ods"))
|
2146
|
+
end
|
2147
|
+
end
|
2148
|
+
|
2149
|
+
def test_possible_bug_snowboard_borders #no test file
|
2150
|
+
local_only do
|
2151
|
+
if EXCEL
|
2152
|
+
ex = Excel.new(File.join(TESTDIR,'problem.xls'))
|
2153
|
+
ex.default_sheet = ex.sheets.first
|
2154
|
+
assert_equal 2, ex.first_row
|
2155
|
+
assert_equal 30, ex.last_row
|
2156
|
+
assert_equal 'A', ex.first_column_as_letter
|
2157
|
+
assert_equal 'J', ex.last_column_as_letter
|
2158
|
+
end
|
2159
|
+
if EXCELX
|
2160
|
+
ex = Excelx.new(File.join(TESTDIR,'problem.xlsx'))
|
2161
|
+
ex.default_sheet = ex.sheets.first
|
2162
|
+
assert_equal 2, ex.first_row
|
2163
|
+
assert_equal 30, ex.last_row
|
2164
|
+
assert_equal 'A', ex.first_column_as_letter
|
2165
|
+
assert_equal 'J', ex.last_column_as_letter
|
2166
|
+
end
|
2167
|
+
end
|
2168
|
+
end
|
2169
|
+
|
2170
|
+
def common_possible_bug_snowboard_cells(ss)
|
2171
|
+
assert_equal "A.", ss.cell(13,'A'), ss.class
|
2172
|
+
assert_equal 147, ss.cell(13,'f'), ss.class
|
2173
|
+
assert_equal 152, ss.cell(13,'g'), ss.class
|
2174
|
+
assert_equal 156, ss.cell(13,'h'), ss.class
|
2175
|
+
assert_equal 158, ss.cell(13,'i'), ss.class
|
2176
|
+
assert_equal 160, ss.cell(13,'j'), ss.class
|
2177
|
+
assert_equal 164, ss.cell(13,'k'), ss.class
|
2178
|
+
assert_equal 168, ss.cell(13,'l'), ss.class
|
2179
|
+
assert_equal :string, ss.celltype(13,'m'), ss.class
|
2180
|
+
assert_equal "159W", ss.cell(13,'m'), ss.class
|
2181
|
+
assert_equal "164W", ss.cell(13,'n'), ss.class
|
2182
|
+
assert_equal "168W", ss.cell(13,'o'), ss.class
|
2183
|
+
end
|
2184
|
+
|
2185
|
+
def test_possible_bug_snowboard_cells # no test file
|
2186
|
+
local_only do
|
2187
|
+
# warten auf Bugfix in parseexcel
|
2188
|
+
if EXCEL
|
2189
|
+
ex = Roo::Excel.new(File.join(TESTDIR,'problem.xls'))
|
2190
|
+
ex.default_sheet = 'Custom X'
|
2191
|
+
common_possible_bug_snowboard_cells(ex)
|
2192
|
+
end
|
2193
|
+
if EXCELX
|
2194
|
+
ex = Roo::Excelx.new(File.join(TESTDIR,'problem.xlsx'))
|
2195
|
+
ex.default_sheet = 'Custom X'
|
2196
|
+
common_possible_bug_snowboard_cells(ex)
|
2197
|
+
end
|
2198
|
+
end
|
2199
|
+
end
|
2200
|
+
|
2201
|
+
if EXCELX
|
2202
|
+
def test_possible_bug_2008_09_13
|
2203
|
+
local_only do
|
2204
|
+
# war nur in der 1.0.0 Release ein Fehler und sollte mit aktueller
|
2205
|
+
# Release nicht mehr auftreten.
|
2206
|
+
=begin
|
2207
|
+
−
|
2208
|
+
<sst count="46" uniqueCount="39">
|
2209
|
+
−
|
2210
|
+
0<si>
|
2211
|
+
<t>Bond</t>
|
2212
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2213
|
+
</si>
|
2214
|
+
−
|
2215
|
+
1<si>
|
2216
|
+
<t>James</t>
|
2217
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2218
|
+
</si>
|
2219
|
+
−
|
2220
|
+
2<si>
|
2221
|
+
<t>8659</t>
|
2222
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2223
|
+
</si>
|
2224
|
+
−
|
2225
|
+
3<si>
|
2226
|
+
<t>12B</t>
|
2227
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2228
|
+
</si>
|
2229
|
+
−
|
2230
|
+
4<si>
|
2231
|
+
<t>087692</t>
|
2232
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2233
|
+
</si>
|
2234
|
+
−
|
2235
|
+
5<si>
|
2236
|
+
<t>Rowe</t>
|
2237
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2238
|
+
</si>
|
2239
|
+
−
|
2240
|
+
6<si>
|
2241
|
+
<t>Karl</t>
|
2242
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2243
|
+
</si>
|
2244
|
+
−
|
2245
|
+
7<si>
|
2246
|
+
<t>9128</t>
|
2247
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2248
|
+
</si>
|
2249
|
+
−
|
2250
|
+
8<si>
|
2251
|
+
<t>79A</t>
|
2252
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2253
|
+
</si>
|
2254
|
+
−
|
2255
|
+
9<si>
|
2256
|
+
<t>Benson</t>
|
2257
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2258
|
+
</si>
|
2259
|
+
−
|
2260
|
+
10<si>
|
2261
|
+
<t>Cedric</t>
|
2262
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2263
|
+
</si>
|
2264
|
+
−
|
2265
|
+
11<si>
|
2266
|
+
<t>Greenstreet</t>
|
2267
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2268
|
+
</si>
|
2269
|
+
−
|
2270
|
+
12<si>
|
2271
|
+
<t>Jenny</t>
|
2272
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2273
|
+
</si>
|
2274
|
+
−
|
2275
|
+
13<si>
|
2276
|
+
<t>Smith</t>
|
2277
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2278
|
+
</si>
|
2279
|
+
−
|
2280
|
+
14<si>
|
2281
|
+
<t>Greame</t>
|
2282
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2283
|
+
</si>
|
2284
|
+
−
|
2285
|
+
15<si>
|
2286
|
+
<t>Lucas</t>
|
2287
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2288
|
+
</si>
|
2289
|
+
−
|
2290
|
+
16<si>
|
2291
|
+
<t>Ward</t>
|
2292
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2293
|
+
</si>
|
2294
|
+
−
|
2295
|
+
17<si>
|
2296
|
+
<t>Lee</t>
|
2297
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2298
|
+
</si>
|
2299
|
+
−
|
2300
|
+
18<si>
|
2301
|
+
<t>Bret</t>
|
2302
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2303
|
+
</si>
|
2304
|
+
−
|
2305
|
+
19<si>
|
2306
|
+
<t>Warne</t>
|
2307
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2308
|
+
</si>
|
2309
|
+
−
|
2310
|
+
20<si>
|
2311
|
+
<t>Shane</t>
|
2312
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2313
|
+
</si>
|
2314
|
+
−
|
2315
|
+
21<si>
|
2316
|
+
<t>782</t>
|
2317
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2318
|
+
</si>
|
2319
|
+
−
|
2320
|
+
22<si>
|
2321
|
+
<t>876</t>
|
2322
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2323
|
+
</si>
|
2324
|
+
−
|
2325
|
+
23<si>
|
2326
|
+
<t>9901</t>
|
2327
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2328
|
+
</si>
|
2329
|
+
−
|
2330
|
+
24<si>
|
2331
|
+
<t>1235</t>
|
2332
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2333
|
+
</si>
|
2334
|
+
−
|
2335
|
+
25<si>
|
2336
|
+
<t>16547</t>
|
2337
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2338
|
+
</si>
|
2339
|
+
−
|
2340
|
+
26<si>
|
2341
|
+
<t>7789</t>
|
2342
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2343
|
+
</si>
|
2344
|
+
−
|
2345
|
+
27<si>
|
2346
|
+
<t>89</t>
|
2347
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2348
|
+
</si>
|
2349
|
+
−
|
2350
|
+
28<si>
|
2351
|
+
<t>12A</t>
|
2352
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2353
|
+
</si>
|
2354
|
+
−
|
2355
|
+
29<si>
|
2356
|
+
<t>19A</t>
|
2357
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2358
|
+
</si>
|
2359
|
+
−
|
2360
|
+
30<si>
|
2361
|
+
<t>256</t>
|
2362
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2363
|
+
</si>
|
2364
|
+
−
|
2365
|
+
31<si>
|
2366
|
+
<t>129B</t>
|
2367
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2368
|
+
</si>
|
2369
|
+
−
|
2370
|
+
32<si>
|
2371
|
+
<t>11</t>
|
2372
|
+
<phoneticPr fontId="1" type="noConversion"/>
|
2373
|
+
</si>
|
2374
|
+
−
|
2375
|
+
33<si>
|
2376
|
+
<t>Last Name</t>
|
2377
|
+
</si>
|
2378
|
+
−
|
2379
|
+
34<si>
|
2380
|
+
<t>First Name</t>
|
2381
|
+
</si>
|
2382
|
+
−
|
2383
|
+
35 <si>
|
2384
|
+
<t>Middle Name</t>
|
2385
|
+
</si>
|
2386
|
+
−
|
2387
|
+
36<si>
|
2388
|
+
<t>Resident ID</t>
|
2389
|
+
</si>
|
2390
|
+
−
|
2391
|
+
37<si>
|
2392
|
+
<t>Room Number</t>
|
2393
|
+
</si>
|
2394
|
+
−
|
2395
|
+
38<si>
|
2396
|
+
<t>Provider ID #</t>
|
2397
|
+
</si>
|
2398
|
+
</sst>
|
2399
|
+
Hello Thomas,
|
2400
|
+
How are you doing ? I am running into this strange issue with roo plugin (1.0.0). The attached
|
2401
|
+
spreadsheet has all the cells formatted as "text", when I view in the Excel spreadsheet. But when it
|
2402
|
+
get's into roo plugin (set_cell_values method - line 299), the values for the cells 1,1, 1,2, 1,3...1,6
|
2403
|
+
show as 'date' instead of 'string'.
|
2404
|
+
Because of this my parser is failing to get the proper values from the spreadsheet. Any ideas why
|
2405
|
+
the formatting is getting set to the wrong value ?
|
2406
|
+
Even stranger is if I save this file as ".XLS" and parse it the cells parse out fine as they are treated as
|
2407
|
+
'string' instead of 'date'.
|
2408
|
+
This attached file is the newer format of Microsoft Excel (.xlsx).
|
2409
|
+
|
2410
|
+
=end
|
2411
|
+
xx = Roo::Excelx.new(File.join(TESTDIR,'sample_file_2008-09-13.xlsx'))
|
2412
|
+
assert_equal 1, xx.sheets.size
|
2413
|
+
|
2414
|
+
assert_equal 1, xx.first_row
|
2415
|
+
assert_equal 9, xx.last_row # 9 ist richtig. Es sind zwar 44 Zeilen definiert, aber der Rest hat keinen Inhalt
|
2416
|
+
assert_equal 1, xx.first_column
|
2417
|
+
assert_equal 6, xx.last_column
|
2418
|
+
assert_equal 'A', xx.first_column_as_letter
|
2419
|
+
assert_equal 'F', xx.last_column_as_letter
|
2420
|
+
|
2421
|
+
assert_nothing_raised() {
|
2422
|
+
puts xx.info
|
2423
|
+
}
|
2424
|
+
p xx.cell(1,1)
|
2425
|
+
p xx.cell(1,2)
|
2426
|
+
p xx.cell(1,3)
|
2427
|
+
p xx.cell(1,4)
|
2428
|
+
p xx.cell(1,5)
|
2429
|
+
p xx.cell(1,6)
|
2430
|
+
xx.default_sheet = xx.sheets.first
|
2431
|
+
|
2432
|
+
assert_equal 'Last Name', xx.cell('A',1)
|
2433
|
+
|
2434
|
+
1.upto(6) do |col|
|
2435
|
+
assert_equal :string, xx.celltype(1,col)
|
2436
|
+
end
|
2437
|
+
#for col in (1..6)
|
2438
|
+
# assert_equal "1234", xx.cell(1,col)
|
2439
|
+
#end
|
2440
|
+
end
|
2441
|
+
end
|
2442
|
+
end
|
2443
|
+
|
2444
|
+
#-- bei diesen Test bekomme ich seltsamerweise einen Fehler can't allocate
|
2445
|
+
#-- memory innerhalb der zip-Routinen => erstmal deaktiviert
|
2446
|
+
def test_huge_table_timing_10_000_openoffice #no test file
|
2447
|
+
local_only do
|
2448
|
+
with_each_spreadsheet(:name=>'/home/tp/ruby-test/too-testing/speedtest_10000') do |oo|
|
2449
|
+
if LONG_RUN
|
2450
|
+
assert_nothing_raised(Timeout::Error) {
|
2451
|
+
Timeout::timeout(3.minutes) do |timeout_length|
|
2452
|
+
# process every cell
|
2453
|
+
sum = 0
|
2454
|
+
oo.sheets.each {|sheet|
|
2455
|
+
oo.default_sheet = sheet
|
2456
|
+
for row in oo.first_row..oo.last_row do
|
2457
|
+
for col in oo.first_column..oo.last_column do
|
2458
|
+
c = oo.cell(row,col)
|
2459
|
+
sum += c.length if c
|
2460
|
+
end
|
2461
|
+
end
|
2462
|
+
p sum
|
2463
|
+
assert sum > 0
|
2464
|
+
}
|
2465
|
+
end
|
2466
|
+
}
|
2467
|
+
end
|
2468
|
+
end
|
2469
|
+
end
|
2470
|
+
end
|
2471
|
+
|
2472
|
+
def test_bug_encoding_exported_from_google
|
2473
|
+
if EXCEL
|
2474
|
+
local_only do
|
2475
|
+
xl = Roo::Excel.new(File.join(TESTDIR,"numbers1_from_google.xls"))
|
2476
|
+
xl.default_sheet = xl.sheets.first
|
2477
|
+
assert_equal 'test', xl.cell(2,'F')
|
2478
|
+
end
|
2479
|
+
end
|
2480
|
+
end
|
2481
|
+
|
2482
|
+
def test_invalid_iconv_from_ms
|
2483
|
+
local_only do
|
2484
|
+
#TODO: does only run within a darwin-environment
|
2485
|
+
if RUBY_PLATFORM.downcase =~ /darwin/
|
2486
|
+
assert_nothing_raised() {
|
2487
|
+
Roo::Excel.new(File.join(TESTDIR,"ms.xls"))
|
2488
|
+
}
|
2489
|
+
end
|
2490
|
+
end
|
2491
|
+
end
|
2492
|
+
|
2493
|
+
# def test_false_encoding
|
2494
|
+
# ex = Roo::Excel.new(File.join(TESTDIR,'false_encoding.xls'))
|
2495
|
+
# ex.default_sheet = ex.sheets.first
|
2496
|
+
# assert_equal "Sheet1", ex.sheets.first
|
2497
|
+
# ex.first_row.upto(ex.last_row) do |row|
|
2498
|
+
# ex.first_column.upto(ex.last_column) do |col|
|
2499
|
+
# content = ex.cell(row,col)
|
2500
|
+
# puts "#{row}/#{col}"
|
2501
|
+
# #puts content if ! ex.empty?(row,col) or ex.formula?(row,col)
|
2502
|
+
# if ex.formula?(row,col)
|
2503
|
+
# #! ex.empty?(row,col)
|
2504
|
+
# puts content
|
2505
|
+
# end
|
2506
|
+
# end
|
2507
|
+
# end
|
2508
|
+
# end
|
2509
|
+
|
2510
|
+
def test_simple_google
|
2511
|
+
if GOOGLE
|
2512
|
+
go = Roo::Google.new("egal")
|
2513
|
+
assert_equal "42", go.cell(1,1)
|
2514
|
+
end
|
2515
|
+
end
|
2516
|
+
def test_bug_c2 # no test file
|
2517
|
+
local_only do
|
2518
|
+
with_each_spreadsheet(:name=>'problem', :foramt=>:excel) do |oo|
|
2519
|
+
expected = ['Supermodel X','T6','Shaun White','Jeremy','Custom',
|
2520
|
+
'Warhol','Twin','Malolo','Supermodel','Air','Elite',
|
2521
|
+
'King','Dominant','Dominant Slick','Blunt','Clash',
|
2522
|
+
'Bullet','Tadashi Fuse','Jussi','Royale','S-Series',
|
2523
|
+
'Fish','Love','Feelgood ES','Feelgood','GTwin','Troop',
|
2524
|
+
'Lux','Stigma','Feather','Stria','Alpha','Feelgood ICS']
|
2525
|
+
result = oo.sheets[2..oo.sheets.length].map do |s|
|
2526
|
+
#(13..13).each do |s|
|
2527
|
+
#puts "#{name} (sheet: #{s})"
|
2528
|
+
#assert_equal "whatever (sheet: 13)", "#{name} (sheet: #{s})"
|
2529
|
+
oo.default_sheet = s
|
2530
|
+
oo.cell(2,'C')
|
2531
|
+
end
|
2532
|
+
assert_equal expected, result
|
2533
|
+
end
|
2534
|
+
end
|
2535
|
+
end
|
2536
|
+
|
2537
|
+
def test_bug_c2_parseexcel #no test file
|
2538
|
+
local_only do
|
2539
|
+
#-- this is OK
|
2540
|
+
@workbook = Spreadsheet::ParseExcel.parse(File.join(TESTDIR,"problem.xls"))
|
2541
|
+
worksheet = @workbook.worksheet(11)
|
2542
|
+
skip = 0
|
2543
|
+
line = 1
|
2544
|
+
row = 2
|
2545
|
+
col = 3
|
2546
|
+
worksheet.each(skip) { |row_par|
|
2547
|
+
if line == row
|
2548
|
+
if row_par == nil
|
2549
|
+
raise "nil"
|
2550
|
+
end
|
2551
|
+
cell = row_par.at(col-1)
|
2552
|
+
assert cell, "cell should not be nil"
|
2553
|
+
assert_equal "Air", cell.to_s('utf-8')
|
2554
|
+
end
|
2555
|
+
line += 1
|
2556
|
+
}
|
2557
|
+
#-- worksheet 12 does not work
|
2558
|
+
@workbook = Spreadsheet::ParseExcel.parse(File.join(TESTDIR,"problem.xls"))
|
2559
|
+
worksheet = @workbook.worksheet(12)
|
2560
|
+
skip = 0
|
2561
|
+
line = 1
|
2562
|
+
row = 2
|
2563
|
+
col = 3
|
2564
|
+
worksheet.each(skip) { |row_par|
|
2565
|
+
if line == row
|
2566
|
+
if row_par == nil
|
2567
|
+
raise "nil"
|
2568
|
+
end
|
2569
|
+
cell = row_par.at(col-1)
|
2570
|
+
assert cell, "cell should not be nil"
|
2571
|
+
assert_equal "Elite", cell.to_s('utf-8')
|
2572
|
+
end
|
2573
|
+
line += 1
|
2574
|
+
}
|
2575
|
+
end
|
2576
|
+
end
|
2577
|
+
|
2578
|
+
def test_bug_c2_excelx #no test file
|
2579
|
+
local_only do
|
2580
|
+
expected = ['Supermodel X','T6','Shaun White','Jeremy','Custom',
|
2581
|
+
'Warhol','Twin','Malolo','Supermodel','Air','Elite',
|
2582
|
+
'King','Dominant','Dominant Slick','Blunt','Clash',
|
2583
|
+
'Bullet','Tadashi Fuse','Jussi','Royale','S-Series',
|
2584
|
+
'Fish','Love','Feelgood ES','Feelgood','GTwin','Troop',
|
2585
|
+
'Lux','Stigma','Feather','Stria','Alpha','Feelgood ICS']
|
2586
|
+
@e = Roo::Excelx.new(File.join(TESTDIR,"problem.xlsx"))
|
2587
|
+
result = @e.sheets[2..@e.sheets.length].map do |s|
|
2588
|
+
@e.default_sheet = s
|
2589
|
+
# assert_equal "A.",@e.cell('a',13)
|
2590
|
+
#puts "#{name} (sheet: #{s})"
|
2591
|
+
#assert_equal :string, @e.celltype('c',2)
|
2592
|
+
#assert_equal "Vapor (sheet: Vapor)", "#{name} (sheet: #{@e.sheets.first})"
|
2593
|
+
assert @e.cell(2,'c')
|
2594
|
+
@e.cell(2,'C')
|
2595
|
+
end
|
2596
|
+
assert_equal expected, result
|
2597
|
+
|
2598
|
+
@e = Roo::Excelx.new(File.join(TESTDIR,"problem.xlsx"))
|
2599
|
+
#@e.sheets[2..@e.sheets.length].each do |s|
|
2600
|
+
(13..13).each do |s|
|
2601
|
+
@e.default_sheet = s
|
2602
|
+
name = @e.cell(2,'C')
|
2603
|
+
#puts "#{name} (sheet: #{s})"
|
2604
|
+
assert_equal "Elite (sheet: 13)", "#{name} (sheet: #{s})"
|
2605
|
+
end
|
2606
|
+
end
|
2607
|
+
end
|
2608
|
+
|
2609
|
+
def test_compare_csv_excelx_excel #no test file
|
2610
|
+
if EXCELX
|
2611
|
+
# parseexcel bug
|
2612
|
+
local_only do
|
2613
|
+
s1 = Roo::Excel.new(File.join(TESTDIR,"problem.xls"))
|
2614
|
+
s2 = Roo::Excelx.new(File.join(TESTDIR,"problem.xlsx"))
|
2615
|
+
s1.sheets.each {|sh| #TODO:
|
2616
|
+
s1.default_sheet = sh
|
2617
|
+
s2.default_sheet = sh
|
2618
|
+
File.delete_if_exist("/tmp/problem.csv")
|
2619
|
+
File.delete_if_exist("/tmp/problemx.csv")
|
2620
|
+
assert s1.to_csv("/tmp/problem.csv")
|
2621
|
+
assert s2.to_csv("/tmp/problemx.csv")
|
2622
|
+
assert File.exists?("/tmp/problem.csv")
|
2623
|
+
assert File.exists?("/tmp/problemx.csv")
|
2624
|
+
assert_equal "", `diff /tmp/problem.csv /tmp/problemx.csv`, "Unterschied in Sheet #{sh} #{s1.sheets.index(sh)}"
|
2625
|
+
}
|
2626
|
+
end
|
2627
|
+
end
|
2628
|
+
end
|
2629
|
+
|
2630
|
+
def test_problemx_csv_imported #no test file
|
2631
|
+
if EXCEL
|
2632
|
+
local_only do
|
2633
|
+
# wieder eingelesene CSV-Datei aus obigem Test
|
2634
|
+
# muss identisch mit problem.xls sein
|
2635
|
+
# Importieren aus csv-Datei muss manuell gemacht werden
|
2636
|
+
ex = Roo::Excel.new(File.join(TESTDIR,"problem.xls"))
|
2637
|
+
cs = Roo::Excel.new(File.join(TESTDIR,"problemx_csv_imported.xls"))
|
2638
|
+
# nur das erste sheet betrachten
|
2639
|
+
ex.default_sheet = ex.sheets.first
|
2640
|
+
cs.default_sheet = cs.sheets.first
|
2641
|
+
ex.first_row.upto(ex.last_row) do |row|
|
2642
|
+
ex.first_column.upto(ex.last_column) do |col|
|
2643
|
+
assert_equal ex.cell(row,col), cs.cell(row,col), "cell #{row}/#{col} does not match '#{ex.cell(row,col)}' '#{cs.cell(row,col)}'"
|
2644
|
+
assert_equal ex.celltype(row,col), cs.celltype(row,col), "celltype #{row}/#{col} does not match"
|
2645
|
+
assert_equal ex.empty?(row,col), cs.empty?(row,col), "empty? #{row}/#{col} does not match"
|
2646
|
+
if defined? excel_supports_formulas
|
2647
|
+
assert_equal ex.formula?(row,col), cs.formula?(row,col), "formula? #{row}/#{col} does not match"
|
2648
|
+
assert_equal ex.formula(row,col), cs.formula(row,col), "formula #{row}/#{col} does not match"
|
2649
|
+
end
|
2650
|
+
end
|
2651
|
+
end
|
2652
|
+
cs.first_row.upto(cs.last_row) do |row|
|
2653
|
+
cs.first_column.upto(cs.last_column) do |col|
|
2654
|
+
assert_equal ex.cell(row,col), cs.cell(row,col), "cell #{row}/#{col} does not match '#{ex.cell(row,col)}' '#{cs.cell(row,col)}'"
|
2655
|
+
assert_equal ex.celltype(row,col), cs.celltype(row,col), "celltype #{row}/#{col} does not match"
|
2656
|
+
assert_equal ex.empty?(row,col), cs.empty?(row,col), "empty? #{row}/#{col} does not match"
|
2657
|
+
if defined? excel_supports_formulas
|
2658
|
+
assert_equal ex.formula?(row,col), cs.formula?(row,col), "formula? #{row}/#{col} does not match"
|
2659
|
+
assert_equal ex.formula(row,col), cs.formula(row,col), "formula #{row}/#{col} does not match"
|
2660
|
+
end
|
2661
|
+
end
|
2662
|
+
end
|
2663
|
+
end
|
2664
|
+
end
|
2665
|
+
end
|
2666
|
+
|
2667
|
+
def test_open_from_uri
|
2668
|
+
if ONLINE
|
2669
|
+
if OPENOFFICE
|
2670
|
+
assert_raises(RuntimeError) {
|
2671
|
+
Roo::Openoffice.new("http://gibbsnichtdomainxxxxx.com/file.ods")
|
2672
|
+
}
|
2673
|
+
end
|
2674
|
+
if EXCEL
|
2675
|
+
assert_raises(RuntimeError) {
|
2676
|
+
Roo::Excel.new("http://gibbsnichtdomainxxxxx.com/file.xls")
|
2677
|
+
}
|
2678
|
+
end
|
2679
|
+
if EXCELX
|
2680
|
+
assert_raises(RuntimeError) {
|
2681
|
+
Roo::Excelx.new("http://gibbsnichtdomainxxxxx.com/file.xlsx")
|
2682
|
+
}
|
2683
|
+
end
|
2684
|
+
end
|
2685
|
+
end
|
2686
|
+
|
2687
|
+
def test_to_ascii_openoffice #file does not exist
|
2688
|
+
local_only do
|
2689
|
+
with_each_spreadsheet(:name=>'verysimple_spreadsheet', :format=>:openoffice) do |oo|
|
2690
|
+
oo.default_sheet = oo.sheets.first
|
2691
|
+
expected="
|
2692
|
+
A | B | C |
|
2693
|
+
-------+-------+------|
|
2694
|
+
7| 8| 9|
|
2695
|
+
-------+-------+------|
|
2696
|
+
4| 5| 6|
|
2697
|
+
-------+-------+------|
|
2698
|
+
1| 2| 3|
|
2699
|
+
----------------------/
|
2700
|
+
"
|
2701
|
+
assert_equal expected, oo.to_ascii
|
2702
|
+
end
|
2703
|
+
end
|
2704
|
+
end
|
2705
|
+
|
2706
|
+
# def test_soap_server
|
2707
|
+
# #threads = []
|
2708
|
+
# #threads << Thread.new("serverthread") do
|
2709
|
+
# fork do
|
2710
|
+
# p "serverthread started"
|
2711
|
+
# puts "in child, pid = #$$"
|
2712
|
+
# puts `/usr/bin/ruby rooserver.rb`
|
2713
|
+
# p "serverthread finished"
|
2714
|
+
# end
|
2715
|
+
# #threads << Thread.new("clientthread") do
|
2716
|
+
# p "clientthread started"
|
2717
|
+
# sleep 10
|
2718
|
+
# proxy = SOAP::RPC::Driver.new("http://localhost:12321","spreadsheetserver")
|
2719
|
+
# proxy.add_method('cell','row','col')
|
2720
|
+
# proxy.add_method('officeversion')
|
2721
|
+
# proxy.add_method('last_row')
|
2722
|
+
# proxy.add_method('last_column')
|
2723
|
+
# proxy.add_method('first_row')
|
2724
|
+
# proxy.add_method('first_column')
|
2725
|
+
# proxy.add_method('sheets')
|
2726
|
+
# proxy.add_method('set_default_sheet','s')
|
2727
|
+
# proxy.add_method('ferien_fuer_region', 'region')
|
2728
|
+
|
2729
|
+
# sheets = proxy.sheets
|
2730
|
+
# p sheets
|
2731
|
+
# proxy.set_default_sheet(sheets.first)
|
2732
|
+
|
2733
|
+
# assert_equal 1, proxy.first_row
|
2734
|
+
# assert_equal 1, proxy.first_column
|
2735
|
+
# assert_equal 187, proxy.last_row
|
2736
|
+
# assert_equal 7, proxy.last_column
|
2737
|
+
# assert_equal 42, proxy.cell('C',8)
|
2738
|
+
# assert_equal 43, proxy.cell('F',12)
|
2739
|
+
# assert_equal "1.0", proxy.officeversion
|
2740
|
+
# p "clientthread finished"
|
2741
|
+
# #end
|
2742
|
+
# #threads.each {|t| t.join }
|
2743
|
+
# puts "fertig"
|
2744
|
+
# Process.kill("INT",pid)
|
2745
|
+
# pid = Process.wait
|
2746
|
+
# puts "child terminated, pid= #{pid}, status= #{$?.exitstatus}"
|
2747
|
+
# end
|
2748
|
+
|
2749
|
+
def split_coord(s)
|
2750
|
+
letter = ""
|
2751
|
+
number = 0
|
2752
|
+
i = 0
|
2753
|
+
while i<s.length and "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".include?(s[i,1])
|
2754
|
+
letter += s[i,1]
|
2755
|
+
i+=1
|
2756
|
+
end
|
2757
|
+
while i<s.length and "01234567890".include?(s[i,1])
|
2758
|
+
number = number*10 + s[i,1].to_i
|
2759
|
+
i+=1
|
2760
|
+
end
|
2761
|
+
if letter=="" or number==0
|
2762
|
+
raise ArgumentError
|
2763
|
+
end
|
2764
|
+
return letter,number
|
2765
|
+
end
|
2766
|
+
|
2767
|
+
#def sum(s,expression)
|
2768
|
+
# arg = expression.split(':')
|
2769
|
+
# b,z = split_coord(arg[0])
|
2770
|
+
# first_row = z
|
2771
|
+
# first_col = Openoffice.letter_to_number(b)
|
2772
|
+
# b,z = split_coord(arg[1])
|
2773
|
+
# last_row = z
|
2774
|
+
# last_col = Openoffice.letter_to_number(b)
|
2775
|
+
# result = 0
|
2776
|
+
# first_row.upto(last_row) {|row|
|
2777
|
+
# first_col.upto(last_col) {|col|
|
2778
|
+
# result = result + s.cell(row,col)
|
2779
|
+
# }
|
2780
|
+
# }
|
2781
|
+
# result
|
2782
|
+
#end
|
2783
|
+
|
2784
|
+
#def test_dsl
|
2785
|
+
# s = Openoffice.new(File.join(TESTDIR,"numbers1.ods"))
|
2786
|
+
# s.default_sheet = s.sheets.first
|
2787
|
+
#
|
2788
|
+
# s.set 'a',1, 5
|
2789
|
+
# s.set 'b',1, 3
|
2790
|
+
# s.set 'c',1, 7
|
2791
|
+
# s.set('a',2, s.cell('a',1)+s.cell('b',1))
|
2792
|
+
# assert_equal 8, s.cell('a',2)
|
2793
|
+
#
|
2794
|
+
# assert_equal 15, sum(s,'A1:C1')
|
2795
|
+
# end
|
2796
|
+
|
2797
|
+
#def test_create_spreadsheet1
|
2798
|
+
# name = File.join(TESTDIR,'createdspreadsheet.ods')
|
2799
|
+
# rm(name) if File.exists?(File.join(TESTDIR,'createdspreadsheet.ods'))
|
2800
|
+
# # anlegen, falls noch nicht existierend
|
2801
|
+
# s = Openoffice.new(name,true)
|
2802
|
+
# assert File.exists?(name)
|
2803
|
+
#end
|
2804
|
+
|
2805
|
+
#def test_create_spreadsheet2
|
2806
|
+
# # anlegen, falls noch nicht existierend
|
2807
|
+
# s = Openoffice.new(File.join(TESTDIR,"createdspreadsheet.ods"),true)
|
2808
|
+
# s.set 'a',1,42
|
2809
|
+
# s.set 'b',1,43
|
2810
|
+
# s.set 'c',1,44
|
2811
|
+
# s.save
|
2812
|
+
#
|
2813
|
+
# t = Openoffice.new(File.join(TESTDIR,"createdspreadsheet.ods"))
|
2814
|
+
# assert_equal 42, t.cell(1,'a')
|
2815
|
+
# assert_equal 43, t.cell('b',1)
|
2816
|
+
# assert_equal 44, t.cell('c',3)
|
2817
|
+
#end
|
2818
|
+
|
2819
|
+
# We don't have the bode-v1.xlsx test file
|
2820
|
+
# #TODO: xlsx-Datei anpassen!
|
2821
|
+
# def test_excelx_open_from_uri_and_zipped
|
2822
|
+
# #TODO: gezippte xlsx Datei online zum Testen suchen
|
2823
|
+
# if EXCELX
|
2824
|
+
# if ONLINE
|
2825
|
+
# url = 'http://stiny-leonhard.de/bode-v1.xlsx.zip'
|
2826
|
+
# excel = Roo::Excelx.new(url, :zip)
|
2827
|
+
# assert_equal 'ist "e" im Nenner von H(s)', excel.cell('b', 5)
|
2828
|
+
# end
|
2829
|
+
# end
|
2830
|
+
# end
|
2831
|
+
|
2832
|
+
# def test_excelx_zipped
|
2833
|
+
# # TODO: bode...xls bei Gelegenheit nach .xlsx konverieren lassen und zippen!
|
2834
|
+
# if EXCELX
|
2835
|
+
# # diese Datei gibt es noch nicht gezippt
|
2836
|
+
# excel = Roo::Excelx.new(File.join(TESTDIR,"bode-v1.xlsx.zip"), :zip)
|
2837
|
+
# assert excel
|
2838
|
+
# assert_raises(ArgumentError) {
|
2839
|
+
# assert_equal 'ist "e" im Nenner von H(s)', excel.cell('b', 5)
|
2840
|
+
# }
|
2841
|
+
# excel.default_sheet = excel.sheets.first
|
2842
|
+
# assert_equal 'ist "e" im Nenner von H(s)', excel.cell('b', 5)
|
2843
|
+
# end
|
2844
|
+
# end
|
2845
|
+
|
2598
2846
|
end # class
|