axlsx 1.1.7 → 1.2.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.
Files changed (164) hide show
  1. data/.yardopts +5 -2
  2. data/CHANGELOG.md +39 -0
  3. data/README.md +84 -46
  4. data/Rakefile +3 -2
  5. data/examples/basic_charts.rb +8 -0
  6. data/examples/chart_colors.rb +18 -3
  7. data/examples/example.rb +106 -46
  8. data/examples/example.xlsx +0 -0
  9. data/examples/example_streamed.xlsx +0 -0
  10. data/examples/extractive.pdf +0 -0
  11. data/examples/no-use_autowidth.xlsx +0 -0
  12. data/examples/scraping_html.rb +91 -0
  13. data/examples/shared_strings_example.xlsx +0 -0
  14. data/lib/axlsx/content_type/content_type.rb +2 -0
  15. data/lib/axlsx/content_type/default.rb +21 -12
  16. data/lib/axlsx/content_type/override.rb +22 -11
  17. data/lib/axlsx/doc_props/app.rb +36 -32
  18. data/lib/axlsx/doc_props/core.rb +9 -5
  19. data/lib/axlsx/drawing/ax_data_source.rb +7 -6
  20. data/lib/axlsx/drawing/axis.rb +48 -27
  21. data/lib/axlsx/drawing/bar_3D_chart.rb +49 -45
  22. data/lib/axlsx/drawing/bar_series.rb +1 -0
  23. data/lib/axlsx/drawing/cat_axis.rb +42 -38
  24. data/lib/axlsx/drawing/chart.rb +63 -52
  25. data/lib/axlsx/drawing/d_lbls.rb +100 -0
  26. data/lib/axlsx/drawing/drawing.rb +7 -4
  27. data/lib/axlsx/drawing/line_3D_chart.rb +3 -10
  28. data/lib/axlsx/drawing/num_data_source.rb +1 -1
  29. data/lib/axlsx/drawing/pie_3D_chart.rb +10 -7
  30. data/lib/axlsx/drawing/scatter_chart.rb +2 -8
  31. data/lib/axlsx/drawing/two_cell_anchor.rb +41 -9
  32. data/lib/axlsx/drawing/view_3D.rb +41 -31
  33. data/lib/axlsx/drawing/vml_drawing.rb +1 -1
  34. data/lib/axlsx/package.rb +11 -11
  35. data/lib/axlsx/rels/relationship.rb +3 -3
  36. data/lib/axlsx/stylesheet/styles.rb +1 -1
  37. data/lib/axlsx/util/constants.rb +4 -0
  38. data/lib/axlsx/util/simple_typed_list.rb +15 -8
  39. data/lib/axlsx/util/validators.rb +2 -2
  40. data/lib/axlsx/version.rb +2 -7
  41. data/lib/axlsx/workbook/defined_name.rb +174 -0
  42. data/lib/axlsx/workbook/defined_names.rb +21 -0
  43. data/lib/axlsx/workbook/workbook.rb +39 -14
  44. data/lib/axlsx/workbook/worksheet/auto_filter.rb +34 -0
  45. data/lib/axlsx/workbook/worksheet/cell.rb +25 -2
  46. data/lib/axlsx/workbook/worksheet/col.rb +15 -0
  47. data/lib/axlsx/workbook/worksheet/cols.rb +20 -0
  48. data/lib/axlsx/workbook/worksheet/comments.rb +8 -0
  49. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -0
  50. data/lib/axlsx/workbook/worksheet/data_bar.rb +1 -1
  51. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -0
  52. data/lib/axlsx/workbook/worksheet/dimension.rb +65 -0
  53. data/lib/axlsx/workbook/worksheet/merged_cells.rb +35 -0
  54. data/lib/axlsx/workbook/worksheet/page_setup.rb +9 -0
  55. data/lib/axlsx/workbook/worksheet/protected_range.rb +46 -0
  56. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +34 -0
  57. data/lib/axlsx/workbook/worksheet/row.rb +1 -1
  58. data/lib/axlsx/workbook/worksheet/sheet_data.rb +25 -0
  59. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +24 -0
  60. data/lib/axlsx/workbook/worksheet/tables.rb +31 -0
  61. data/lib/axlsx/workbook/worksheet/worksheet.rb +300 -293
  62. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +57 -0
  63. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +64 -0
  64. data/lib/axlsx.rb +21 -14
  65. data/test/content_type/tc_content_type.rb +1 -6
  66. data/test/doc_props/tc_core.rb +1 -1
  67. data/test/drawing/tc_axis.rb +8 -0
  68. data/test/drawing/tc_bar_3D_chart.rb +12 -12
  69. data/test/drawing/tc_bar_series.rb +1 -2
  70. data/test/drawing/tc_chart.rb +8 -6
  71. data/test/drawing/tc_d_lbls.rb +47 -0
  72. data/test/drawing/tc_drawing.rb +5 -4
  73. data/test/drawing/tc_line_series.rb +1 -1
  74. data/test/drawing/tc_pie_3D_chart.rb +4 -8
  75. data/test/drawing/tc_pie_series.rb +1 -1
  76. data/test/drawing/tc_scatter_series.rb +1 -1
  77. data/test/drawing/tc_series.rb +1 -1
  78. data/test/drawing/tc_view_3D.rb +18 -18
  79. data/test/tc_package.rb +18 -1
  80. data/test/workbook/tc_defined_name.rb +41 -0
  81. data/test/workbook/tc_workbook.rb +5 -3
  82. data/test/workbook/worksheet/table/tc_table.rb +0 -8
  83. data/test/workbook/worksheet/tc_cell.rb +2 -4
  84. data/test/workbook/worksheet/tc_page_setup.rb +20 -3
  85. data/test/workbook/worksheet/tc_protected_range.rb +17 -0
  86. data/test/workbook/worksheet/tc_row.rb +2 -2
  87. data/test/workbook/worksheet/tc_selection.rb +1 -1
  88. data/test/workbook/worksheet/tc_worksheet.rb +53 -34
  89. metadata +93 -101
  90. data/examples/axis-titles.xlsx +0 -0
  91. data/examples/basic_charts.xlsx +0 -0
  92. data/examples/chart_colors.xlsx +0 -0
  93. data/examples/charts.xlsx +0 -0
  94. data/examples/conditional_formatting/getting_barred.xlsx +0 -0
  95. data/examples/doc/_index.html +0 -84
  96. data/examples/doc/class_list.html +0 -47
  97. data/examples/doc/css/common.css +0 -1
  98. data/examples/doc/css/full_list.css +0 -55
  99. data/examples/doc/css/style.css +0 -322
  100. data/examples/doc/file_list.html +0 -46
  101. data/examples/doc/frames.html +0 -13
  102. data/examples/doc/index.html +0 -84
  103. data/examples/doc/js/app.js +0 -205
  104. data/examples/doc/js/full_list.js +0 -173
  105. data/examples/doc/js/jquery.js +0 -16
  106. data/examples/doc/method_list.html +0 -46
  107. data/examples/doc/top-level-namespace.html +0 -95
  108. data/examples/examples_saved.xlsx +0 -0
  109. data/examples/extractive.xlsx +0 -0
  110. data/examples/fish.xlsx +0 -0
  111. data/examples/pareto.rb +0 -28
  112. data/examples/pareto.xlsx +0 -0
  113. data/examples/pie_chart_excel.xlsx +0 -0
  114. data/examples/pie_chart_saved.xlsx +0 -0
  115. data/examples/sheet_protection.xlsx +0 -0
  116. data/examples/sheet_view.xlsx +0 -0
  117. data/examples/two_cell_anchor_image.xlsx +0 -0
  118. data/examples/~$example.xlsx +0 -0
  119. data/lib/axlsx/drawing/ax_data_source.rb~ +0 -55
  120. data/lib/axlsx/drawing/data_source.rb~ +0 -51
  121. data/lib/axlsx/drawing/hlink_click.rb~ +0 -0
  122. data/lib/axlsx/drawing/hyperlink.rb~ +0 -64
  123. data/lib/axlsx/drawing/num_data.rb~ +0 -51
  124. data/lib/axlsx/drawing/num_data_source.rb~ +0 -54
  125. data/lib/axlsx/drawing/num_val.rb~ +0 -40
  126. data/lib/axlsx/drawing/picture_locking.rb~ +0 -36
  127. data/lib/axlsx/drawing/ref.rb~ +0 -41
  128. data/lib/axlsx/drawing/str_data.rb~ +0 -58
  129. data/lib/axlsx/drawing/str_val.rb~ +0 -35
  130. data/lib/axlsx/drawing/vml_drawing.rb~ +0 -6
  131. data/lib/axlsx/drawing/vml_shape.rb~ +0 -61
  132. data/lib/axlsx/util/cbf.rb +0 -333
  133. data/lib/axlsx/util/cfb.rb~ +0 -201
  134. data/lib/axlsx/util/font_tables.rb~ +0 -0
  135. data/lib/axlsx/util/ms_off_crypto.rb +0 -189
  136. data/lib/axlsx/util/ms_off_crypto.rb~ +0 -3
  137. data/lib/axlsx/util/ms_offcrypto.rb~ +0 -0
  138. data/lib/axlsx/util/parser.rb~ +0 -6
  139. data/lib/axlsx/util/storage.rb~ +0 -0
  140. data/lib/axlsx/workbook/shared_strings_table.rb~ +0 -69
  141. data/lib/axlsx/workbook/worksheet/cfvo.rb~ +0 -0
  142. data/lib/axlsx/workbook/worksheet/col.rb~ +0 -0
  143. data/lib/axlsx/workbook/worksheet/color_scale.rb~ +0 -46
  144. data/lib/axlsx/workbook/worksheet/comment.rb~ +0 -91
  145. data/lib/axlsx/workbook/worksheet/comments.rb~ +0 -86
  146. data/lib/axlsx/workbook/worksheet/data_bar.rb~ +0 -0
  147. data/lib/axlsx/workbook/worksheet/icon_set.rb~ +0 -95
  148. data/lib/axlsx/workbook/worksheet/shared_strings_table.rb~ +0 -0
  149. data/lib/axlsx/workbook/worksheet/table.rb~ +0 -97
  150. data/lib/schema/dc.xsd~ +0 -118
  151. data/lib/schema/dcterms.xsd~ +0 -331
  152. data/lib/schema/opc-coreProperties.xsd~ +0 -50
  153. data/test/drawing/tc_data_source.rb~ +0 -30
  154. data/test/drawing/tc_num_data.rb~ +0 -35
  155. data/test/drawing/tc_num_val.rb~ +0 -29
  156. data/test/drawing/tc_str_data.rb~ +0 -30
  157. data/test/drawing/tc_str_val.rb~ +0 -26
  158. data/test/drawing/tc_vml_drawing.rb~ +0 -0
  159. data/test/workbook/worksheet/table/tc_table.rb~ +0 -72
  160. data/test/workbook/worksheet/tc_cfvo.rb~ +0 -20
  161. data/test/workbook/worksheet/tc_col.rb~ +0 -10
  162. data/test/workbook/worksheet/tc_color_scale.rb~ +0 -0
  163. data/test/workbook/worksheet/tc_data_bar.rb~ +0 -0
  164. data/test/workbook/worksheet/tc_icon_set.rb~ +0 -0
@@ -25,14 +25,6 @@ class TestTable < Test::Unit::TestCase
25
25
 
26
26
  end
27
27
 
28
- def test_charts
29
- assert(@ws.drawing.charts.empty?)
30
- chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"bob", :start_at=>[0,0], :end_at=>[1,1])
31
- assert_equal(@ws.drawing.charts.last, chart, "add chart is returned")
32
- chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"nancy", :start_at=>[1,5], :end_at=>[5,10])
33
- assert_equal(@ws.drawing.charts.last, chart, "add chart is returned")
34
- end
35
-
36
28
  def test_pn
37
29
  @ws.add_table("A1:D5")
38
30
  assert_equal(@ws.tables.first.pn, "tables/table1.xml")
@@ -197,19 +197,17 @@ class TestCell < Test::Unit::TestCase
197
197
  end
198
198
 
199
199
  def test_merge_with_string
200
- assert_equal(@c.row.worksheet.merged_cells.size, 0)
201
200
  @c.row.add_cell 2
202
201
  @c.row.add_cell 3
203
202
  @c.merge "A2"
204
- assert_equal(@c.row.worksheet.merged_cells.last, "A1:A2")
203
+ assert_equal(@c.row.worksheet.send(:merged_cells).last, "A1:A2")
205
204
  end
206
205
 
207
206
  def test_merge_with_cell
208
- assert_equal(@c.row.worksheet.merged_cells.size, 0)
209
207
  @c.row.add_cell 2
210
208
  @c.row.add_cell 3
211
209
  @c.merge @row.cells.last
212
- assert_equal(@c.row.worksheet.merged_cells.last, "A1:C1")
210
+ assert_equal(@c.row.worksheet.send(:merged_cells).last, "A1:C1")
213
211
  end
214
212
 
215
213
  def test_ssti
@@ -54,6 +54,23 @@ class TestPageSetup < Test::Unit::TestCase
54
54
  assert_equal(nil, @ps.scale)
55
55
  end
56
56
 
57
+ def test_default_fit_to_page?
58
+ assert(@ps.fit_to_width == nil && @ps.fit_to_height == nil)
59
+ assert(@ps.fit_to_page? == false)
60
+ end
61
+
62
+ def test_with_height_fit_to_page?
63
+ assert(@ps.fit_to_width == nil && @ps.fit_to_height == nil)
64
+ @ps.set(:fit_to_height => 1)
65
+ assert(@ps.fit_to_page?)
66
+ end
67
+
68
+ def test_with_width_fit_to_page?
69
+ assert(@ps.fit_to_width == nil && @ps.fit_to_height == nil)
70
+ @ps.set(:fit_to_width => 1)
71
+ assert(@ps.fit_to_page?)
72
+ end
73
+
57
74
  def test_to_xml_all_values
58
75
  @ps.set(:fit_to_height => 1, :fit_to_width => 2, :orientation => :landscape, :paper_height => "297mm", :paper_width => "210mm", :scale => 50)
59
76
  doc = Nokogiri::XML.parse(@ps.to_xml_string)
@@ -106,7 +123,7 @@ class TestPageSetup < Test::Unit::TestCase
106
123
  assert_nothing_raised { @ps.scale = 99 }
107
124
  assert_equal(99, @ps.scale)
108
125
  end
109
-
126
+
110
127
  def test_fit_to
111
128
  fits = @ps.fit_to(:width => 1)
112
129
  assert_equal([1, 9999], fits)
@@ -115,7 +132,7 @@ class TestPageSetup < Test::Unit::TestCase
115
132
  fits = @ps.fit_to :height => 7, :width => 2
116
133
  assert_equal(fits, [2, 7])
117
134
  assert_raise(ArgumentError) { puts @ps.fit_to(:width => true)}
118
-
119
-
135
+
136
+
120
137
  end
121
138
  end
@@ -0,0 +1,17 @@
1
+ # encoding: UTF-8
2
+ require 'tc_helper.rb'
3
+ class TestProtectedRange < Test::Unit::TestCase
4
+ def setup
5
+ @p = Axlsx::Package.new
6
+ @ws = @p.workbook.add_worksheet { |sheet| sheet.add_row [1,2,3,4,5,6,7,8,9] }
7
+ end
8
+
9
+ def test_initialize_options
10
+ assert_nothing_raised {Axlsx::ProtectedRange.new(:sqref => 'A1:B1', :name => "only bob")}
11
+ end
12
+
13
+ def test_range
14
+ r = @ws.protect_range('A1:B1')
15
+ assert_equal('A1:B1', r.sqref)
16
+ end
17
+ end
@@ -38,8 +38,8 @@ class TestRow < Test::Unit::TestCase
38
38
  end
39
39
 
40
40
  def test_add_cell_autowidth_info
41
- width = @ws.send :calculate_width, 'this is the cell of cells', @ws.workbook.styles.fonts.first.sz
42
- @row.add_cell("this is the cell of cells")
41
+ cell = @row.add_cell("this is the cell of cells")
42
+ width = cell.send(:autowidth)
43
43
  assert_equal(@ws.column_info.last.width, width)
44
44
  end
45
45
 
@@ -91,4 +91,4 @@ class TestSelection < Test::Unit::TestCase
91
91
  assert_equal(1, doc.xpath("//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView/xmlns:selection[@sqref='I57'][@pane='bottomRight'][@activeCell='I57']").size)
92
92
  assert doc.xpath("//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView/xmlns:selection[@sqref='I57'][@pane='bottomRight'][@activeCell='I57']")
93
93
  end
94
- end
94
+ end
@@ -14,6 +14,14 @@ class TestWorksheet < Test::Unit::TestCase
14
14
  assert_equal(ws.pn, "worksheets/sheet2.xml")
15
15
  end
16
16
 
17
+ def test_name_is_html_encoded
18
+ @ws.name = '<foo> & <bar>'
19
+ assert_equal(@ws.name, '&lt;foo&gt; &amp; &lt;bar&gt;')
20
+ end
21
+
22
+ def test_name_exception_on_colon
23
+ assert_raises(ArgumentError) { @ws.name = 'foo:bar' }
24
+ end
17
25
  def test_page_margins
18
26
  assert(@ws.page_margins.is_a? Axlsx::PageMargins)
19
27
  end
@@ -105,7 +113,12 @@ class TestWorksheet < Test::Unit::TestCase
105
113
  def test_dimension
106
114
  @ws.add_row [1, 2, 3]
107
115
  @ws.add_row [4, 5, 6]
108
- assert_equal @ws.dimension, "A1:C2"
116
+ assert_equal @ws.dimension.sqref, "A1:C2"
117
+ end
118
+
119
+ def test_dimension_with_empty_row
120
+ @ws.add_row
121
+ assert_equal "A1:AA200", @ws.dimension.sqref
109
122
  end
110
123
 
111
124
  def test_referencing
@@ -135,7 +148,9 @@ class TestWorksheet < Test::Unit::TestCase
135
148
  end
136
149
 
137
150
  def test_drawing
138
- assert @ws.drawing.is_a? Axlsx::Drawing
151
+ assert @ws.drawing == nil
152
+ @ws.add_chart(Axlsx::Pie3DChart)
153
+ assert @ws.drawing.is_a?(Axlsx::Drawing)
139
154
  end
140
155
 
141
156
  def test_col_style
@@ -201,8 +216,8 @@ class TestWorksheet < Test::Unit::TestCase
201
216
  end
202
217
 
203
218
  def test_fit_to_page_assignation_does_nothing
204
- @ws.fit_to_page = false
205
- assert_equal(@ws.fit_to_page, false)
219
+ @ws.fit_to_page = true
220
+ assert_equal(@ws.fit_to_page?, false)
206
221
  end
207
222
 
208
223
  def test_to_xml_string_selected
@@ -248,7 +263,7 @@ class TestWorksheet < Test::Unit::TestCase
248
263
  def test_to_xml_string_sheet_protection
249
264
  @ws.sheet_protection.password = 'fish'
250
265
  doc = Nokogiri::XML(@ws.to_xml_string)
251
- assert(doc.xpath('//sheetProtection'))
266
+ assert(doc.xpath('//xmlns:sheetProtection'))
252
267
  end
253
268
 
254
269
  def test_to_xml_string_page_margins
@@ -293,23 +308,22 @@ class TestWorksheet < Test::Unit::TestCase
293
308
  assert_equal(doc.xpath('//xmlns:worksheet/xmlns:tableParts/xmlns:tablePart[@r:id="rId1"]').size, 1)
294
309
  end
295
310
 
296
- def test_abs_auto_filter
297
- @ws.add_row [1, "two", 3]
298
- @ws.auto_filter = "A1:C1"
299
- assert_equal(@ws.abs_auto_filter, "'Sheet1'!$A$1:$C$1")
300
- end
301
-
302
311
  def test_to_xml_string
303
312
  schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
304
313
  doc = Nokogiri::XML(@ws.to_xml_string)
305
- errors = []
306
- schema.validate(doc).each do |error|
307
- errors.push error
308
- puts error.message
309
- end
310
- assert(errors.empty?, "error free validation")
314
+ assert(schema.validate(doc).map{ |e| puts e.message; e }.empty?, "error free validation")
311
315
  end
312
316
 
317
+ def test_styles
318
+ assert(@ws.styles.is_a?(Axlsx::Styles), 'worksheet provides access to styles')
319
+ end
320
+
321
+ def test_to_xml_string_with_illegal_chars
322
+ nasties = "\v\u2028\u0001\u0002\u0003\u0004\u0005\u0006\u0007\u0008\u001f"
323
+ @ws.add_row [nasties]
324
+ assert_equal(0, @ws.rows.last.cells.last.value.index("\v"))
325
+ assert_equal(nil,@ws.to_xml_string.index("\v"))
326
+ end
313
327
  # Make sure the XML for all optional elements (like pageMargins, autoFilter, ...)
314
328
  # is generated in correct order.
315
329
  def test_valid_with_optional_elements
@@ -322,13 +336,7 @@ class TestWorksheet < Test::Unit::TestCase
322
336
  @ws.add_table "E1:F3"
323
337
  schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
324
338
  doc = Nokogiri::XML(@ws.to_xml_string)
325
- errors = []
326
- schema.validate(doc).each do |error|
327
- errors.push error
328
- puts error.message
329
- end
330
- assert(errors.empty?, "error free validation")
331
-
339
+ assert(schema.validate(doc).map { |e| puts e.message; e }.empty?, schema.validate(doc).map { |e| e.message }.join('\n'))
332
340
  end
333
341
 
334
342
  def test_relationships
@@ -350,14 +358,14 @@ class TestWorksheet < Test::Unit::TestCase
350
358
  end
351
359
 
352
360
  def test_name_size
353
- assert_raise(ArgumentError, "name too long!") { @ws.name = Array.new(32, "A").join('') }
354
- assert_nothing_raised { @ws.name = Array.new(31, "A").join('') }
361
+ assert_raise(ArgumentError, "name too long!") { @ws.name = Array.new(32, "A").join() }
362
+ assert_nothing_raised { @ws.name = Array.new(31, "A").join() }
355
363
  end
356
364
 
357
365
  def test_set_fixed_width_column
358
366
  @ws.add_row ["mule", "donkey", "horse"], :widths => [20, :ignore, nil]
359
367
  assert(@ws.column_info.size == 3, "a data item for each column")
360
- assert_equal(@ws.column_info[0].width, 20, "adding a row with fixed width updates :fixed attribute")
368
+ assert_equal(20, @ws.column_info[0].width, "adding a row with fixed width updates :fixed attribute")
361
369
  assert_equal(@ws.column_info[1].width, nil, ":ignore does not set any data")
362
370
  end
363
371
 
@@ -374,17 +382,28 @@ class TestWorksheet < Test::Unit::TestCase
374
382
  assert_raise(ArgumentError, 'only accept Integer, Float or Fixnum') { @ws.column_widths 2, 7, "-1" }
375
383
  end
376
384
 
385
+ def test_protect_range
386
+ assert(@ws.send(:protected_ranges).is_a?(Axlsx::SimpleTypedList))
387
+ assert_equal(0, @ws.send(:protected_ranges).size)
388
+ @ws.protect_range('A1:A3')
389
+ assert_equal('A1:A3', @ws.send(:protected_ranges).last.sqref)
390
+ end
391
+
392
+ def test_protect_range_with_cells
393
+ @ws.add_row [1, 2, 3]
394
+ assert_nothing_raised {@ws.protect_range(@ws.rows.first.cells) }
395
+ assert_equal('A1:C1', @ws.send(:protected_ranges).last.sqref)
396
+
397
+ end
377
398
  def test_merge_cells
378
- assert(@ws.merged_cells.is_a?(Array))
379
- assert_equal(@ws.merged_cells.size, 0)
380
399
  @ws.add_row [1,2,3]
381
400
  @ws.add_row [4,5,6]
382
401
  @ws.add_row [7,8,9]
383
402
  @ws.merge_cells "A1:A2"
384
403
  @ws.merge_cells "B2:C3"
385
404
  @ws.merge_cells @ws.rows.last.cells[(0..1)]
386
- assert_equal(@ws.merged_cells.size, 3)
387
- assert_equal(@ws.merged_cells.last, "A3:B3")
405
+ assert_equal(@ws.send(:merged_cells).size, 3)
406
+ assert_equal(@ws.send(:merged_cells).last, "A3:B3")
388
407
  end
389
408
 
390
409
  def test_merge_cells_sorts_correctly_by_row_when_given_array
@@ -392,13 +411,13 @@ class TestWorksheet < Test::Unit::TestCase
392
411
  @ws.add_row [i]
393
412
  end
394
413
  @ws.merge_cells [@ws.rows[8].cells.first, @ws.rows[9].cells.first]
395
- assert_equal "A9:A10", @ws.merged_cells.first
414
+ assert_equal "A9:A10", @ws.send(:merged_cells).first
396
415
  end
397
416
 
398
417
  def test_auto_filter
399
- assert(@ws.auto_filter.nil?)
418
+ assert(@ws.auto_filter.range.nil?)
400
419
  assert_raise(ArgumentError) { @ws.auto_filter = 123 }
401
420
  @ws.auto_filter = "A1:D9"
402
- assert_equal(@ws.auto_filter, "A1:D9")
421
+ assert_equal(@ws.auto_filter.range, "A1:D9")
403
422
  end
404
423
  end