roo 1.11.2 → 1.12.0

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.
@@ -0,0 +1,19 @@
1
+ require 'spec_helper'
2
+
3
+ describe Roo::LibreOffice do
4
+ describe '.new' do
5
+ subject {
6
+ Roo::LibreOffice.new('test/files/numbers1.ods')
7
+ }
8
+
9
+ it 'creates an instance' do
10
+ expect(subject).to be_a(Roo::LibreOffice)
11
+ end
12
+ end
13
+ end
14
+
15
+ describe Roo::Libreoffice do
16
+ it 'is an alias of LibreOffice' do
17
+ expect(Roo::Libreoffice).to eq(Roo::LibreOffice)
18
+ end
19
+ end
@@ -0,0 +1,21 @@
1
+ require 'spec_helper'
2
+
3
+ describe Roo::OpenOffice do
4
+ describe '.new' do
5
+ subject {
6
+ Roo::OpenOffice.new('test/files/numbers1.ods')
7
+ }
8
+
9
+ it 'creates an instance' do
10
+ expect(subject).to be_a(Roo::OpenOffice)
11
+ end
12
+ end
13
+
14
+ # OpenOffice is an alias of LibreOffice. See libreoffice_spec.
15
+ end
16
+
17
+ describe Roo::Openoffice do
18
+ it 'is an alias of LibreOffice' do
19
+ expect(Roo::Openoffice).to eq(Roo::OpenOffice)
20
+ end
21
+ end
@@ -6,9 +6,21 @@ describe Roo::Spreadsheet do
6
6
  let(:filename) { 'file.XLS' }
7
7
 
8
8
  it 'loads the proper type' do
9
- Roo::Excel.should_receive(:new).with(filename)
9
+ Roo::Excel.should_receive(:new).with(filename, {})
10
10
  Roo::Spreadsheet.open(filename)
11
11
  end
12
12
  end
13
+
14
+ context 'for a csv file' do
15
+ let(:filename) { 'file.csv' }
16
+ let(:options) { {csv_options: {col_sep: '"'}} }
17
+
18
+ context 'with options' do
19
+ it 'passes the options through' do
20
+ Roo::CSV.should_receive(:new).with(filename, options)
21
+ Roo::Spreadsheet.open(filename, options)
22
+ end
23
+ end
24
+ end
13
25
  end
14
26
  end
@@ -1 +1,8 @@
1
1
  require File.expand_path("../../lib/roo", __FILE__)
2
+
3
+ require 'vcr'
4
+
5
+ VCR.configure do |c|
6
+ c.cassette_library_dir = 'spec/fixtures/vcr_cassettes'
7
+ c.hook_into :webmock # or :fakeweb
8
+ end
@@ -1,7 +1,7 @@
1
1
  require 'roo'
2
2
  Dir.glob("test/files/*.ods").each do |fn|
3
3
  begin
4
- oo = Roo::Openoffice.new fn
4
+ oo = Roo::OpenOffice.new fn
5
5
  print File.basename(fn) + " "
6
6
  puts oo.officeversion
7
7
  rescue Zip::ZipError, Errno::ENOENT => e
Binary file
Binary file
@@ -2,7 +2,7 @@
2
2
  require 'roo'
3
3
 
4
4
  oo = Excel.new("tmp.xls")
5
- #oo = Openoffice.new("tmp.ods")
5
+ #oo = OpenOffice.new("tmp.ods")
6
6
  oo.default_sheet = oo.sheets.first
7
7
  oo.first_row.upto(oo.last_row) do |row|
8
8
  oo.first_column.upto(oo.last_column) do |col|
@@ -1,10 +1,10 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  require File.dirname(__FILE__) + '/test_helper'
3
3
 
4
- class TestGenericSpreadsheet < Test::Unit::TestCase
4
+ class TestBase < Test::Unit::TestCase
5
5
 
6
6
  def setup
7
- @klass = Class.new(Roo::GenericSpreadsheet) do
7
+ @klass = Class.new(Roo::Base) do
8
8
  def initialize(filename='some_file')
9
9
  super
10
10
  @filename = filename
@@ -32,73 +32,73 @@ class TestGenericSpreadsheet < Test::Unit::TestCase
32
32
  setup_test_sheet(@oo)
33
33
  end
34
34
 
35
- context 'Roo::GenericSpreadsheet.letter_to_number(letter)' do
35
+ context 'Roo::Base.letter_to_number(letter)' do
36
36
  should "give us 1 for 'A' and 'a'" do
37
- assert_equal 1, Roo::GenericSpreadsheet.letter_to_number('A')
38
- assert_equal 1, Roo::GenericSpreadsheet.letter_to_number('a')
37
+ assert_equal 1, Roo::Base.letter_to_number('A')
38
+ assert_equal 1, Roo::Base.letter_to_number('a')
39
39
  end
40
40
 
41
41
  should "give us the correct value for 'Z'" do
42
- assert_equal 26, Roo::GenericSpreadsheet.letter_to_number('Z')
42
+ assert_equal 26, Roo::Base.letter_to_number('Z')
43
43
  end
44
44
 
45
45
  should "give us the correct value for 'AA' regardless of case mixing" do
46
- assert_equal 27, Roo::GenericSpreadsheet.letter_to_number('AA')
47
- assert_equal 27, Roo::GenericSpreadsheet.letter_to_number('aA')
48
- assert_equal 27, Roo::GenericSpreadsheet.letter_to_number('Aa')
49
- assert_equal 27, Roo::GenericSpreadsheet.letter_to_number('aa')
46
+ assert_equal 27, Roo::Base.letter_to_number('AA')
47
+ assert_equal 27, Roo::Base.letter_to_number('aA')
48
+ assert_equal 27, Roo::Base.letter_to_number('Aa')
49
+ assert_equal 27, Roo::Base.letter_to_number('aa')
50
50
  end
51
51
 
52
52
  should "give us the correct value for 'AB'" do
53
- assert_equal 28, Roo::GenericSpreadsheet.letter_to_number('AB')
53
+ assert_equal 28, Roo::Base.letter_to_number('AB')
54
54
  end
55
55
 
56
56
  should "give us the correct value for 'AZ'" do
57
- assert_equal 26*2, Roo::GenericSpreadsheet.letter_to_number('AZ')
57
+ assert_equal 26*2, Roo::Base.letter_to_number('AZ')
58
58
  end
59
59
 
60
60
  should "give us the correct value for 'BZ'" do
61
- assert_equal 26*3, Roo::GenericSpreadsheet.letter_to_number('BZ')
61
+ assert_equal 26*3, Roo::Base.letter_to_number('BZ')
62
62
  end
63
63
 
64
64
  should "give us the correct value for 'ZZ'" do
65
- assert_equal 26**2 + 26,Roo::GenericSpreadsheet.letter_to_number('ZZ')
65
+ assert_equal 26**2 + 26,Roo::Base.letter_to_number('ZZ')
66
66
  end
67
67
  end
68
68
 
69
- context "Roo::GenericSpreadsheet.number_to_letter" do
70
- Roo::GenericSpreadsheet::LETTERS.each_with_index do |l,i|
69
+ context "Roo::Base.number_to_letter" do
70
+ Roo::Base::LETTERS.each_with_index do |l,i|
71
71
  should "return '#{l}' when passed #{i+1}" do
72
- assert_equal l,Roo::GenericSpreadsheet.number_to_letter(i+1)
72
+ assert_equal l,Roo::Base.number_to_letter(i+1)
73
73
  end
74
74
  end
75
75
 
76
76
  should "return 'AA' when passed 27" do
77
- assert_equal 'AA',Roo::GenericSpreadsheet.number_to_letter(27)
77
+ assert_equal 'AA',Roo::Base.number_to_letter(27)
78
78
  end
79
79
 
80
80
  should "return 'AZ' when passed #{26*2}" do
81
- assert_equal 'AZ', Roo::GenericSpreadsheet.number_to_letter(26*2)
81
+ assert_equal 'AZ', Roo::Base.number_to_letter(26*2)
82
82
  end
83
83
 
84
84
  should "return 'BZ' when passed #{26*3}" do
85
- assert_equal 'BZ', Roo::GenericSpreadsheet.number_to_letter(26*3)
85
+ assert_equal 'BZ', Roo::Base.number_to_letter(26*3)
86
86
  end
87
87
 
88
88
  should "return 'ZZ' when passed #{26**2 + 26}" do
89
- assert_equal 'ZZ',Roo::GenericSpreadsheet.number_to_letter(26**2 + 26)
89
+ assert_equal 'ZZ',Roo::Base.number_to_letter(26**2 + 26)
90
90
  end
91
91
 
92
92
  should "return 'AAA' when passed #{26**2 + 27}" do
93
- assert_equal 'AAA',Roo::GenericSpreadsheet.number_to_letter(26**2 + 27)
93
+ assert_equal 'AAA',Roo::Base.number_to_letter(26**2 + 27)
94
94
  end
95
95
 
96
96
  should "return 'ZZZ' when passed #{26**3 + 26**2 + 26}" do
97
- assert_equal 'ZZZ',Roo::GenericSpreadsheet.number_to_letter(26**3 + 26**2 + 26)
97
+ assert_equal 'ZZZ',Roo::Base.number_to_letter(26**3 + 26**2 + 26)
98
98
  end
99
99
 
100
100
  should "return the correct letter when passed a Float" do
101
- assert_equal 'A',Roo::GenericSpreadsheet.number_to_letter(1.0)
101
+ assert_equal 'A',Roo::Base.number_to_letter(1.0)
102
102
  end
103
103
  end
104
104
 
@@ -177,53 +177,55 @@ class TestGenericSpreadsheet < Test::Unit::TestCase
177
177
  protected
178
178
  def setup_test_sheet(workbook=nil)
179
179
  workbook ||= @oo
180
- %w{sheet_values sheet_types cells_read}.each do |meth|
181
- send("set_#{meth}".to_sym,workbook)
182
- end
180
+ set_sheet_values(workbook)
181
+ set_sheet_types(workbook)
182
+ set_cells_read(workbook)
183
183
  end
184
184
 
185
185
  def set_sheet_values(workbook)
186
- vals = workbook.instance_variable_get(:@cell)
187
- vals[workbook.default_sheet][[5,1]] = Date.civil(1961,11,21).to_s
188
-
189
- vals[workbook.default_sheet][[8,3]] = "thisisc8"
190
- vals[workbook.default_sheet][[8,7]] = "thisisg8"
191
-
192
- vals[workbook.default_sheet][[12,1]] = 41.0
193
- vals[workbook.default_sheet][[12,2]] = 42.0
194
- vals[workbook.default_sheet][[12,3]] = 43.0
195
- vals[workbook.default_sheet][[12,4]] = 44.0
196
- vals[workbook.default_sheet][[12,5]] = 45.0
197
-
198
- vals[workbook.default_sheet][[15,3]] = 43.0
199
- vals[workbook.default_sheet][[15,4]] = 44.0
200
- vals[workbook.default_sheet][[15,5]] = 45.0
201
-
202
- vals[workbook.default_sheet][[16,3]] = "dreiundvierzig"
203
- vals[workbook.default_sheet][[16,4]] = "vierundvierzig"
204
- vals[workbook.default_sheet][[16,5]] = "fuenfundvierzig"
186
+ workbook.instance_variable_get(:@cell)[workbook.default_sheet] = {
187
+ [5,1] => Date.civil(1961,11,21).to_s,
188
+
189
+ [8,3] => "thisisc8",
190
+ [8,7] => "thisisg8",
191
+
192
+ [12,1] => 41.0,
193
+ [12,2] => 42.0,
194
+ [12,3] => 43.0,
195
+ [12,4] => 44.0,
196
+ [12,5] => 45.0,
197
+
198
+ [15,3] => 43.0,
199
+ [15,4] => 44.0,
200
+ [15,5] => 45.0,
201
+
202
+ [16,3] => "dreiundvierzig",
203
+ [16,4] => "vierundvierzig",
204
+ [16,5] => "fuenfundvierzig"
205
+ }
205
206
  end
206
207
 
207
208
  def set_sheet_types(workbook)
208
- types = workbook.instance_variable_get(:@cell_type)
209
- types[workbook.default_sheet][[5,1]] = :date
210
-
211
- types[workbook.default_sheet][[8,3]] = :string
212
- types[workbook.default_sheet][[8,7]] = :string
213
-
214
- types[workbook.default_sheet][[12,1]] = :float
215
- types[workbook.default_sheet][[12,2]] = :float
216
- types[workbook.default_sheet][[12,3]] = :float
217
- types[workbook.default_sheet][[12,4]] = :float
218
- types[workbook.default_sheet][[12,5]] = :float
219
-
220
- types[workbook.default_sheet][[15,3]] = :float
221
- types[workbook.default_sheet][[15,4]] = :float
222
- types[workbook.default_sheet][[15,5]] = :float
223
-
224
- types[workbook.default_sheet][[16,3]] = :string
225
- types[workbook.default_sheet][[16,4]] = :string
226
- types[workbook.default_sheet][[16,5]] = :string
209
+ workbook.instance_variable_get(:@cell_type)[workbook.default_sheet] = {
210
+ [5,1] => :date,
211
+
212
+ [8,3] => :string,
213
+ [8,7] => :string,
214
+
215
+ [12,1] => :float,
216
+ [12,2] => :float,
217
+ [12,3] => :float,
218
+ [12,4] => :float,
219
+ [12,5] => :float,
220
+
221
+ [15,3] => :float,
222
+ [15,4] => :float,
223
+ [15,5] => :float,
224
+
225
+ [16,3] => :string,
226
+ [16,4] => :string,
227
+ [16,5] => :string,
228
+ }
227
229
  end
228
230
 
229
231
  def set_first_row(workbook)
@@ -254,4 +256,4 @@ protected
254
256
  def expected_csv
255
257
  ",,,,,,\n,,,,,,\n,,,,,,\n,,,,,,\n1961-11-21,,,,,,\n,,,,,,\n,,,,,,\n,,\"thisisc8\",,,,\"thisisg8\"\n,,,,,,\n,,,,,,\n,,,,,,\n41,42,43,44,45,,\n,,,,,,\n,,,,,,\n,,43,44,45,,\n,,\"dreiundvierzig\",\"vierundvierzig\",\"fuenfundvierzig\",,\n"
256
258
  end
257
- end
259
+ end
@@ -24,43 +24,6 @@ $log = Logger.new(LOG_FILE)
24
24
  $log.level = Logger::DEBUG
25
25
 
26
26
  DISPLAY_LOG = false
27
- DB_LOG = false
28
-
29
- if DB_LOG
30
- require 'activerecord'
31
-
32
- def activerecord_connect
33
- ActiveRecord::Base.establish_connection(:adapter => "mysql",
34
- :database => "test_runs",
35
- :host => "localhost",
36
- :username => "root",
37
- :socket => "/var/run/mysqld/mysqld.sock")
38
- end
39
-
40
- class Testrun < ActiveRecord::Base
41
- end
42
- end
43
-
44
-
45
- class Roo::Csv
46
- remove_method :cell_postprocessing
47
- def cell_postprocessing(row,col,value)
48
- if row==1 and col==1
49
- return value.to_f
50
- end
51
- if row==1 and col==2
52
- return value.to_s
53
- end
54
- return value
55
- end
56
- end
57
-
58
- # helper method
59
- def local_only
60
- if ENV["roo_local"] == "thomas-p"
61
- yield
62
- end
63
- end
64
27
 
65
28
  # very simple diff implementation
66
29
  # output is an empty string if the files are equal
@@ -100,16 +63,9 @@ class File
100
63
  end
101
64
  end
102
65
 
103
- # :nodoc
104
- class Fixnum
105
- def minutes
106
- self * 60
107
- end
108
- end
109
-
110
66
  class Test::Unit::TestCase
111
67
  def key_of(spreadsheetname)
112
- return {
68
+ {
113
69
  #'formula' => 'rt4Pw1WmjxFtyfrqqy94wPw',
114
70
  'formula' => 'o10837434939102457526.3022866619437760118',
115
71
  #"write.me" => 'r6m7HFlUOwst0RTUTuhQ0Ow',
@@ -129,7 +85,6 @@ class Test::Unit::TestCase
129
85
  'datetime' => "ptu6bbahNZpYQEtZwzL_dZQ",
130
86
  'whitespace' => "rZyQaoFebVGeHKzjG6e9gRQ",
131
87
  'matrix' => '0AkCuGANLc3jFdHY3cWtYUkM4bVdadjZ5VGpfTzFEUEE',
132
- }[spreadsheetname]
133
88
  # 'numbers1' => "o10837434939102457526.4784396906364855777",
134
89
  # 'borders' => "o10837434939102457526.664868920231926255",
135
90
  # 'simple_spreadsheet' => "ptu6bbahNZpYe-L1vEBmgGA",
@@ -139,48 +94,12 @@ class Test::Unit::TestCase
139
94
  # 'formula' => 'o10837434939102457526.3022866619437760118',
140
95
  # 'time-test' => 'ptu6bbahNZpYBMhk01UfXSg',
141
96
  # 'datetime' => "ptu6bbahNZpYQEtZwzL_dZQ",
142
- rescue
97
+ }.fetch(spreadsheetname)
98
+ rescue KeyError
143
99
  raise "unknown spreadsheetname: #{spreadsheetname}"
144
100
  end
145
101
 
146
102
  def yaml_entry(row,col,type,value)
147
103
  "cell_#{row}_#{col}: \n row: #{row} \n col: #{col} \n celltype: #{type} \n value: #{value} \n"
148
104
  end
149
-
150
- if DB_LOG
151
- if ! (defined?(@connected) and @connected)
152
- activerecord_connect
153
- else
154
- @connected = true
155
- end
156
- end
157
- # alias unlogged_run run
158
- # def run(result, &block)
159
- # t1 = Time.now
160
- # if DISPLAY_LOG
161
- # v1,v2,_ = RUBY_VERSION.split('.')
162
- # if v1.to_i > 1 or
163
- # (v1.to_i == 1 and v2.to_i > 8)
164
- # # Ruby 1.9.x
165
- # print "RUNNING #{self.class} #{self.__name__} \t#{Time.now.to_s}"
166
- # else
167
- # # Ruby < 1.9.x
168
- # print "RUNNING #{self.class} #{@method_name} \t#{Time.now.to_s}"
169
- # end
170
- # STDOUT.flush
171
- # end
172
- # unlogged_run result, &block
173
- # t2 = Time.now
174
- # if DISPLAY_LOG
175
- # puts "\t#{t2-t1} seconds"
176
- # end
177
- # if DB_LOG
178
- # Testrun.create(
179
- # :class_name => self.class.to_s,
180
- # :test_name => @method_name,
181
- # :start => t1,
182
- # :duration => t2-t1
183
- # )
184
- # end
185
- # end
186
105
  end
@@ -21,11 +21,11 @@ require File.dirname(__FILE__) + '/test_helper'
21
21
 
22
22
  class TestRoo < Test::Unit::TestCase
23
23
 
24
- OPENOFFICE = false # do Openoffice-Spreadsheet Tests? (.ods files)
25
- EXCEL = true # do Excel Tests? (.xls files)
24
+ OPENOFFICE = true # do OpenOffice-Spreadsheet Tests? (.ods files)
25
+ EXCEL = true # do Excel Tests? (.xls files)
26
26
  GOOGLE = false # do Google-Spreadsheet Tests?
27
27
  EXCELX = true # do Excelx Tests? (.xlsx files)
28
- LIBREOFFICE = true # do Libreoffice tests? (.ods files)
28
+ LIBREOFFICE = true # do LibreOffice tests? (.ods files)
29
29
  CSV = true # do CSV tests? (.csv files)
30
30
 
31
31
  FORMATS = {
@@ -39,10 +39,6 @@ class TestRoo < Test::Unit::TestCase
39
39
  ONLINE = false
40
40
  LONG_RUN = false
41
41
 
42
- def test_internal_minutes
43
- assert_equal 42*60, 42.minutes
44
- end
45
-
46
42
  def fixture_filename(name, format)
47
43
  case format
48
44
  when :excel
@@ -52,7 +48,7 @@ class TestRoo < Test::Unit::TestCase
52
48
  when :openoffice, :libreoffice
53
49
  "#{name}.ods"
54
50
  when :google
55
- key_of(name) || name
51
+ key_of(name)
56
52
  end
57
53
  end
58
54
 
@@ -96,36 +92,9 @@ class TestRoo < Test::Unit::TestCase
96
92
  end
97
93
  end
98
94
 
99
- def test_classes
100
- if OPENOFFICE
101
- oo = Roo::Openoffice.new(File.join(TESTDIR,"numbers1.ods"))
102
- assert_kind_of Roo::Openoffice, oo
103
- end
104
- if EXCEL
105
- oo = Roo::Excel.new(File.join(TESTDIR,"numbers1.xls"))
106
- assert_kind_of Roo::Excel, oo
107
- end
108
- if GOOGLE
109
- oo = Roo::Google.new(key_of("numbers1"))
110
- assert_kind_of Roo::Google, oo
111
- end
112
- if EXCELX
113
- oo = Roo::Excelx.new(File.join(TESTDIR,"numbers1.xlsx"))
114
- assert_kind_of Roo::Excelx, oo
115
- end
116
- if LIBREOFFICE
117
- oo = Roo::Libreoffice.new(File.join(TESTDIR,"numbers1.ods"))
118
- assert_kind_of Roo::Libreoffice, oo
119
- end
120
- if CSV
121
- oo = Roo::Csv.new(File.join(TESTDIR,"numbers1.csv"))
122
- assert_kind_of Roo::Csv, oo
123
- end
124
- end
125
-
126
95
  def test_sheets_csv
127
96
  if CSV
128
- oo = Roo::Csv.new(File.join(TESTDIR,'numbers1.csv'))
97
+ oo = Roo::CSV.new(File.join(TESTDIR,'numbers1.csv'))
129
98
  assert_equal ["default"], oo.sheets
130
99
  assert_raise(RangeError) { oo.default_sheet = "no_sheet" }
131
100
  assert_raise(TypeError) { oo.default_sheet = [1,2,3] }
@@ -165,7 +134,7 @@ class TestRoo < Test::Unit::TestCase
165
134
  assert_equal "test", oo.cell(2,6)
166
135
  assert_equal :string, oo.celltype(2,6)
167
136
  assert_equal 11, oo.cell(2,7)
168
- unless oo.kind_of? Roo::Csv
137
+ unless oo.kind_of? Roo::CSV
169
138
  assert_equal :float, oo.celltype(2,7)
170
139
  end
171
140
  assert_equal 10, oo.cell(4,1)
@@ -178,7 +147,7 @@ class TestRoo < Test::Unit::TestCase
178
147
  assert_equal 12, oo.cell(4,'C')
179
148
  assert_equal 13, oo.cell(4,'D')
180
149
  assert_equal 14, oo.cell(4,'E')
181
- unless oo.kind_of? Roo::Csv
150
+ unless oo.kind_of? Roo::CSV
182
151
  assert_equal :date, oo.celltype(5,1)
183
152
  assert_equal Date.new(1961,11,21), oo.cell(5,1)
184
153
  assert_equal "1961-11-21", oo.cell(5,1).to_s
@@ -219,7 +188,7 @@ class TestRoo < Test::Unit::TestCase
219
188
 
220
189
  def test_libre_office
221
190
  if LIBREOFFICE
222
- oo = Roo::Libreoffice.new(File.join(TESTDIR, "numbers1.ods"))
191
+ oo = Roo::LibreOffice.new(File.join(TESTDIR, "numbers1.ods"))
223
192
  oo.default_sheet = oo.sheets.first
224
193
  assert_equal 41, oo.cell('a',12)
225
194
  end
@@ -235,16 +204,12 @@ class TestRoo < Test::Unit::TestCase
235
204
  assert_raise(RangeError) { oo.celltype('C',5,"non existing sheet name")}
236
205
  assert_raise(RangeError) { oo.empty?('C',5,"non existing sheet name")}
237
206
  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")}
207
+ assert_raise(NotImplementedError) { oo.formula?('C',5,"non existing sheet name")}
208
+ assert_raise(NotImplementedError) { oo.formula('C',5,"non existing sheet name")}
240
209
  else
241
210
  assert_raise(RangeError) { oo.formula?('C',5,"non existing sheet name")}
242
211
  assert_raise(RangeError) { oo.formula('C',5,"non existing sheet name")}
243
- begin
244
- assert_raise(RangeError) { oo.set('C',5,42,"non existing sheet name")}
245
- rescue NameError
246
- #
247
- end
212
+ assert_raise(RangeError) { oo.set('C',5,42,"non existing sheet name")}
248
213
  assert_raise(RangeError) { oo.formulas("non existing sheet name")}
249
214
  end
250
215
  assert_raise(RangeError) { oo.to_yaml({},1,1,1,1,"non existing sheet name")}
@@ -319,7 +284,7 @@ class TestRoo < Test::Unit::TestCase
319
284
  assert_equal "A:string",oo.cell(4, 3)+":"+oo.celltype(4, 3).to_s
320
285
 
321
286
  # Cells values in row 5:
322
- if oo.class == Roo::Openoffice
287
+ if oo.class == Roo::OpenOffice
323
288
  assert_equal "0.01:percentage",oo.cell(5, 1).to_s+":"+oo.celltype(5, 1).to_s
324
289
  assert_equal "0.01:percentage",oo.cell(5, 2).to_s+":"+oo.celltype(5, 2).to_s
325
290
  assert_equal "0.01:percentage",oo.cell(5, 3).to_s+":"+oo.celltype(5, 3).to_s
@@ -372,7 +337,7 @@ class TestRoo < Test::Unit::TestCase
372
337
  assert_equal 21.0, oo.cell('A',7) #TODO: better solution Fixnum/Float
373
338
  assert_equal :formula, oo.celltype('A',7)
374
339
  # assert_equal "=[Sheet2.A1]", oo.formula('C',7)
375
- # !!! different from formulas in Openoffice
340
+ # !!! different from formulas in OpenOffice
376
341
  #was: assert_equal "=sheet2!R[-6]C[-2]", oo.formula('C',7)
377
342
  # has Google changed their format of formulas/references to other sheets?
378
343
  assert_equal "=Sheet2!R[-6]C[-2]", oo.formula('C',7)
@@ -408,7 +373,7 @@ class TestRoo < Test::Unit::TestCase
408
373
  assert_equal 21, oo.cell('A',7)
409
374
  assert_equal :formula, oo.celltype('A',7)
410
375
  #steht nicht in Datei, oder?
411
- #nein, diesen Bezug habe ich nur in der Openoffice-Datei
376
+ #nein, diesen Bezug habe ich nur in der OpenOffice-Datei
412
377
  #assert_equal "=[Sheet2.A1]", oo.formula('C',7)
413
378
  assert_nil oo.formula('A',6)
414
379
  # assert_equal [[7, 1, "=SUM([.A1:.A6])"],
@@ -474,7 +439,7 @@ class TestRoo < Test::Unit::TestCase
474
439
  end
475
440
  end
476
441
 
477
- def test_excel_open_from_uri_and_zipped
442
+ def test_excel_download_uri_and_zipped
478
443
  if EXCEL
479
444
  if ONLINE
480
445
  url = 'http://stiny-leonhard.de/bode-v1.xls.zip'
@@ -485,11 +450,11 @@ class TestRoo < Test::Unit::TestCase
485
450
  end
486
451
  end
487
452
 
488
- def test_openoffice_open_from_uri_and_zipped
453
+ def test_openoffice_download_uri_and_zipped
489
454
  if OPENOFFICE
490
455
  if ONLINE
491
456
  url = 'http://spazioinwind.libero.it/s2/rata.ods.zip'
492
- sheet = Roo::Openoffice.new(url, :zip)
457
+ sheet = Roo::OpenOffice.new(url, :zip)
493
458
  #has been changed: assert_equal 'ist "e" im Nenner von H(s)', sheet.cell('b', 5)
494
459
  assert_in_delta 0.001, 505.14, sheet.cell('c', 33).to_f
495
460
  end
@@ -507,7 +472,7 @@ class TestRoo < Test::Unit::TestCase
507
472
  def test_openoffice_zipped
508
473
  if OPENOFFICE
509
474
  begin
510
- oo = Roo::Openoffice.new(File.join(TESTDIR,"bode-v1.ods.zip"), :zip)
475
+ oo = Roo::OpenOffice.new(File.join(TESTDIR,"bode-v1.ods.zip"), :zip)
511
476
  assert oo
512
477
  assert_equal 'ist "e" im Nenner von H(s)', oo.cell('b', 5)
513
478
  end
@@ -915,15 +880,15 @@ class TestRoo < Test::Unit::TestCase
915
880
 
916
881
  def test_excel_does_not_support_formulas
917
882
  with_each_spreadsheet(:name=>'false_encoding', :format=>:excel) do |oo|
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) }
883
+ assert_raise(NotImplementedError) { oo.formula('a',1) }
884
+ assert_raise(NotImplementedError) { oo.formula?('a',1) }
885
+ assert_raise(NotImplementedError) { oo.formulas(oo.sheets.first) }
921
886
  end
922
887
  end
923
888
 
924
889
  def get_extension(oo)
925
890
  case oo
926
- when Roo::Openoffice
891
+ when Roo::OpenOffice
927
892
  ".ods"
928
893
  when Roo::Excel
929
894
  ".xls"
@@ -983,35 +948,35 @@ class TestRoo < Test::Unit::TestCase
983
948
  oo.default_sheet = "Tabelle1"
984
949
  assert_equal 1, oo.first_row
985
950
  assert_equal 18, oo.last_row
986
- assert_equal Roo::Openoffice.letter_to_number('A'), oo.first_column
987
- assert_equal Roo::Openoffice.letter_to_number('G'), oo.last_column
951
+ assert_equal Roo::OpenOffice.letter_to_number('A'), oo.first_column
952
+ assert_equal Roo::OpenOffice.letter_to_number('G'), oo.last_column
988
953
  oo.default_sheet = "Name of Sheet 2"
989
954
  assert_equal 5, oo.first_row
990
955
  assert_equal 14, oo.last_row
991
- assert_equal Roo::Openoffice.letter_to_number('B'), oo.first_column
992
- assert_equal Roo::Openoffice.letter_to_number('E'), oo.last_column
956
+ assert_equal Roo::OpenOffice.letter_to_number('B'), oo.first_column
957
+ assert_equal Roo::OpenOffice.letter_to_number('E'), oo.last_column
993
958
  oo.default_sheet = "Sheet3"
994
959
  assert_equal 1, oo.first_row
995
960
  assert_equal 1, oo.last_row
996
- assert_equal Roo::Openoffice.letter_to_number('A'), oo.first_column
997
- assert_equal Roo::Openoffice.letter_to_number('BA'), oo.last_column
961
+ assert_equal Roo::OpenOffice.letter_to_number('A'), oo.first_column
962
+ assert_equal Roo::OpenOffice.letter_to_number('BA'), oo.last_column
998
963
  oo.default_sheet = "Sheet4"
999
964
  assert_equal 1, oo.first_row
1000
965
  assert_equal 1, oo.last_row
1001
- assert_equal Roo::Openoffice.letter_to_number('A'), oo.first_column
1002
- assert_equal Roo::Openoffice.letter_to_number('E'), oo.last_column
966
+ assert_equal Roo::OpenOffice.letter_to_number('A'), oo.first_column
967
+ assert_equal Roo::OpenOffice.letter_to_number('E'), oo.last_column
1003
968
  oo.default_sheet = "Sheet5"
1004
969
  assert_equal 1, oo.first_row
1005
970
  assert_equal 6, oo.last_row
1006
- assert_equal Roo::Openoffice.letter_to_number('A'), oo.first_column
1007
- assert_equal Roo::Openoffice.letter_to_number('E'), oo.last_column
971
+ assert_equal Roo::OpenOffice.letter_to_number('A'), oo.first_column
972
+ assert_equal Roo::OpenOffice.letter_to_number('E'), oo.last_column
1008
973
  end
1009
974
  end
1010
975
 
1011
976
  def test_should_raise_file_not_found_error
1012
977
  if OPENOFFICE
1013
978
  assert_raise(IOError) {
1014
- Roo::Openoffice.new(File.join('testnichtvorhanden','Bibelbund.ods'))
979
+ Roo::OpenOffice.new(File.join('testnichtvorhanden','Bibelbund.ods'))
1015
980
  }
1016
981
  end
1017
982
  if EXCEL
@@ -1203,9 +1168,9 @@ Sheet 3:
1203
1168
  def test_file_warning_default
1204
1169
  if OPENOFFICE
1205
1170
  assert_raises(TypeError, "test/files/numbers1.xls is not an openoffice spreadsheet") {
1206
- Roo::Openoffice.new(File.join(TESTDIR,"numbers1.xls"))
1171
+ Roo::OpenOffice.new(File.join(TESTDIR,"numbers1.xls"))
1207
1172
  }
1208
- assert_raises(TypeError) { Roo::Openoffice.new(File.join(TESTDIR,"numbers1.xlsx")) }
1173
+ assert_raises(TypeError) { Roo::OpenOffice.new(File.join(TESTDIR,"numbers1.xlsx")) }
1209
1174
  end
1210
1175
  if EXCEL
1211
1176
  assert_raises(TypeError) { Roo::Excel.new(File.join(TESTDIR,"numbers1.ods")) }
@@ -1219,8 +1184,8 @@ Sheet 3:
1219
1184
 
1220
1185
  def test_file_warning_error
1221
1186
  if OPENOFFICE
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) }
1187
+ assert_raises(TypeError) { Roo::OpenOffice.new(File.join(TESTDIR,"numbers1.xls"),false,:error) }
1188
+ assert_raises(TypeError) { Roo::OpenOffice.new(File.join(TESTDIR,"numbers1.xlsx"),false,:error) }
1224
1189
  end
1225
1190
  if EXCEL
1226
1191
  assert_raises(TypeError) { Roo::Excel.new(File.join(TESTDIR,"numbers1.ods"),false,:error) }
@@ -1236,12 +1201,12 @@ Sheet 3:
1236
1201
  if OPENOFFICE
1237
1202
  assert_nothing_raised(TypeError) {
1238
1203
  assert_raises(Zip::ZipError) {
1239
- Roo::Openoffice.new(File.join(TESTDIR,"numbers1.xls"),false, :warning)
1204
+ Roo::OpenOffice.new(File.join(TESTDIR,"numbers1.xls"),false, :warning)
1240
1205
  }
1241
1206
  }
1242
1207
  assert_nothing_raised(TypeError) {
1243
1208
  assert_raises(Errno::ENOENT) {
1244
- Roo::Openoffice.new(File.join(TESTDIR,"numbers1.xlsx"),false, :warning)
1209
+ Roo::OpenOffice.new(File.join(TESTDIR,"numbers1.xlsx"),false, :warning)
1245
1210
  }
1246
1211
  }
1247
1212
  end
@@ -1273,18 +1238,18 @@ Sheet 3:
1273
1238
 
1274
1239
  def test_file_warning_ignore
1275
1240
  if OPENOFFICE
1276
- # Files, die eigentlich Openoffice-
1241
+ # Files, die eigentlich OpenOffice-
1277
1242
  # Files sind, aber die falsche Endung haben.
1278
1243
  # Es soll ohne Fehlermeldung oder Warnung
1279
1244
  # oder Abbruch die Datei geoffnet werden
1280
1245
 
1281
1246
  # xls
1282
1247
  assert_nothing_raised() {
1283
- Roo::Openoffice.new(File.join(TESTDIR,"type_openoffice.xls"),false, :ignore)
1248
+ Roo::OpenOffice.new(File.join(TESTDIR,"type_openoffice.xls"),false, :ignore)
1284
1249
  }
1285
1250
  # xlsx
1286
1251
  assert_nothing_raised() {
1287
- Roo::Openoffice.new(File.join(TESTDIR,"type_openoffice.xlsx"),false, :ignore)
1252
+ Roo::OpenOffice.new(File.join(TESTDIR,"type_openoffice.xlsx"),false, :ignore)
1288
1253
  }
1289
1254
  end
1290
1255
  if EXCEL
@@ -1576,6 +1541,19 @@ Sheet 3:
1576
1541
  end
1577
1542
  end
1578
1543
 
1544
+ # Excel has two base date formats one from 1900 and the other from 1904.
1545
+ # see #test_base_dates_in_excel
1546
+ def test_base_dates_in_excelx
1547
+ with_each_spreadsheet(:name=>'1900_base', :format=>:excelx) do |oo|
1548
+ assert_equal Date.new(2009,06,15), oo.cell(1,1)
1549
+ assert_equal :date, oo.celltype(1,1)
1550
+ end
1551
+ with_each_spreadsheet(:name=>'1904_base', :format=>:excelx) do |oo|
1552
+ assert_equal Date.new(2009,06,15), oo.cell(1,1)
1553
+ assert_equal :date, oo.celltype(1,1)
1554
+ end
1555
+ end
1556
+
1579
1557
  def test_bad_date
1580
1558
  with_each_spreadsheet(:name=>'prova', :format=>:excel) do |oo|
1581
1559
  assert_nothing_raised(ArgumentError) {
@@ -1614,7 +1592,7 @@ Sheet 3:
1614
1592
  def test_compare_large_spreadsheets
1615
1593
  # problematisch, weil Formeln in Excel nicht unterstützt werden
1616
1594
  if LONG_RUN
1617
- qq = Roo::Openoffice.new(File.join('test',"Bibelbund.ods"))
1595
+ qq = Roo::OpenOffice.new(File.join('test',"Bibelbund.ods"))
1618
1596
  with_each_spreadsheet(:name=>'Bibelbund') do |oo|
1619
1597
  # p "comparing Bibelbund.ods with #{oo.class}"
1620
1598
  oo.sheets.each do |sh|
@@ -1731,27 +1709,6 @@ Sheet 3:
1731
1709
  end
1732
1710
  end
1733
1711
 
1734
-
1735
- def test_bug_excel_last_row_255
1736
- if LONG_RUN
1737
- local_only do
1738
- oo = Roo::Excel.new(File.join('..','confidential','ScienceStaff.xls'))
1739
- oo.default_sheet = oo.sheets.first
1740
- assert_equal "COMSCI", oo.cell(255,1)
1741
- assert_equal "lala", oo.cell(256,1)
1742
- assert_equal 1537, oo.last_row
1743
- end
1744
- end
1745
- end
1746
-
1747
- def test_bug_excel_last_row_255_modified
1748
- local_only do
1749
- oo = Roo::Excel.new(File.join('..','confidential','ScienceStaff_modified.xls'))
1750
- oo.default_sheet = oo.sheets.first
1751
- assert_equal 1537, oo.last_row
1752
- end
1753
- end
1754
-
1755
1712
  require 'matrix'
1756
1713
  def test_matrix
1757
1714
  with_each_spreadsheet(:name => 'matrix', :format => [:openoffice, :excel, :google]) do |oo|
@@ -1793,17 +1750,6 @@ Sheet 3:
1793
1750
  end
1794
1751
  end
1795
1752
 
1796
- def test_bug_date_mileszs
1797
- local_only do
1798
- oo = Roo::Excel.new "/home/tp/Documents/feb-sales-analysis.xls"
1799
- oo.default_sheet = oo.sheets.first
1800
- # 2/1/2010 A2-A6 mm/dd/yyyy
1801
- 2.upto(6) do |i|
1802
- assert_equal Date.new(2010,2,1), oo.cell('A',i)
1803
- end
1804
- end
1805
- end
1806
-
1807
1753
  # unter Windows soll es laut Bug-Reports nicht moeglich sein, eine Excel-Datei, die
1808
1754
  # mit Excel.new geoeffnet wurde nach dem Processing anschliessend zu loeschen.
1809
1755
  # Anmerkung: Das Spreadsheet-Gem erlaubt kein explizites Close von Spreadsheet-Dateien,
@@ -1842,85 +1788,6 @@ where the expected result is
1842
1788
  end
1843
1789
  end
1844
1790
 
1845
- def test_bug_guest_list_2011_05_05
1846
- local_only do
1847
- oo = Roo::Excel.new(File.join("..","confidential","guest_list_addresses.xls"))
1848
- oo.default_sheet = oo.sheets.first
1849
- assert_equal "lalala", oo.cell('a',1) # anderer Inhalt im Spreadsheet
1850
- assert_equal :string, oo.celltype('a',1)
1851
- end
1852
- end
1853
-
1854
- def test_bug_guest_list_2011_05_05_spreadsheet
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
1863
- end
1864
-
1865
- # don't test it with other spreadsheet types! this was only a problem
1866
- # with .xlsx files
1867
- def test_bug_date_not_recognized_2011_05_21
1868
- if EXCELX
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
1877
- end
1878
- end
1879
-
1880
- def test_bug_string_as_a_date_2011_05_21_spreadsheet_only
1881
- if EXCEL
1882
- local_only do
1883
- require 'spreadsheet'
1884
- book = Spreadsheet.open File.join('..','confidential','2011-05-21_sample_type_problem.xls')
1885
- sheet1 = book.worksheet 0
1886
- sheet1.each_with_index do |row,rownum|
1887
- # p row[0]
1888
- if rownum == 2
1889
- assert_equal 68, row[6]
1890
- end
1891
- end
1892
- end
1893
- end
1894
- end
1895
-
1896
- def test_bug_string_as_a_date_2011_05_21
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'))
1914
- oo.default_sheet = oo.sheets.first
1915
- assert_equal 68, oo.g2
1916
- assert_equal 72, oo.g3
1917
- assert_equal 75, oo.g4
1918
- assert_equal 76, oo.g5
1919
- assert_equal 77, oo.g6
1920
- assert_equal 78, oo.g7
1921
- end
1922
- end
1923
-
1924
1791
  # #formulas of an empty sheet should return an empty array and not result in
1925
1792
  # an error message
1926
1793
  # 2011-06-24
@@ -1982,11 +1849,11 @@ where the expected result is
1982
1849
  # Dieses Dokument wurde mit LibreOffice angelegt.
1983
1850
  # Keine Ahnung, ob es damit zusammenhaengt, das diese
1984
1851
  # Formeln anders sind, als in der Datei formula.ods, welche
1985
- # mit Openoffice angelegt wurde.
1986
- # Bei den Openoffice-Dateien ist in diesem Feld in der XML-
1852
+ # mit OpenOffice angelegt wurde.
1853
+ # Bei den OpenOffice-Dateien ist in diesem Feld in der XML-
1987
1854
  # Datei of: als Prefix enthalten, waehrend in dieser Datei
1988
1855
  # irgendetwas mit oooc: als Prefix verwendet wird.
1989
- oo = Roo::Openoffice.new(File.join(TESTDIR,'dreimalvier.ods'))
1856
+ oo = Roo::OpenOffice.new(File.join(TESTDIR,'dreimalvier.ods'))
1990
1857
  oo.default_sheet = oo.sheets.first
1991
1858
  assert_equal '=SUM([.A1:.D1])', oo.formula('e',1)
1992
1859
  assert_equal '=SUM([.A2:.D2])', oo.formula('e',2)
@@ -2003,7 +1870,7 @@ where the expected result is
2003
1870
  =begin
2004
1871
  def test_postprocessing_and_types_in_csv
2005
1872
  if CSV
2006
- oo = Csv.new(File.join(TESTDIR,'csvtypes.csv'))
1873
+ oo = CSV.new(File.join(TESTDIR,'csvtypes.csv'))
2007
1874
  oo.default_sheet = oo.sheets.first
2008
1875
  assert_equal(1,oo.a1)
2009
1876
  assert_equal(:float,oo.celltype('A',1))
@@ -2018,7 +1885,7 @@ where the expected result is
2018
1885
  =begin
2019
1886
  def test_postprocessing_with_callback_function
2020
1887
  if CSV
2021
- oo = Csv.new(File.join(TESTDIR,'csvtypes.csv'))
1888
+ oo = CSV.new(File.join(TESTDIR,'csvtypes.csv'))
2022
1889
  oo.default_sheet = oo.sheets.first
2023
1890
 
2024
1891
  #
@@ -2029,7 +1896,7 @@ where the expected result is
2029
1896
 
2030
1897
  =begin
2031
1898
  def x_123
2032
- class ::Csv
1899
+ class ::CSV
2033
1900
  def cell_postprocessing(row,col,value)
2034
1901
  if row < 3
2035
1902
  return nil
@@ -2043,7 +1910,7 @@ where the expected result is
2043
1910
  def test_nil_rows_and_lines_csv
2044
1911
  # x_123
2045
1912
  if CSV
2046
- oo = Roo::Csv.new(File.join(TESTDIR,'Bibelbund.csv'))
1913
+ oo = Roo::CSV.new(File.join(TESTDIR,'Bibelbund.csv'))
2047
1914
  oo.default_sheet = oo.sheets.first
2048
1915
  assert_equal 1, oo.first_row
2049
1916
  end
@@ -2115,7 +1982,7 @@ where the expected result is
2115
1982
  File.join(TESTDIR,"numbers2.ods"))
2116
1983
  File.cp(File.join(TESTDIR,"numbers2.ods"),
2117
1984
  File.join(TESTDIR,"bak_numbers2.ods"))
2118
- oo = Openoffice.new(File.join(TESTDIR,"numbers2.ods"))
1985
+ oo = OpenOffice.new(File.join(TESTDIR,"numbers2.ods"))
2119
1986
  oo.default_sheet = oo.sheets.first
2120
1987
  oo.first_row.upto(oo.last_row) {|y|
2121
1988
  oo.first_column.upto(oo.last_column) {|x|
@@ -2127,8 +1994,8 @@ where the expected result is
2127
1994
  }
2128
1995
  oo.save
2129
1996
 
2130
- oo1 = Roo::Openoffice.new(File.join(TESTDIR,"numbers2.ods"))
2131
- oo2 = Roo::Openoffice.new(File.join(TESTDIR,"bak_numbers2.ods"))
1997
+ oo1 = Roo::OpenOffice.new(File.join(TESTDIR,"numbers2.ods"))
1998
+ oo2 = Roo::OpenOffice.new(File.join(TESTDIR,"bak_numbers2.ods"))
2132
1999
  #p oo2.to_s
2133
2000
  assert_equal 999, oo2.cell('a',1), oo2.cell('a',1)
2134
2001
  assert_equal oo2.cell('a',1) + 7, oo1.cell('a',1)
@@ -2146,27 +2013,6 @@ where the expected result is
2146
2013
  end
2147
2014
  end
2148
2015
 
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
2016
  def common_possible_bug_snowboard_cells(ss)
2171
2017
  assert_equal "A.", ss.cell(13,'A'), ss.class
2172
2018
  assert_equal 147, ss.cell(13,'f'), ss.class
@@ -2182,314 +2028,6 @@ where the expected result is
2182
2028
  assert_equal "168W", ss.cell(13,'o'), ss.class
2183
2029
  end
2184
2030
 
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
2031
  # def test_false_encoding
2494
2032
  # ex = Roo::Excel.new(File.join(TESTDIR,'false_encoding.xls'))
2495
2033
  # ex.default_sheet = ex.sheets.first
@@ -2513,162 +2051,12 @@ This attached file is the newer format of Microsoft Excel (.xlsx).
2513
2051
  assert_equal "42", go.cell(1,1)
2514
2052
  end
2515
2053
  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
2054
 
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
2055
+ def test_download_uri
2668
2056
  if ONLINE
2669
2057
  if OPENOFFICE
2670
2058
  assert_raises(RuntimeError) {
2671
- Roo::Openoffice.new("http://gibbsnichtdomainxxxxx.com/file.ods")
2059
+ Roo::OpenOffice.new("http://gibbsnichtdomainxxxxx.com/file.ods")
2672
2060
  }
2673
2061
  end
2674
2062
  if EXCEL
@@ -2684,11 +2072,11 @@ This attached file is the newer format of Microsoft Excel (.xlsx).
2684
2072
  end
2685
2073
  end
2686
2074
 
2687
- def test_open_from_uri_with_query_string
2075
+ def test_download_uri_with_query_string
2688
2076
  dir = File.expand_path("#{File.dirname __FILE__}/files")
2689
2077
  { xls: [EXCEL, Roo::Excel],
2690
2078
  xlsx: [EXCELX, Roo::Excelx],
2691
- ods: [OPENOFFICE, Roo::Openoffice]}.each do |extension, (flag, type)|
2079
+ ods: [OPENOFFICE, Roo::OpenOffice]}.each do |extension, (flag, type)|
2692
2080
  if flag
2693
2081
  file = "#{dir}/simple_spreadsheet.#{extension}"
2694
2082
  url = "http://test.example.com/simple_spreadsheet.#{extension}?query-param=value"
@@ -2700,25 +2088,6 @@ This attached file is the newer format of Microsoft Excel (.xlsx).
2700
2088
  end
2701
2089
  end
2702
2090
 
2703
- def test_to_ascii_openoffice #file does not exist
2704
- local_only do
2705
- with_each_spreadsheet(:name=>'verysimple_spreadsheet', :format=>:openoffice) do |oo|
2706
- oo.default_sheet = oo.sheets.first
2707
- expected="
2708
- A | B | C |
2709
- -------+-------+------|
2710
- 7| 8| 9|
2711
- -------+-------+------|
2712
- 4| 5| 6|
2713
- -------+-------+------|
2714
- 1| 2| 3|
2715
- ----------------------/
2716
- "
2717
- assert_equal expected, oo.to_ascii
2718
- end
2719
- end
2720
- end
2721
-
2722
2091
  # def test_soap_server
2723
2092
  # #threads = []
2724
2093
  # #threads << Thread.new("serverthread") do
@@ -2784,10 +2153,10 @@ This attached file is the newer format of Microsoft Excel (.xlsx).
2784
2153
  # arg = expression.split(':')
2785
2154
  # b,z = split_coord(arg[0])
2786
2155
  # first_row = z
2787
- # first_col = Openoffice.letter_to_number(b)
2156
+ # first_col = OpenOffice.letter_to_number(b)
2788
2157
  # b,z = split_coord(arg[1])
2789
2158
  # last_row = z
2790
- # last_col = Openoffice.letter_to_number(b)
2159
+ # last_col = OpenOffice.letter_to_number(b)
2791
2160
  # result = 0
2792
2161
  # first_row.upto(last_row) {|row|
2793
2162
  # first_col.upto(last_col) {|col|
@@ -2798,7 +2167,7 @@ This attached file is the newer format of Microsoft Excel (.xlsx).
2798
2167
  #end
2799
2168
 
2800
2169
  #def test_dsl
2801
- # s = Openoffice.new(File.join(TESTDIR,"numbers1.ods"))
2170
+ # s = OpenOffice.new(File.join(TESTDIR,"numbers1.ods"))
2802
2171
  # s.default_sheet = s.sheets.first
2803
2172
  #
2804
2173
  # s.set 'a',1, 5
@@ -2814,19 +2183,19 @@ This attached file is the newer format of Microsoft Excel (.xlsx).
2814
2183
  # name = File.join(TESTDIR,'createdspreadsheet.ods')
2815
2184
  # rm(name) if File.exists?(File.join(TESTDIR,'createdspreadsheet.ods'))
2816
2185
  # # anlegen, falls noch nicht existierend
2817
- # s = Openoffice.new(name,true)
2186
+ # s = OpenOffice.new(name,true)
2818
2187
  # assert File.exists?(name)
2819
2188
  #end
2820
2189
 
2821
2190
  #def test_create_spreadsheet2
2822
2191
  # # anlegen, falls noch nicht existierend
2823
- # s = Openoffice.new(File.join(TESTDIR,"createdspreadsheet.ods"),true)
2192
+ # s = OpenOffice.new(File.join(TESTDIR,"createdspreadsheet.ods"),true)
2824
2193
  # s.set 'a',1,42
2825
2194
  # s.set 'b',1,43
2826
2195
  # s.set 'c',1,44
2827
2196
  # s.save
2828
2197
  #
2829
- # t = Openoffice.new(File.join(TESTDIR,"createdspreadsheet.ods"))
2198
+ # t = OpenOffice.new(File.join(TESTDIR,"createdspreadsheet.ods"))
2830
2199
  # assert_equal 42, t.cell(1,'a')
2831
2200
  # assert_equal 43, t.cell('b',1)
2832
2201
  # assert_equal 44, t.cell('c',3)
@@ -2834,7 +2203,7 @@ This attached file is the newer format of Microsoft Excel (.xlsx).
2834
2203
 
2835
2204
  # We don't have the bode-v1.xlsx test file
2836
2205
  # #TODO: xlsx-Datei anpassen!
2837
- # def test_excelx_open_from_uri_and_zipped
2206
+ # def test_excelx_download_uri_and_zipped
2838
2207
  # #TODO: gezippte xlsx Datei online zum Testen suchen
2839
2208
  # if EXCELX
2840
2209
  # if ONLINE
@@ -2859,4 +2228,12 @@ This attached file is the newer format of Microsoft Excel (.xlsx).
2859
2228
  # end
2860
2229
  # end
2861
2230
 
2231
+ def test_csv_parsing_with_headers
2232
+ return unless CSV
2233
+ headers = ["TITEL", "VERFASSER", "OBJEKT", "NUMMER", "SEITE", "INTERNET", "PC", "KENNUNG"]
2234
+
2235
+ oo = Roo::Spreadsheet.open(File.join(TESTDIR, 'Bibelbund.csv'))
2236
+ parsed = oo.parse(:headers => true)
2237
+ assert_equal headers, parsed[1].keys
2238
+ end
2862
2239
  end # class