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.
- data/.yardopts +5 -2
- data/CHANGELOG.md +39 -0
- data/README.md +84 -46
- data/Rakefile +3 -2
- data/examples/basic_charts.rb +8 -0
- data/examples/chart_colors.rb +18 -3
- data/examples/example.rb +106 -46
- data/examples/example.xlsx +0 -0
- data/examples/example_streamed.xlsx +0 -0
- data/examples/extractive.pdf +0 -0
- data/examples/no-use_autowidth.xlsx +0 -0
- data/examples/scraping_html.rb +91 -0
- data/examples/shared_strings_example.xlsx +0 -0
- data/lib/axlsx/content_type/content_type.rb +2 -0
- data/lib/axlsx/content_type/default.rb +21 -12
- data/lib/axlsx/content_type/override.rb +22 -11
- data/lib/axlsx/doc_props/app.rb +36 -32
- data/lib/axlsx/doc_props/core.rb +9 -5
- data/lib/axlsx/drawing/ax_data_source.rb +7 -6
- data/lib/axlsx/drawing/axis.rb +48 -27
- data/lib/axlsx/drawing/bar_3D_chart.rb +49 -45
- data/lib/axlsx/drawing/bar_series.rb +1 -0
- data/lib/axlsx/drawing/cat_axis.rb +42 -38
- data/lib/axlsx/drawing/chart.rb +63 -52
- data/lib/axlsx/drawing/d_lbls.rb +100 -0
- data/lib/axlsx/drawing/drawing.rb +7 -4
- data/lib/axlsx/drawing/line_3D_chart.rb +3 -10
- data/lib/axlsx/drawing/num_data_source.rb +1 -1
- data/lib/axlsx/drawing/pie_3D_chart.rb +10 -7
- data/lib/axlsx/drawing/scatter_chart.rb +2 -8
- data/lib/axlsx/drawing/two_cell_anchor.rb +41 -9
- data/lib/axlsx/drawing/view_3D.rb +41 -31
- data/lib/axlsx/drawing/vml_drawing.rb +1 -1
- data/lib/axlsx/package.rb +11 -11
- data/lib/axlsx/rels/relationship.rb +3 -3
- data/lib/axlsx/stylesheet/styles.rb +1 -1
- data/lib/axlsx/util/constants.rb +4 -0
- data/lib/axlsx/util/simple_typed_list.rb +15 -8
- data/lib/axlsx/util/validators.rb +2 -2
- data/lib/axlsx/version.rb +2 -7
- data/lib/axlsx/workbook/defined_name.rb +174 -0
- data/lib/axlsx/workbook/defined_names.rb +21 -0
- data/lib/axlsx/workbook/workbook.rb +39 -14
- data/lib/axlsx/workbook/worksheet/auto_filter.rb +34 -0
- data/lib/axlsx/workbook/worksheet/cell.rb +25 -2
- data/lib/axlsx/workbook/worksheet/col.rb +15 -0
- data/lib/axlsx/workbook/worksheet/cols.rb +20 -0
- data/lib/axlsx/workbook/worksheet/comments.rb +8 -0
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -0
- data/lib/axlsx/workbook/worksheet/data_bar.rb +1 -1
- data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -0
- data/lib/axlsx/workbook/worksheet/dimension.rb +65 -0
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +35 -0
- data/lib/axlsx/workbook/worksheet/page_setup.rb +9 -0
- data/lib/axlsx/workbook/worksheet/protected_range.rb +46 -0
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +34 -0
- data/lib/axlsx/workbook/worksheet/row.rb +1 -1
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +25 -0
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +24 -0
- data/lib/axlsx/workbook/worksheet/tables.rb +31 -0
- data/lib/axlsx/workbook/worksheet/worksheet.rb +300 -293
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +57 -0
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +64 -0
- data/lib/axlsx.rb +21 -14
- data/test/content_type/tc_content_type.rb +1 -6
- data/test/doc_props/tc_core.rb +1 -1
- data/test/drawing/tc_axis.rb +8 -0
- data/test/drawing/tc_bar_3D_chart.rb +12 -12
- data/test/drawing/tc_bar_series.rb +1 -2
- data/test/drawing/tc_chart.rb +8 -6
- data/test/drawing/tc_d_lbls.rb +47 -0
- data/test/drawing/tc_drawing.rb +5 -4
- data/test/drawing/tc_line_series.rb +1 -1
- data/test/drawing/tc_pie_3D_chart.rb +4 -8
- data/test/drawing/tc_pie_series.rb +1 -1
- data/test/drawing/tc_scatter_series.rb +1 -1
- data/test/drawing/tc_series.rb +1 -1
- data/test/drawing/tc_view_3D.rb +18 -18
- data/test/tc_package.rb +18 -1
- data/test/workbook/tc_defined_name.rb +41 -0
- data/test/workbook/tc_workbook.rb +5 -3
- data/test/workbook/worksheet/table/tc_table.rb +0 -8
- data/test/workbook/worksheet/tc_cell.rb +2 -4
- data/test/workbook/worksheet/tc_page_setup.rb +20 -3
- data/test/workbook/worksheet/tc_protected_range.rb +17 -0
- data/test/workbook/worksheet/tc_row.rb +2 -2
- data/test/workbook/worksheet/tc_selection.rb +1 -1
- data/test/workbook/worksheet/tc_worksheet.rb +53 -34
- metadata +93 -101
- data/examples/axis-titles.xlsx +0 -0
- data/examples/basic_charts.xlsx +0 -0
- data/examples/chart_colors.xlsx +0 -0
- data/examples/charts.xlsx +0 -0
- data/examples/conditional_formatting/getting_barred.xlsx +0 -0
- data/examples/doc/_index.html +0 -84
- data/examples/doc/class_list.html +0 -47
- data/examples/doc/css/common.css +0 -1
- data/examples/doc/css/full_list.css +0 -55
- data/examples/doc/css/style.css +0 -322
- data/examples/doc/file_list.html +0 -46
- data/examples/doc/frames.html +0 -13
- data/examples/doc/index.html +0 -84
- data/examples/doc/js/app.js +0 -205
- data/examples/doc/js/full_list.js +0 -173
- data/examples/doc/js/jquery.js +0 -16
- data/examples/doc/method_list.html +0 -46
- data/examples/doc/top-level-namespace.html +0 -95
- data/examples/examples_saved.xlsx +0 -0
- data/examples/extractive.xlsx +0 -0
- data/examples/fish.xlsx +0 -0
- data/examples/pareto.rb +0 -28
- data/examples/pareto.xlsx +0 -0
- data/examples/pie_chart_excel.xlsx +0 -0
- data/examples/pie_chart_saved.xlsx +0 -0
- data/examples/sheet_protection.xlsx +0 -0
- data/examples/sheet_view.xlsx +0 -0
- data/examples/two_cell_anchor_image.xlsx +0 -0
- data/examples/~$example.xlsx +0 -0
- data/lib/axlsx/drawing/ax_data_source.rb~ +0 -55
- data/lib/axlsx/drawing/data_source.rb~ +0 -51
- data/lib/axlsx/drawing/hlink_click.rb~ +0 -0
- data/lib/axlsx/drawing/hyperlink.rb~ +0 -64
- data/lib/axlsx/drawing/num_data.rb~ +0 -51
- data/lib/axlsx/drawing/num_data_source.rb~ +0 -54
- data/lib/axlsx/drawing/num_val.rb~ +0 -40
- data/lib/axlsx/drawing/picture_locking.rb~ +0 -36
- data/lib/axlsx/drawing/ref.rb~ +0 -41
- data/lib/axlsx/drawing/str_data.rb~ +0 -58
- data/lib/axlsx/drawing/str_val.rb~ +0 -35
- data/lib/axlsx/drawing/vml_drawing.rb~ +0 -6
- data/lib/axlsx/drawing/vml_shape.rb~ +0 -61
- data/lib/axlsx/util/cbf.rb +0 -333
- data/lib/axlsx/util/cfb.rb~ +0 -201
- data/lib/axlsx/util/font_tables.rb~ +0 -0
- data/lib/axlsx/util/ms_off_crypto.rb +0 -189
- data/lib/axlsx/util/ms_off_crypto.rb~ +0 -3
- data/lib/axlsx/util/ms_offcrypto.rb~ +0 -0
- data/lib/axlsx/util/parser.rb~ +0 -6
- data/lib/axlsx/util/storage.rb~ +0 -0
- data/lib/axlsx/workbook/shared_strings_table.rb~ +0 -69
- data/lib/axlsx/workbook/worksheet/cfvo.rb~ +0 -0
- data/lib/axlsx/workbook/worksheet/col.rb~ +0 -0
- data/lib/axlsx/workbook/worksheet/color_scale.rb~ +0 -46
- data/lib/axlsx/workbook/worksheet/comment.rb~ +0 -91
- data/lib/axlsx/workbook/worksheet/comments.rb~ +0 -86
- data/lib/axlsx/workbook/worksheet/data_bar.rb~ +0 -0
- data/lib/axlsx/workbook/worksheet/icon_set.rb~ +0 -95
- data/lib/axlsx/workbook/worksheet/shared_strings_table.rb~ +0 -0
- data/lib/axlsx/workbook/worksheet/table.rb~ +0 -97
- data/lib/schema/dc.xsd~ +0 -118
- data/lib/schema/dcterms.xsd~ +0 -331
- data/lib/schema/opc-coreProperties.xsd~ +0 -50
- data/test/drawing/tc_data_source.rb~ +0 -30
- data/test/drawing/tc_num_data.rb~ +0 -35
- data/test/drawing/tc_num_val.rb~ +0 -29
- data/test/drawing/tc_str_data.rb~ +0 -30
- data/test/drawing/tc_str_val.rb~ +0 -26
- data/test/drawing/tc_vml_drawing.rb~ +0 -0
- data/test/workbook/worksheet/table/tc_table.rb~ +0 -72
- data/test/workbook/worksheet/tc_cfvo.rb~ +0 -20
- data/test/workbook/worksheet/tc_col.rb~ +0 -10
- data/test/workbook/worksheet/tc_color_scale.rb~ +0 -0
- data/test/workbook/worksheet/tc_data_bar.rb~ +0 -0
- 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
|
-
|
|
42
|
-
|
|
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, '<foo> & <bar>')
|
|
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
|
|
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 =
|
|
205
|
-
assert_equal(@ws.fit_to_page
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
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
|