caxlsx 3.0.4 → 3.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.
- checksums.yaml +4 -4
- data/.yardopts +9 -9
- data/.yardopts_guide +18 -18
- data/CHANGELOG.md +354 -334
- data/LICENSE +21 -21
- data/README.md +168 -170
- data/Rakefile +29 -29
- data/examples/generate.rb +15 -15
- data/lib/axlsx/content_type/abstract_content_type.rb +32 -32
- data/lib/axlsx/content_type/content_type.rb +26 -26
- data/lib/axlsx/content_type/default.rb +25 -25
- data/lib/axlsx/content_type/override.rb +25 -25
- data/lib/axlsx/doc_props/app.rb +235 -235
- data/lib/axlsx/doc_props/core.rb +39 -39
- data/lib/axlsx/drawing/area_chart.rb +99 -99
- data/lib/axlsx/drawing/area_series.rb +110 -110
- data/lib/axlsx/drawing/ax_data_source.rb +26 -26
- data/lib/axlsx/drawing/axes.rb +61 -61
- data/lib/axlsx/drawing/axis.rb +190 -190
- data/lib/axlsx/drawing/bar_3D_chart.rb +148 -151
- data/lib/axlsx/drawing/bar_chart.rb +138 -143
- data/lib/axlsx/drawing/bar_series.rb +97 -80
- data/lib/axlsx/drawing/bubble_chart.rb +59 -59
- data/lib/axlsx/drawing/bubble_series.rb +63 -63
- data/lib/axlsx/drawing/cat_axis.rb +85 -85
- data/lib/axlsx/drawing/chart.rb +276 -276
- data/lib/axlsx/drawing/d_lbls.rb +90 -90
- data/lib/axlsx/drawing/drawing.rb +167 -167
- data/lib/axlsx/drawing/graphic_frame.rb +54 -54
- data/lib/axlsx/drawing/hyperlink.rb +100 -100
- data/lib/axlsx/drawing/line_3D_chart.rb +68 -68
- data/lib/axlsx/drawing/line_chart.rb +99 -99
- data/lib/axlsx/drawing/line_series.rb +110 -110
- data/lib/axlsx/drawing/marker.rb +84 -84
- data/lib/axlsx/drawing/num_data.rb +52 -52
- data/lib/axlsx/drawing/num_data_source.rb +62 -62
- data/lib/axlsx/drawing/num_val.rb +34 -34
- data/lib/axlsx/drawing/one_cell_anchor.rb +99 -99
- data/lib/axlsx/drawing/pic.rb +211 -211
- data/lib/axlsx/drawing/picture_locking.rb +42 -42
- data/lib/axlsx/drawing/pie_3D_chart.rb +47 -47
- data/lib/axlsx/drawing/pie_series.rb +74 -74
- data/lib/axlsx/drawing/scaling.rb +60 -60
- data/lib/axlsx/drawing/scatter_chart.rb +74 -74
- data/lib/axlsx/drawing/scatter_series.rb +129 -98
- data/lib/axlsx/drawing/ser_axis.rb +45 -45
- data/lib/axlsx/drawing/series.rb +69 -69
- data/lib/axlsx/drawing/series_title.rb +25 -25
- data/lib/axlsx/drawing/str_data.rb +42 -42
- data/lib/axlsx/drawing/str_val.rb +34 -34
- data/lib/axlsx/drawing/title.rb +97 -97
- data/lib/axlsx/drawing/two_cell_anchor.rb +97 -97
- data/lib/axlsx/drawing/val_axis.rb +37 -37
- data/lib/axlsx/drawing/view_3D.rb +115 -115
- data/lib/axlsx/drawing/vml_drawing.rb +42 -42
- data/lib/axlsx/drawing/vml_shape.rb +66 -66
- data/lib/axlsx/package.rb +388 -363
- data/lib/axlsx/rels/relationship.rb +130 -130
- data/lib/axlsx/rels/relationships.rb +32 -32
- data/lib/axlsx/stylesheet/border.rb +73 -71
- data/lib/axlsx/stylesheet/border_pr.rb +71 -71
- data/lib/axlsx/stylesheet/cell_alignment.rb +132 -132
- data/lib/axlsx/stylesheet/cell_protection.rb +41 -41
- data/lib/axlsx/stylesheet/cell_style.rb +72 -72
- data/lib/axlsx/stylesheet/color.rb +76 -76
- data/lib/axlsx/stylesheet/dxf.rb +79 -79
- data/lib/axlsx/stylesheet/fill.rb +35 -35
- data/lib/axlsx/stylesheet/font.rb +156 -156
- data/lib/axlsx/stylesheet/gradient_fill.rb +103 -103
- data/lib/axlsx/stylesheet/gradient_stop.rb +37 -37
- data/lib/axlsx/stylesheet/num_fmt.rb +86 -86
- data/lib/axlsx/stylesheet/pattern_fill.rb +73 -73
- data/lib/axlsx/stylesheet/styles.rb +494 -420
- data/lib/axlsx/stylesheet/table_style.rb +54 -54
- data/lib/axlsx/stylesheet/table_style_element.rb +77 -77
- data/lib/axlsx/stylesheet/table_styles.rb +46 -46
- data/lib/axlsx/stylesheet/xf.rb +147 -147
- data/lib/axlsx/util/accessors.rb +64 -64
- data/lib/axlsx/util/constants.rb +410 -401
- data/lib/axlsx/util/mime_type_utils.rb +11 -11
- data/lib/axlsx/util/options_parser.rb +16 -16
- data/lib/axlsx/util/serialized_attributes.rb +89 -89
- data/lib/axlsx/util/simple_typed_list.rb +179 -179
- data/lib/axlsx/util/storage.rb +146 -146
- data/lib/axlsx/util/validators.rb +312 -312
- data/lib/axlsx/util/zip_command.rb +73 -73
- data/lib/axlsx/version.rb +5 -5
- data/lib/axlsx/workbook/defined_name.rb +128 -128
- data/lib/axlsx/workbook/defined_names.rb +21 -21
- data/lib/axlsx/workbook/shared_strings_table.rb +77 -77
- data/lib/axlsx/workbook/workbook.rb +395 -370
- data/lib/axlsx/workbook/workbook_view.rb +80 -80
- data/lib/axlsx/workbook/workbook_views.rb +22 -22
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -77
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -244
- data/lib/axlsx/workbook/worksheet/break.rb +35 -35
- data/lib/axlsx/workbook/worksheet/cell.rb +506 -505
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
- data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
- data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -18
- data/lib/axlsx/workbook/worksheet/col.rb +145 -145
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
- data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
- data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
- data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
- data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
- data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
- data/lib/axlsx/workbook/worksheet/data_validation.rb +246 -246
- data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
- data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
- data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
- data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
- data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
- data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
- data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
- data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +296 -289
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
- data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
- data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
- data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
- data/lib/axlsx/workbook/worksheet/row.rb +164 -162
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
- data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
- data/lib/axlsx/workbook/worksheet/table.rb +102 -102
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
- data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
- data/lib/axlsx/workbook/worksheet/worksheet.rb +786 -764
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
- data/lib/axlsx.rb +185 -170
- data/lib/caxlsx.rb +2 -2
- data/lib/schema/dc.xsd +118 -118
- data/lib/schema/dcmitype.xsd +51 -51
- data/lib/schema/dcterms.xsd +331 -331
- data/lib/schema/dml-chartDrawing.xsd +146 -146
- data/lib/schema/dml-compatibility.xsd +14 -14
- data/lib/schema/dml-lockedCanvas.xsd +11 -11
- data/lib/schema/dml-main.xsd +3048 -3048
- data/lib/schema/dml-picture.xsd +23 -23
- data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
- data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
- data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
- data/lib/schema/shared-bibliography.xsd +144 -144
- data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
- data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
- data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
- data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
- data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
- data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
- data/lib/schema/shared-relationshipReference.xsd +25 -25
- data/lib/schema/vml-main.xsd +569 -569
- data/lib/schema/vml-officeDrawing.xsd +509 -509
- data/lib/schema/vml-presentationDrawing.xsd +12 -12
- data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
- data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
- data/lib/schema/xml.xsd +116 -116
- data/test/benchmark.rb +72 -72
- data/test/content_type/tc_content_type.rb +76 -76
- data/test/content_type/tc_default.rb +16 -16
- data/test/content_type/tc_override.rb +14 -14
- data/test/doc_props/tc_app.rb +43 -43
- data/test/doc_props/tc_core.rb +42 -42
- data/test/drawing/tc_area_chart.rb +39 -39
- data/test/drawing/tc_area_series.rb +71 -71
- data/test/drawing/tc_axes.rb +7 -7
- data/test/drawing/tc_axis.rb +112 -112
- data/test/drawing/tc_bar_3D_chart.rb +86 -71
- data/test/drawing/tc_bar_chart.rb +86 -71
- data/test/drawing/tc_bar_series.rb +46 -37
- data/test/drawing/tc_bubble_chart.rb +44 -44
- data/test/drawing/tc_bubble_series.rb +21 -21
- data/test/drawing/tc_cat_axis.rb +31 -31
- data/test/drawing/tc_cat_axis_data.rb +27 -27
- data/test/drawing/tc_chart.rb +123 -123
- data/test/drawing/tc_d_lbls.rb +57 -57
- data/test/drawing/tc_data_source.rb +23 -23
- data/test/drawing/tc_drawing.rb +80 -80
- data/test/drawing/tc_graphic_frame.rb +27 -27
- data/test/drawing/tc_hyperlink.rb +64 -64
- data/test/drawing/tc_line_3d_chart.rb +47 -47
- data/test/drawing/tc_line_chart.rb +39 -39
- data/test/drawing/tc_line_series.rb +71 -71
- data/test/drawing/tc_marker.rb +44 -44
- data/test/drawing/tc_named_axis_data.rb +27 -27
- data/test/drawing/tc_num_data.rb +31 -31
- data/test/drawing/tc_num_val.rb +29 -29
- data/test/drawing/tc_one_cell_anchor.rb +66 -66
- data/test/drawing/tc_pic.rb +103 -103
- data/test/drawing/tc_picture_locking.rb +72 -72
- data/test/drawing/tc_pie_3D_chart.rb +28 -28
- data/test/drawing/tc_pie_series.rb +33 -33
- data/test/drawing/tc_scaling.rb +36 -36
- data/test/drawing/tc_scatter_chart.rb +48 -48
- data/test/drawing/tc_scatter_series.rb +74 -56
- data/test/drawing/tc_ser_axis.rb +31 -31
- data/test/drawing/tc_series.rb +23 -23
- data/test/drawing/tc_series_title.rb +54 -54
- data/test/drawing/tc_str_data.rb +18 -18
- data/test/drawing/tc_str_val.rb +30 -30
- data/test/drawing/tc_title.rb +70 -70
- data/test/drawing/tc_two_cell_anchor.rb +36 -36
- data/test/drawing/tc_val_axis.rb +24 -24
- data/test/drawing/tc_view_3D.rb +54 -54
- data/test/drawing/tc_vml_drawing.rb +25 -25
- data/test/drawing/tc_vml_shape.rb +106 -106
- data/test/profile.rb +24 -24
- data/test/rels/tc_relationship.rb +52 -52
- data/test/rels/tc_relationships.rb +37 -37
- data/test/stylesheet/tc_border.rb +37 -37
- data/test/stylesheet/tc_border_pr.rb +32 -32
- data/test/stylesheet/tc_cell_alignment.rb +81 -81
- data/test/stylesheet/tc_cell_protection.rb +29 -29
- data/test/stylesheet/tc_cell_style.rb +57 -57
- data/test/stylesheet/tc_color.rb +43 -43
- data/test/stylesheet/tc_dxf.rb +81 -81
- data/test/stylesheet/tc_fill.rb +18 -18
- data/test/stylesheet/tc_font.rb +133 -133
- data/test/stylesheet/tc_gradient_fill.rb +72 -72
- data/test/stylesheet/tc_gradient_stop.rb +31 -31
- data/test/stylesheet/tc_num_fmt.rb +30 -30
- data/test/stylesheet/tc_pattern_fill.rb +43 -43
- data/test/stylesheet/tc_styles.rb +309 -261
- data/test/stylesheet/tc_table_style.rb +44 -44
- data/test/stylesheet/tc_table_style_element.rb +45 -45
- data/test/stylesheet/tc_table_styles.rb +29 -29
- data/test/stylesheet/tc_xf.rb +120 -120
- data/test/tc_axlsx.rb +109 -109
- data/test/tc_helper.rb +10 -12
- data/test/tc_package.rb +317 -264
- data/test/util/tc_mime_type_utils.rb +13 -13
- data/test/util/tc_serialized_attributes.rb +19 -19
- data/test/util/tc_simple_typed_list.rb +77 -77
- data/test/util/tc_validators.rb +210 -210
- data/test/workbook/tc_defined_name.rb +49 -49
- data/test/workbook/tc_shared_strings_table.rb +59 -59
- data/test/workbook/tc_workbook.rb +165 -160
- data/test/workbook/tc_workbook_view.rb +50 -50
- data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -38
- data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -76
- data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -50
- data/test/workbook/worksheet/tc_break.rb +49 -49
- data/test/workbook/worksheet/tc_cell.rb +465 -453
- data/test/workbook/worksheet/tc_cfvo.rb +31 -31
- data/test/workbook/worksheet/tc_col.rb +93 -93
- data/test/workbook/worksheet/tc_color_scale.rb +58 -58
- data/test/workbook/worksheet/tc_comment.rb +72 -72
- data/test/workbook/worksheet/tc_comments.rb +57 -57
- data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -224
- data/test/workbook/worksheet/tc_data_bar.rb +46 -46
- data/test/workbook/worksheet/tc_data_validation.rb +265 -265
- data/test/workbook/worksheet/tc_date_time_converter.rb +124 -124
- data/test/workbook/worksheet/tc_header_footer.rb +151 -151
- data/test/workbook/worksheet/tc_icon_set.rb +45 -45
- data/test/workbook/worksheet/tc_outline_pr.rb +19 -19
- data/test/workbook/worksheet/tc_page_margins.rb +97 -97
- data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -15
- data/test/workbook/worksheet/tc_page_setup.rb +143 -143
- data/test/workbook/worksheet/tc_pane.rb +54 -54
- data/test/workbook/worksheet/tc_pivot_table.rb +180 -135
- data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +62 -54
- data/test/workbook/worksheet/tc_print_options.rb +72 -72
- data/test/workbook/worksheet/tc_protected_range.rb +17 -17
- data/test/workbook/worksheet/tc_rich_text.rb +44 -44
- data/test/workbook/worksheet/tc_rich_text_run.rb +173 -173
- data/test/workbook/worksheet/tc_row.rb +160 -139
- data/test/workbook/worksheet/tc_selection.rb +55 -55
- data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -18
- data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -88
- data/test/workbook/worksheet/tc_sheet_pr.rb +49 -49
- data/test/workbook/worksheet/tc_sheet_protection.rb +117 -117
- data/test/workbook/worksheet/tc_sheet_view.rb +214 -214
- data/test/workbook/worksheet/tc_table.rb +77 -67
- data/test/workbook/worksheet/tc_table_style_info.rb +53 -53
- data/test/workbook/worksheet/tc_worksheet.rb +632 -601
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -55
- metadata +11 -11
|
@@ -1,49 +1,49 @@
|
|
|
1
|
-
require 'tc_helper'
|
|
2
|
-
|
|
3
|
-
class TestDefinedNames < Test::Unit::TestCase
|
|
4
|
-
def setup
|
|
5
|
-
@dn = Axlsx::DefinedName.new('Sheet1!A1:A1')
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def test_initialize
|
|
9
|
-
assert_equal('Sheet1!A1:A1', @dn.formula)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def test_string_attributes
|
|
13
|
-
%w(short_cut_key status_bar help description custom_menu comment).each do |attr|
|
|
14
|
-
assert_raise(ArgumentError, 'only strings allowed in string attributes') { @dn.send("#{attr}=", 1) }
|
|
15
|
-
assert_nothing_raised { @dn.send("#{attr}=", '_xlnm.Sheet_Title') }
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def test_boolean_attributes
|
|
20
|
-
%w(workbook_parameter publish_to_server xlm vb_proceedure function hidden).each do |attr|
|
|
21
|
-
assert_raise(ArgumentError, 'only booleanish allowed in string attributes') { @dn.send("#{attr}=", 'foo') }
|
|
22
|
-
assert_nothing_raised { @dn.send("#{attr}=", 1) }
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def test_local_sheet_id
|
|
28
|
-
assert_raise(ArgumentError, 'local_sheet_id must be an unsigned int') { @dn.local_sheet_id = -1 }
|
|
29
|
-
assert_nothing_raised { @dn.local_sheet_id = 1 }
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def test_do_not_camelcase_value_for_name
|
|
33
|
-
@dn.name = '_xlnm._FilterDatabase'
|
|
34
|
-
doc = Nokogiri::XML(@dn.to_xml_string)
|
|
35
|
-
assert_equal(doc.xpath("//definedName[@name='_xlnm._FilterDatabase']").size, 1)
|
|
36
|
-
assert_equal('Sheet1!A1:A1', doc.xpath('//definedName').text)
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def test_to_xml_string
|
|
40
|
-
assert_raise(ArgumentError, 'name is required for serialization') { @dn.to_xml_string }
|
|
41
|
-
@dn.name = '_xlnm.Print_Titles'
|
|
42
|
-
@dn.hidden = true
|
|
43
|
-
doc = Nokogiri::XML(@dn.to_xml_string)
|
|
44
|
-
assert_equal(doc.xpath("//definedName[@name='_xlnm.Print_Titles']").size, 1)
|
|
45
|
-
assert_equal(doc.xpath("//definedName[@hidden='1']").size, 1)
|
|
46
|
-
assert_equal('Sheet1!A1:A1', doc.xpath('//definedName').text)
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
end
|
|
1
|
+
require 'tc_helper'
|
|
2
|
+
|
|
3
|
+
class TestDefinedNames < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@dn = Axlsx::DefinedName.new('Sheet1!A1:A1')
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def test_initialize
|
|
9
|
+
assert_equal('Sheet1!A1:A1', @dn.formula)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_string_attributes
|
|
13
|
+
%w(short_cut_key status_bar help description custom_menu comment).each do |attr|
|
|
14
|
+
assert_raise(ArgumentError, 'only strings allowed in string attributes') { @dn.send("#{attr}=", 1) }
|
|
15
|
+
assert_nothing_raised { @dn.send("#{attr}=", '_xlnm.Sheet_Title') }
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_boolean_attributes
|
|
20
|
+
%w(workbook_parameter publish_to_server xlm vb_proceedure function hidden).each do |attr|
|
|
21
|
+
assert_raise(ArgumentError, 'only booleanish allowed in string attributes') { @dn.send("#{attr}=", 'foo') }
|
|
22
|
+
assert_nothing_raised { @dn.send("#{attr}=", 1) }
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_local_sheet_id
|
|
28
|
+
assert_raise(ArgumentError, 'local_sheet_id must be an unsigned int') { @dn.local_sheet_id = -1 }
|
|
29
|
+
assert_nothing_raised { @dn.local_sheet_id = 1 }
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_do_not_camelcase_value_for_name
|
|
33
|
+
@dn.name = '_xlnm._FilterDatabase'
|
|
34
|
+
doc = Nokogiri::XML(@dn.to_xml_string)
|
|
35
|
+
assert_equal(doc.xpath("//definedName[@name='_xlnm._FilterDatabase']").size, 1)
|
|
36
|
+
assert_equal('Sheet1!A1:A1', doc.xpath('//definedName').text)
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_to_xml_string
|
|
40
|
+
assert_raise(ArgumentError, 'name is required for serialization') { @dn.to_xml_string }
|
|
41
|
+
@dn.name = '_xlnm.Print_Titles'
|
|
42
|
+
@dn.hidden = true
|
|
43
|
+
doc = Nokogiri::XML(@dn.to_xml_string)
|
|
44
|
+
assert_equal(doc.xpath("//definedName[@name='_xlnm.Print_Titles']").size, 1)
|
|
45
|
+
assert_equal(doc.xpath("//definedName[@hidden='1']").size, 1)
|
|
46
|
+
assert_equal('Sheet1!A1:A1', doc.xpath('//definedName').text)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
end
|
|
@@ -1,59 +1,59 @@
|
|
|
1
|
-
require 'tc_helper.rb'
|
|
2
|
-
|
|
3
|
-
class TestSharedStringsTable < Test::Unit::TestCase
|
|
4
|
-
|
|
5
|
-
def setup
|
|
6
|
-
@p = Axlsx::Package.new :use_shared_strings=>true
|
|
7
|
-
|
|
8
|
-
ws = @p.workbook.add_worksheet
|
|
9
|
-
ws.add_row ['a', 1, 'b']
|
|
10
|
-
ws.add_row ['b', 1, 'c']
|
|
11
|
-
ws.add_row ['c', 1, 'd']
|
|
12
|
-
ws.rows.last.add_cell('b', :type => :text)
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def test_workbook_has_shared_strings
|
|
16
|
-
assert(@p.workbook.shared_strings.is_a?(Axlsx::SharedStringsTable), "shared string table was not created")
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def test_count
|
|
20
|
-
sst = @p.workbook.shared_strings
|
|
21
|
-
assert_equal(sst.count, 7)
|
|
22
|
-
end
|
|
23
|
-
|
|
24
|
-
def test_unique_count
|
|
25
|
-
sst = @p.workbook.shared_strings
|
|
26
|
-
assert_equal(sst.unique_count, 4)
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def test_uses_workbook_xml_space
|
|
30
|
-
assert_equal(@p.workbook.xml_space, @p.workbook.shared_strings.xml_space)
|
|
31
|
-
@p.workbook.xml_space = :default
|
|
32
|
-
assert_equal(:default, @p.workbook.shared_strings.xml_space)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def test_valid_document
|
|
36
|
-
schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
|
|
37
|
-
doc = Nokogiri::XML(@p.workbook.shared_strings.to_xml_string)
|
|
38
|
-
errors = []
|
|
39
|
-
schema.validate(doc).each do |error|
|
|
40
|
-
puts error.message
|
|
41
|
-
errors << error
|
|
42
|
-
end
|
|
43
|
-
assert_equal(errors.size, 0, "sharedStirngs.xml Invalid" + errors.map{ |e| e.message }.to_s)
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def test_remove_control_characters_in_xml_serialization
|
|
47
|
-
nasties = "hello\x10\x00\x1C\x1Eworld"
|
|
48
|
-
@p.workbook.worksheets[0].add_row [nasties]
|
|
49
|
-
|
|
50
|
-
# test that the nasty string was added to the shared strings
|
|
51
|
-
assert @p.workbook.shared_strings.unique_cells.has_key?(nasties)
|
|
52
|
-
|
|
53
|
-
# test that none of the control characters are in the XML output for shared strings
|
|
54
|
-
assert_no_match(/#{Axlsx::CONTROL_CHARS}/, @p.workbook.shared_strings.to_xml_string)
|
|
55
|
-
|
|
56
|
-
# assert that the shared string was normalized to remove the control characters
|
|
57
|
-
assert_not_nil @p.workbook.shared_strings.to_xml_string.index("helloworld")
|
|
58
|
-
end
|
|
59
|
-
end
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestSharedStringsTable < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@p = Axlsx::Package.new :use_shared_strings=>true
|
|
7
|
+
|
|
8
|
+
ws = @p.workbook.add_worksheet
|
|
9
|
+
ws.add_row ['a', 1, 'b']
|
|
10
|
+
ws.add_row ['b', 1, 'c']
|
|
11
|
+
ws.add_row ['c', 1, 'd']
|
|
12
|
+
ws.rows.last.add_cell('b', :type => :text)
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_workbook_has_shared_strings
|
|
16
|
+
assert(@p.workbook.shared_strings.is_a?(Axlsx::SharedStringsTable), "shared string table was not created")
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_count
|
|
20
|
+
sst = @p.workbook.shared_strings
|
|
21
|
+
assert_equal(sst.count, 7)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_unique_count
|
|
25
|
+
sst = @p.workbook.shared_strings
|
|
26
|
+
assert_equal(sst.unique_count, 4)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_uses_workbook_xml_space
|
|
30
|
+
assert_equal(@p.workbook.xml_space, @p.workbook.shared_strings.xml_space)
|
|
31
|
+
@p.workbook.xml_space = :default
|
|
32
|
+
assert_equal(:default, @p.workbook.shared_strings.xml_space)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_valid_document
|
|
36
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
|
|
37
|
+
doc = Nokogiri::XML(@p.workbook.shared_strings.to_xml_string)
|
|
38
|
+
errors = []
|
|
39
|
+
schema.validate(doc).each do |error|
|
|
40
|
+
puts error.message
|
|
41
|
+
errors << error
|
|
42
|
+
end
|
|
43
|
+
assert_equal(errors.size, 0, "sharedStirngs.xml Invalid" + errors.map{ |e| e.message }.to_s)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_remove_control_characters_in_xml_serialization
|
|
47
|
+
nasties = "hello\x10\x00\x1C\x1Eworld"
|
|
48
|
+
@p.workbook.worksheets[0].add_row [nasties]
|
|
49
|
+
|
|
50
|
+
# test that the nasty string was added to the shared strings
|
|
51
|
+
assert @p.workbook.shared_strings.unique_cells.has_key?(nasties)
|
|
52
|
+
|
|
53
|
+
# test that none of the control characters are in the XML output for shared strings
|
|
54
|
+
assert_no_match(/#{Axlsx::CONTROL_CHARS}/, @p.workbook.shared_strings.to_xml_string)
|
|
55
|
+
|
|
56
|
+
# assert that the shared string was normalized to remove the control characters
|
|
57
|
+
assert_not_nil @p.workbook.shared_strings.to_xml_string.index("helloworld")
|
|
58
|
+
end
|
|
59
|
+
end
|
|
@@ -1,160 +1,165 @@
|
|
|
1
|
-
require 'tc_helper.rb'
|
|
2
|
-
|
|
3
|
-
class TestWorkbook < Test::Unit::TestCase
|
|
4
|
-
def setup
|
|
5
|
-
p = Axlsx::Package.new
|
|
6
|
-
@wb = p.workbook
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def teardown
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def test_worksheet_users_xml_space
|
|
13
|
-
sheet = @wb.add_worksheet(:name => 'foo')
|
|
14
|
-
ws_xml = Nokogiri::XML(sheet.to_xml_string)
|
|
15
|
-
assert(ws_xml.xpath("//xmlns:worksheet/@xml:space='preserve'"))
|
|
16
|
-
|
|
17
|
-
@wb.xml_space = :default
|
|
18
|
-
ws_xml = Nokogiri::XML(sheet.to_xml_string)
|
|
19
|
-
assert(ws_xml.xpath("//xmlns:worksheet/@xml:space='default'"))
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def test_xml_space
|
|
23
|
-
assert_equal(:preserve, @wb.xml_space)
|
|
24
|
-
@wb.xml_space = :default
|
|
25
|
-
assert_equal(:default, @wb.xml_space)
|
|
26
|
-
assert_raise(ArgumentError) { @wb.xml_space = :none }
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def test_no_autowidth
|
|
30
|
-
assert_equal(@wb.use_autowidth, true)
|
|
31
|
-
assert_raise(ArgumentError) {@wb.use_autowidth = 0.1}
|
|
32
|
-
assert_nothing_raised {@wb.use_autowidth = false}
|
|
33
|
-
assert_equal(@wb.use_autowidth, false)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
def test_is_reversed
|
|
37
|
-
assert_equal(@wb.is_reversed, nil)
|
|
38
|
-
assert_raise(ArgumentError) {@wb.is_reversed = 0.1}
|
|
39
|
-
assert_nothing_raised {@wb.is_reversed = true }
|
|
40
|
-
assert_equal(@wb.use_autowidth, true)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def test_sheet_by_name_retrieval
|
|
44
|
-
@wb.add_worksheet(:name=>'foo')
|
|
45
|
-
@wb.add_worksheet(:name=>'bar')
|
|
46
|
-
assert_equal('foo', @wb.sheet_by_name('foo').name)
|
|
47
|
-
|
|
48
|
-
end
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
@wb.
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
assert_equal(
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
def
|
|
63
|
-
@wb.
|
|
64
|
-
assert_equal(1, @wb.
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
def
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
@wb.
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
@wb.
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
@wb.
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
@wb.
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestWorkbook < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
p = Axlsx::Package.new
|
|
6
|
+
@wb = p.workbook
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def teardown
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_worksheet_users_xml_space
|
|
13
|
+
sheet = @wb.add_worksheet(:name => 'foo')
|
|
14
|
+
ws_xml = Nokogiri::XML(sheet.to_xml_string)
|
|
15
|
+
assert(ws_xml.xpath("//xmlns:worksheet/@xml:space='preserve'"))
|
|
16
|
+
|
|
17
|
+
@wb.xml_space = :default
|
|
18
|
+
ws_xml = Nokogiri::XML(sheet.to_xml_string)
|
|
19
|
+
assert(ws_xml.xpath("//xmlns:worksheet/@xml:space='default'"))
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_xml_space
|
|
23
|
+
assert_equal(:preserve, @wb.xml_space)
|
|
24
|
+
@wb.xml_space = :default
|
|
25
|
+
assert_equal(:default, @wb.xml_space)
|
|
26
|
+
assert_raise(ArgumentError) { @wb.xml_space = :none }
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_no_autowidth
|
|
30
|
+
assert_equal(@wb.use_autowidth, true)
|
|
31
|
+
assert_raise(ArgumentError) {@wb.use_autowidth = 0.1}
|
|
32
|
+
assert_nothing_raised {@wb.use_autowidth = false}
|
|
33
|
+
assert_equal(@wb.use_autowidth, false)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_is_reversed
|
|
37
|
+
assert_equal(@wb.is_reversed, nil)
|
|
38
|
+
assert_raise(ArgumentError) {@wb.is_reversed = 0.1}
|
|
39
|
+
assert_nothing_raised {@wb.is_reversed = true }
|
|
40
|
+
assert_equal(@wb.use_autowidth, true)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_sheet_by_name_retrieval
|
|
44
|
+
@wb.add_worksheet(:name=>'foo')
|
|
45
|
+
@wb.add_worksheet(:name=>'bar')
|
|
46
|
+
assert_equal('foo', @wb.sheet_by_name('foo').name)
|
|
47
|
+
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
def test_worksheet_empty_name
|
|
51
|
+
assert_raise(ArgumentError) {@wb.add_worksheet(:name=>'')}
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_date1904
|
|
55
|
+
assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
|
|
56
|
+
@wb.date1904 = :false
|
|
57
|
+
assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
|
|
58
|
+
Axlsx::Workbook.date1904 = :true
|
|
59
|
+
assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
def test_add_defined_name
|
|
63
|
+
@wb.add_defined_name 'Sheet1!1:1', :name => '_xlnm.Print_Titles', :hidden => true
|
|
64
|
+
assert_equal(1, @wb.defined_names.size)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def test_add_view
|
|
68
|
+
@wb.add_view visibility: :hidden, window_width: 800
|
|
69
|
+
assert_equal(1, @wb.views.size)
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
def test_shared_strings
|
|
73
|
+
assert_equal(@wb.use_shared_strings, nil)
|
|
74
|
+
assert_raise(ArgumentError) {@wb.use_shared_strings = 'bpb'}
|
|
75
|
+
assert_nothing_raised {@wb.use_shared_strings = :true}
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def test_add_worksheet
|
|
79
|
+
assert(@wb.worksheets.empty?, "worbook has no worksheets by default")
|
|
80
|
+
ws = @wb.add_worksheet(:name=>"bob")
|
|
81
|
+
assert_equal(@wb.worksheets.size, 1, "add_worksheet adds a worksheet!")
|
|
82
|
+
assert_equal(@wb.worksheets.first, ws, "the worksheet returned is the worksheet added")
|
|
83
|
+
assert_equal(ws.name, "bob", "name option gets passed to worksheet")
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def test_insert_worksheet
|
|
87
|
+
@wb.add_worksheet(:name => 'A')
|
|
88
|
+
@wb.add_worksheet(:name => 'B')
|
|
89
|
+
ws3 = @wb.insert_worksheet(0, :name => 'C')
|
|
90
|
+
assert_equal(ws3.name, @wb.worksheets.first.name)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
def test_relationships
|
|
94
|
+
#current relationship size is 1 due to style relation
|
|
95
|
+
assert(@wb.relationships.size == 1)
|
|
96
|
+
@wb.add_worksheet
|
|
97
|
+
assert(@wb.relationships.size == 2)
|
|
98
|
+
@wb.use_shared_strings = true
|
|
99
|
+
assert(@wb.relationships.size == 3)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
def test_to_xml
|
|
103
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
|
|
104
|
+
doc = Nokogiri::XML(@wb.to_xml_string)
|
|
105
|
+
errors = []
|
|
106
|
+
schema.validate(doc).each do |error|
|
|
107
|
+
errors.push error
|
|
108
|
+
puts error.message
|
|
109
|
+
end
|
|
110
|
+
assert(errors.empty?, "error free validation")
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def test_to_xml_reversed
|
|
114
|
+
@wb.is_reversed = true
|
|
115
|
+
@wb.add_worksheet(:name => 'first')
|
|
116
|
+
second = @wb.add_worksheet(:name => 'second')
|
|
117
|
+
doc = Nokogiri::XML(@wb.to_xml_string)
|
|
118
|
+
assert_equal second.name, doc.xpath('//xmlns:workbook/xmlns:sheets/*[1]/@name').to_s
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
def test_range_requires_valid_sheet
|
|
122
|
+
ws = @wb.add_worksheet :name=>'fish'
|
|
123
|
+
ws.add_row [1,2,3]
|
|
124
|
+
ws.add_row [4,5,6]
|
|
125
|
+
assert_raise(ArgumentError, "no sheet name part") { @wb["A1:C2"]}
|
|
126
|
+
assert_equal @wb['fish!A1:C2'].size, 6
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
def test_to_xml_adds_worksheet_when_worksheets_is_empty
|
|
130
|
+
assert(@wb.worksheets.empty?)
|
|
131
|
+
@wb.to_xml_string
|
|
132
|
+
assert(@wb.worksheets.size == 1)
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def test_to_xml_string_defined_names
|
|
136
|
+
@wb.add_worksheet do |sheet|
|
|
137
|
+
sheet.add_row [1, "two"]
|
|
138
|
+
sheet.auto_filter = "A1:B1"
|
|
139
|
+
end
|
|
140
|
+
doc = Nokogiri::XML(@wb.to_xml_string)
|
|
141
|
+
assert_equal(doc.xpath('//xmlns:workbook/xmlns:definedNames/xmlns:definedName').inner_text, @wb.worksheets[0].auto_filter.defined_name)
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
def test_to_xml_string_book_views
|
|
145
|
+
@wb.add_worksheet do |sheet|
|
|
146
|
+
sheet.add_row [1, "two"]
|
|
147
|
+
end
|
|
148
|
+
@wb.add_view active_tab: 0, first_sheet: 0
|
|
149
|
+
doc = Nokogiri::XML(@wb.to_xml_string)
|
|
150
|
+
assert_equal(1, doc.xpath('//xmlns:workbook/xmlns:bookViews/xmlns:workbookView[@activeTab=0]').size)
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
def test_to_xml_uses_correct_rIds_for_pivotCache
|
|
154
|
+
ws = @wb.add_worksheet
|
|
155
|
+
pivot_table = ws.add_pivot_table('G5:G6', 'A1:D5')
|
|
156
|
+
doc = Nokogiri::XML(@wb.to_xml_string)
|
|
157
|
+
assert_equal pivot_table.cache_definition.rId, doc.xpath("//xmlns:pivotCache").first["r:id"]
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def test_worksheet_name_is_intact_after_serialized_into_xml
|
|
161
|
+
sheet = @wb.add_worksheet(:name => '_Example')
|
|
162
|
+
wb_xml = Nokogiri::XML(@wb.to_xml_string)
|
|
163
|
+
assert_equal sheet.name, wb_xml.xpath('//xmlns:workbook/xmlns:sheets/*[1]/@name').to_s
|
|
164
|
+
end
|
|
165
|
+
end
|
|
@@ -1,50 +1,50 @@
|
|
|
1
|
-
require 'tc_helper'
|
|
2
|
-
|
|
3
|
-
class TestWorkbookView < Test::Unit::TestCase
|
|
4
|
-
|
|
5
|
-
def setup
|
|
6
|
-
@options = { visibility: :hidden, minimized: true, show_horizontal_scroll: true, show_vertical_scroll: true,
|
|
7
|
-
show_sheet_tabs: true, tab_ratio: 750, first_sheet: 0, active_tab: 1, x_window: 500, y_window: 400,
|
|
8
|
-
window_width: 800, window_height: 600, auto_filter_date_grouping: true }
|
|
9
|
-
@book_view = Axlsx::WorkbookView.new @options
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def test_options_assignation
|
|
13
|
-
@options.each do |key, value|
|
|
14
|
-
assert_equal(value, @book_view.send(key))
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def test_boolean_attribute_validation
|
|
19
|
-
%w(minimized show_horizontal_scroll show_vertical_scroll show_sheet_tabs auto_filter_date_grouping).each do |attr|
|
|
20
|
-
assert_raise(ArgumentError, 'only booleanish allowed in boolean attributes') { @book_view.send("#{attr}=", "banana") }
|
|
21
|
-
assert_nothing_raised { @book_view.send("#{attr}=", false )}
|
|
22
|
-
end
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def test_integer_attribute_validation
|
|
26
|
-
%w(tab_ratio first_sheet active_tab x_window y_window window_width window_height).each do |attr|
|
|
27
|
-
assert_raise(ArgumentError, 'only integer allowed in integer attributes') { @book_view.send("#{attr}=", "b") }
|
|
28
|
-
assert_nothing_raised { @book_view.send("#{attr}=", 7 )}
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def test_visibility_attribute_validation
|
|
33
|
-
assert_raise(ArgumentError) { @book_view.visibility = :foobar }
|
|
34
|
-
assert_nothing_raised { @book_view.visibility = :hidden }
|
|
35
|
-
assert_nothing_raised { @book_view.visibility = :very_hidden }
|
|
36
|
-
assert_nothing_raised { @book_view.visibility = :visible }
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def test_to_xml_string
|
|
40
|
-
xml = @book_view.to_xml_string
|
|
41
|
-
doc = Nokogiri::XML(xml)
|
|
42
|
-
@options.each do |key, value|
|
|
43
|
-
if value == true || value == false
|
|
44
|
-
value = value ? 1 : 0
|
|
45
|
-
end
|
|
46
|
-
path = "workbookView[@#{Axlsx.camel(key, false)}='#{value}']"
|
|
47
|
-
assert_equal(1, doc.xpath(path).size)
|
|
48
|
-
end
|
|
49
|
-
end
|
|
50
|
-
end
|
|
1
|
+
require 'tc_helper'
|
|
2
|
+
|
|
3
|
+
class TestWorkbookView < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@options = { visibility: :hidden, minimized: true, show_horizontal_scroll: true, show_vertical_scroll: true,
|
|
7
|
+
show_sheet_tabs: true, tab_ratio: 750, first_sheet: 0, active_tab: 1, x_window: 500, y_window: 400,
|
|
8
|
+
window_width: 800, window_height: 600, auto_filter_date_grouping: true }
|
|
9
|
+
@book_view = Axlsx::WorkbookView.new @options
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_options_assignation
|
|
13
|
+
@options.each do |key, value|
|
|
14
|
+
assert_equal(value, @book_view.send(key))
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_boolean_attribute_validation
|
|
19
|
+
%w(minimized show_horizontal_scroll show_vertical_scroll show_sheet_tabs auto_filter_date_grouping).each do |attr|
|
|
20
|
+
assert_raise(ArgumentError, 'only booleanish allowed in boolean attributes') { @book_view.send("#{attr}=", "banana") }
|
|
21
|
+
assert_nothing_raised { @book_view.send("#{attr}=", false )}
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_integer_attribute_validation
|
|
26
|
+
%w(tab_ratio first_sheet active_tab x_window y_window window_width window_height).each do |attr|
|
|
27
|
+
assert_raise(ArgumentError, 'only integer allowed in integer attributes') { @book_view.send("#{attr}=", "b") }
|
|
28
|
+
assert_nothing_raised { @book_view.send("#{attr}=", 7 )}
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_visibility_attribute_validation
|
|
33
|
+
assert_raise(ArgumentError) { @book_view.visibility = :foobar }
|
|
34
|
+
assert_nothing_raised { @book_view.visibility = :hidden }
|
|
35
|
+
assert_nothing_raised { @book_view.visibility = :very_hidden }
|
|
36
|
+
assert_nothing_raised { @book_view.visibility = :visible }
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_to_xml_string
|
|
40
|
+
xml = @book_view.to_xml_string
|
|
41
|
+
doc = Nokogiri::XML(xml)
|
|
42
|
+
@options.each do |key, value|
|
|
43
|
+
if value == true || value == false
|
|
44
|
+
value = value ? 1 : 0
|
|
45
|
+
end
|
|
46
|
+
path = "workbookView[@#{Axlsx.camel(key, false)}='#{value}']"
|
|
47
|
+
assert_equal(1, doc.xpath(path).size)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|