caxlsx 3.2.0 → 3.4.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 +394 -354
- data/LICENSE +21 -21
- data/README.md +184 -168
- data/Rakefile +28 -29
- data/examples/generate.rb +15 -15
- data/lib/axlsx/content_type/abstract_content_type.rb +29 -32
- data/lib/axlsx/content_type/content_type.rb +22 -26
- data/lib/axlsx/content_type/default.rb +21 -25
- data/lib/axlsx/content_type/override.rb +21 -25
- data/lib/axlsx/doc_props/app.rb +230 -235
- data/lib/axlsx/doc_props/core.rb +34 -39
- data/lib/axlsx/drawing/area_chart.rb +96 -99
- data/lib/axlsx/drawing/area_series.rb +107 -110
- data/lib/axlsx/drawing/ax_data_source.rb +21 -26
- data/lib/axlsx/drawing/axes.rb +60 -61
- data/lib/axlsx/drawing/axis.rb +185 -190
- data/lib/axlsx/drawing/bar_3D_chart.rb +145 -148
- data/lib/axlsx/drawing/bar_chart.rb +135 -138
- data/lib/axlsx/drawing/bar_series.rb +91 -97
- data/lib/axlsx/drawing/bubble_chart.rb +56 -59
- data/lib/axlsx/drawing/bubble_series.rb +60 -63
- data/lib/axlsx/drawing/cat_axis.rb +80 -85
- data/lib/axlsx/drawing/chart.rb +294 -276
- data/lib/axlsx/drawing/d_lbls.rb +92 -90
- data/lib/axlsx/drawing/drawing.rb +163 -167
- data/lib/axlsx/drawing/graphic_frame.rb +51 -54
- data/lib/axlsx/drawing/hyperlink.rb +97 -100
- data/lib/axlsx/drawing/line_3D_chart.rb +64 -68
- data/lib/axlsx/drawing/line_chart.rb +96 -99
- data/lib/axlsx/drawing/line_series.rb +107 -110
- data/lib/axlsx/drawing/marker.rb +80 -84
- data/lib/axlsx/drawing/num_data.rb +47 -52
- data/lib/axlsx/drawing/num_data_source.rb +58 -62
- data/lib/axlsx/drawing/num_val.rb +31 -34
- data/lib/axlsx/drawing/one_cell_anchor.rb +97 -99
- data/lib/axlsx/drawing/pic.rb +244 -211
- data/lib/axlsx/drawing/picture_locking.rb +39 -42
- data/lib/axlsx/drawing/pie_3D_chart.rb +42 -47
- data/lib/axlsx/drawing/pie_series.rb +69 -74
- data/lib/axlsx/drawing/scaling.rb +57 -60
- data/lib/axlsx/drawing/scatter_chart.rb +71 -74
- data/lib/axlsx/drawing/scatter_series.rb +126 -129
- data/lib/axlsx/drawing/ser_axis.rb +41 -45
- data/lib/axlsx/drawing/series.rb +67 -69
- data/lib/axlsx/drawing/series_title.rb +23 -25
- data/lib/axlsx/drawing/str_data.rb +37 -42
- data/lib/axlsx/drawing/str_val.rb +31 -34
- data/lib/axlsx/drawing/title.rb +104 -97
- data/lib/axlsx/drawing/two_cell_anchor.rb +95 -97
- data/lib/axlsx/drawing/val_axis.rb +34 -37
- data/lib/axlsx/drawing/view_3D.rb +115 -115
- data/lib/axlsx/drawing/vml_drawing.rb +39 -42
- data/lib/axlsx/drawing/vml_shape.rb +63 -66
- data/lib/axlsx/package.rb +397 -388
- data/lib/axlsx/rels/relationship.rb +127 -130
- data/lib/axlsx/rels/relationships.rb +29 -32
- data/lib/axlsx/stylesheet/border.rb +70 -73
- data/lib/axlsx/stylesheet/border_pr.rb +69 -71
- data/lib/axlsx/stylesheet/cell_alignment.rb +124 -132
- data/lib/axlsx/stylesheet/cell_protection.rb +38 -41
- data/lib/axlsx/stylesheet/cell_style.rb +68 -72
- data/lib/axlsx/stylesheet/color.rb +77 -76
- data/lib/axlsx/stylesheet/dxf.rb +75 -79
- data/lib/axlsx/stylesheet/fill.rb +31 -35
- data/lib/axlsx/stylesheet/font.rb +157 -156
- data/lib/axlsx/stylesheet/gradient_fill.rb +101 -103
- data/lib/axlsx/stylesheet/gradient_stop.rb +36 -37
- data/lib/axlsx/stylesheet/num_fmt.rb +83 -86
- data/lib/axlsx/stylesheet/pattern_fill.rb +71 -73
- data/lib/axlsx/stylesheet/styles.rb +543 -494
- data/lib/axlsx/stylesheet/table_style.rb +51 -54
- data/lib/axlsx/stylesheet/table_style_element.rb +74 -77
- data/lib/axlsx/stylesheet/table_styles.rb +42 -46
- data/lib/axlsx/stylesheet/xf.rb +144 -147
- data/lib/axlsx/util/accessors.rb +62 -64
- data/lib/axlsx/util/constants.rb +414 -410
- data/lib/axlsx/util/mime_type_utils.rb +24 -11
- data/lib/axlsx/util/options_parser.rb +15 -16
- data/lib/axlsx/util/serialized_attributes.rb +88 -89
- data/lib/axlsx/util/simple_typed_list.rb +180 -179
- data/lib/axlsx/util/storage.rb +142 -146
- data/lib/axlsx/util/validators.rb +315 -312
- data/lib/axlsx/util/zip_command.rb +71 -73
- data/lib/axlsx/version.rb +4 -5
- data/lib/axlsx/workbook/defined_name.rb +129 -128
- data/lib/axlsx/workbook/defined_names.rb +20 -21
- data/lib/axlsx/workbook/shared_strings_table.rb +74 -77
- data/lib/axlsx/workbook/workbook.rb +430 -395
- data/lib/axlsx/workbook/workbook_view.rb +75 -80
- data/lib/axlsx/workbook/workbook_views.rb +20 -22
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +78 -77
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +243 -244
- data/lib/axlsx/workbook/worksheet/border_creator.rb +79 -0
- data/lib/axlsx/workbook/worksheet/break.rb +32 -35
- data/lib/axlsx/workbook/worksheet/cell.rb +552 -506
- 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 +16 -18
- data/lib/axlsx/workbook/worksheet/col.rb +142 -145
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +34 -35
- data/lib/axlsx/workbook/worksheet/color_scale.rb +108 -110
- data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
- data/lib/axlsx/workbook/worksheet/comment.rb +90 -91
- data/lib/axlsx/workbook/worksheet/comments.rb +78 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +81 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +216 -220
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +23 -25
- data/lib/axlsx/workbook/worksheet/data_bar.rb +127 -129
- data/lib/axlsx/workbook/worksheet/data_validation.rb +266 -246
- data/lib/axlsx/workbook/worksheet/data_validations.rb +25 -28
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +28 -30
- data/lib/axlsx/workbook/worksheet/dimension.rb +65 -64
- data/lib/axlsx/workbook/worksheet/header_footer.rb +51 -52
- data/lib/axlsx/workbook/worksheet/icon_set.rb +80 -81
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
- data/lib/axlsx/workbook/worksheet/outline_pr.rb +32 -33
- data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +42 -44
- data/lib/axlsx/workbook/worksheet/page_setup.rb +237 -240
- data/lib/axlsx/workbook/worksheet/pane.rb +138 -139
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +332 -296
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +63 -66
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +23 -24
- data/lib/axlsx/workbook/worksheet/print_options.rb +38 -39
- data/lib/axlsx/workbook/worksheet/protected_range.rb +46 -47
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
- data/lib/axlsx/workbook/worksheet/rich_text.rb +53 -55
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +266 -250
- data/lib/axlsx/workbook/worksheet/row.rb +173 -164
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +32 -33
- data/lib/axlsx/workbook/worksheet/selection.rb +99 -101
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +28 -29
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +25 -27
- data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +18 -18
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +117 -118
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +206 -213
- data/lib/axlsx/workbook/worksheet/table.rb +100 -102
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +48 -49
- data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
- data/lib/axlsx/workbook/worksheet/worksheet.rb +857 -786
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +59 -58
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +73 -74
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
- data/lib/axlsx.rb +218 -185
- data/lib/caxlsx.rb +1 -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
- metadata +5 -252
- data/test/benchmark.rb +0 -72
- data/test/content_type/tc_content_type.rb +0 -76
- data/test/content_type/tc_default.rb +0 -16
- data/test/content_type/tc_override.rb +0 -14
- data/test/doc_props/tc_app.rb +0 -43
- data/test/doc_props/tc_core.rb +0 -42
- data/test/drawing/tc_area_chart.rb +0 -39
- data/test/drawing/tc_area_series.rb +0 -71
- data/test/drawing/tc_axes.rb +0 -8
- data/test/drawing/tc_axis.rb +0 -112
- data/test/drawing/tc_bar_3D_chart.rb +0 -86
- data/test/drawing/tc_bar_chart.rb +0 -86
- data/test/drawing/tc_bar_series.rb +0 -46
- data/test/drawing/tc_bubble_chart.rb +0 -44
- data/test/drawing/tc_bubble_series.rb +0 -21
- data/test/drawing/tc_cat_axis.rb +0 -31
- data/test/drawing/tc_cat_axis_data.rb +0 -27
- data/test/drawing/tc_chart.rb +0 -123
- data/test/drawing/tc_d_lbls.rb +0 -57
- data/test/drawing/tc_data_source.rb +0 -23
- data/test/drawing/tc_drawing.rb +0 -80
- data/test/drawing/tc_graphic_frame.rb +0 -27
- data/test/drawing/tc_hyperlink.rb +0 -64
- data/test/drawing/tc_line_3d_chart.rb +0 -47
- data/test/drawing/tc_line_chart.rb +0 -39
- data/test/drawing/tc_line_series.rb +0 -71
- data/test/drawing/tc_marker.rb +0 -44
- data/test/drawing/tc_named_axis_data.rb +0 -27
- data/test/drawing/tc_num_data.rb +0 -31
- data/test/drawing/tc_num_val.rb +0 -29
- data/test/drawing/tc_one_cell_anchor.rb +0 -66
- data/test/drawing/tc_pic.rb +0 -103
- data/test/drawing/tc_picture_locking.rb +0 -72
- data/test/drawing/tc_pie_3D_chart.rb +0 -28
- data/test/drawing/tc_pie_series.rb +0 -33
- data/test/drawing/tc_scaling.rb +0 -36
- data/test/drawing/tc_scatter_chart.rb +0 -48
- data/test/drawing/tc_scatter_series.rb +0 -74
- data/test/drawing/tc_ser_axis.rb +0 -31
- data/test/drawing/tc_series.rb +0 -23
- data/test/drawing/tc_series_title.rb +0 -54
- data/test/drawing/tc_str_data.rb +0 -18
- data/test/drawing/tc_str_val.rb +0 -30
- data/test/drawing/tc_title.rb +0 -70
- data/test/drawing/tc_two_cell_anchor.rb +0 -36
- data/test/drawing/tc_val_axis.rb +0 -24
- data/test/drawing/tc_view_3D.rb +0 -54
- data/test/drawing/tc_vml_drawing.rb +0 -25
- data/test/drawing/tc_vml_shape.rb +0 -106
- data/test/fixtures/image1.gif +0 -0
- data/test/fixtures/image1.jpeg +0 -0
- data/test/fixtures/image1.jpg +0 -0
- data/test/fixtures/image1.png +0 -0
- data/test/fixtures/image1_fake.jpg +0 -0
- data/test/profile.rb +0 -24
- data/test/rels/tc_relationship.rb +0 -52
- data/test/rels/tc_relationships.rb +0 -37
- data/test/stylesheet/tc_border.rb +0 -37
- data/test/stylesheet/tc_border_pr.rb +0 -32
- data/test/stylesheet/tc_cell_alignment.rb +0 -81
- data/test/stylesheet/tc_cell_protection.rb +0 -29
- data/test/stylesheet/tc_cell_style.rb +0 -57
- data/test/stylesheet/tc_color.rb +0 -43
- data/test/stylesheet/tc_dxf.rb +0 -81
- data/test/stylesheet/tc_fill.rb +0 -18
- data/test/stylesheet/tc_font.rb +0 -133
- data/test/stylesheet/tc_gradient_fill.rb +0 -72
- data/test/stylesheet/tc_gradient_stop.rb +0 -31
- data/test/stylesheet/tc_num_fmt.rb +0 -30
- data/test/stylesheet/tc_pattern_fill.rb +0 -43
- data/test/stylesheet/tc_styles.rb +0 -309
- data/test/stylesheet/tc_table_style.rb +0 -44
- data/test/stylesheet/tc_table_style_element.rb +0 -45
- data/test/stylesheet/tc_table_styles.rb +0 -29
- data/test/stylesheet/tc_xf.rb +0 -120
- data/test/tc_axlsx.rb +0 -109
- data/test/tc_helper.rb +0 -10
- data/test/tc_package.rb +0 -317
- data/test/util/tc_mime_type_utils.rb +0 -13
- data/test/util/tc_serialized_attributes.rb +0 -19
- data/test/util/tc_simple_typed_list.rb +0 -77
- data/test/util/tc_validators.rb +0 -210
- data/test/workbook/tc_defined_name.rb +0 -49
- data/test/workbook/tc_shared_strings_table.rb +0 -59
- data/test/workbook/tc_workbook.rb +0 -165
- data/test/workbook/tc_workbook_view.rb +0 -50
- data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
- data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
- data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
- data/test/workbook/worksheet/tc_break.rb +0 -49
- data/test/workbook/worksheet/tc_cell.rb +0 -465
- data/test/workbook/worksheet/tc_cfvo.rb +0 -31
- data/test/workbook/worksheet/tc_col.rb +0 -93
- data/test/workbook/worksheet/tc_color_scale.rb +0 -58
- data/test/workbook/worksheet/tc_comment.rb +0 -72
- data/test/workbook/worksheet/tc_comments.rb +0 -57
- data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
- data/test/workbook/worksheet/tc_data_bar.rb +0 -46
- data/test/workbook/worksheet/tc_data_validation.rb +0 -265
- data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
- data/test/workbook/worksheet/tc_header_footer.rb +0 -151
- data/test/workbook/worksheet/tc_icon_set.rb +0 -45
- data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
- data/test/workbook/worksheet/tc_page_margins.rb +0 -97
- data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
- data/test/workbook/worksheet/tc_page_setup.rb +0 -143
- data/test/workbook/worksheet/tc_pane.rb +0 -54
- data/test/workbook/worksheet/tc_pivot_table.rb +0 -180
- data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
- data/test/workbook/worksheet/tc_print_options.rb +0 -72
- data/test/workbook/worksheet/tc_protected_range.rb +0 -17
- data/test/workbook/worksheet/tc_rich_text.rb +0 -44
- data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
- data/test/workbook/worksheet/tc_row.rb +0 -160
- data/test/workbook/worksheet/tc_selection.rb +0 -55
- data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
- data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
- data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
- data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
- data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
- data/test/workbook/worksheet/tc_table.rb +0 -77
- data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
- data/test/workbook/worksheet/tc_worksheet.rb +0 -632
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
data/test/tc_package.rb
DELETED
|
@@ -1,317 +0,0 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
|
-
require 'tc_helper.rb'
|
|
3
|
-
|
|
4
|
-
class TestPackage < Test::Unit::TestCase
|
|
5
|
-
def setup
|
|
6
|
-
@package = Axlsx::Package.new
|
|
7
|
-
ws = @package.workbook.add_worksheet
|
|
8
|
-
ws.add_row ['Can', 'we', 'build it?']
|
|
9
|
-
ws.add_row ['Yes!', 'We', 'can!']
|
|
10
|
-
@rt = Axlsx::RichText.new
|
|
11
|
-
@rt.add_run "run 1", :b => true, :i => false
|
|
12
|
-
ws.add_row [@rt]
|
|
13
|
-
|
|
14
|
-
ws.rows.last.add_cell('b', :type => :text)
|
|
15
|
-
|
|
16
|
-
ws.outline_level_rows 0, 1
|
|
17
|
-
ws.outline_level_columns 0, 1
|
|
18
|
-
ws.add_hyperlink :ref => ws.rows.first.cells.last, :location => 'https://github.com/randym'
|
|
19
|
-
ws.workbook.add_defined_name("#{ws.name}!A1:C2", :name => '_xlnm.Print_Titles', :hidden => true)
|
|
20
|
-
ws.workbook.add_view active_tab: 1, first_sheet: 0
|
|
21
|
-
ws.protect_range('A1:C1')
|
|
22
|
-
ws.protect_range(ws.rows.last.cells)
|
|
23
|
-
ws.add_comment :author => 'alice', :text => 'Hi Bob', :ref => 'A12'
|
|
24
|
-
ws.add_comment :author => 'bob', :text => 'Hi Alice', :ref => 'F19'
|
|
25
|
-
ws.sheet_view do |vs|
|
|
26
|
-
vs.pane do |p|
|
|
27
|
-
p.active_pane = :top_right
|
|
28
|
-
p.state = :split
|
|
29
|
-
p.x_split = 11080
|
|
30
|
-
p.y_split = 5000
|
|
31
|
-
p.top_left_cell = 'C44'
|
|
32
|
-
end
|
|
33
|
-
|
|
34
|
-
vs.add_selection(:top_left, { :active_cell => 'A2', :sqref => 'A2' })
|
|
35
|
-
vs.add_selection(:top_right, { :active_cell => 'I10', :sqref => 'I10' })
|
|
36
|
-
vs.add_selection(:bottom_left, { :active_cell => 'E55', :sqref => 'E55' })
|
|
37
|
-
vs.add_selection(:bottom_right, { :active_cell => 'I57', :sqref => 'I57' })
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
ws.add_chart(Axlsx::Pie3DChart, :title => "これは?", :start_at => [0,3]) do |chart|
|
|
41
|
-
chart.add_series :data=>[1,2,3], :labels=>["a", "b", "c"]
|
|
42
|
-
chart.d_lbls.show_val = true
|
|
43
|
-
chart.d_lbls.d_lbl_pos = :outEnd
|
|
44
|
-
chart.d_lbls.show_percent = true
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
ws.add_chart(Axlsx::Line3DChart, :title => "axis labels") do |chart|
|
|
48
|
-
chart.valAxis.title = 'bob'
|
|
49
|
-
chart.d_lbls.show_val = true
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
ws.add_chart(Axlsx::Bar3DChart, :title => 'bar chart') do |chart|
|
|
53
|
-
chart.add_series :data => [1,4,5], :labels => %w(A B C)
|
|
54
|
-
chart.d_lbls.show_percent = true
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
ws.add_chart(Axlsx::ScatterChart, :title => 'scat man') do |chart|
|
|
58
|
-
chart.add_series :xData => [1,2,3,4], :yData => [4,3,2,1]
|
|
59
|
-
chart.d_lbls.show_val = true
|
|
60
|
-
end
|
|
61
|
-
|
|
62
|
-
ws.add_chart(Axlsx::BubbleChart, :title => 'bubble chart') do |chart|
|
|
63
|
-
chart.add_series :xData => [1,2,3,4], :yData => [1,3,2,4]
|
|
64
|
-
chart.d_lbls.show_val = true
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
@fname = 'axlsx_test_serialization.xlsx'
|
|
68
|
-
img = File.expand_path('../fixtures/image1.jpeg', __FILE__)
|
|
69
|
-
ws.add_image(:image_src => img, :noSelect => true, :noMove => true, :hyperlink=>"http://axlsx.blogspot.com") do |image|
|
|
70
|
-
image.width=720
|
|
71
|
-
image.height=666
|
|
72
|
-
image.hyperlink.tooltip = "Labeled Link"
|
|
73
|
-
image.start_at 5, 5
|
|
74
|
-
image.end_at 10, 10
|
|
75
|
-
end
|
|
76
|
-
ws.add_image :image_src => File.expand_path('../fixtures/image1.gif', __FILE__) do |image|
|
|
77
|
-
image.start_at 0, 20
|
|
78
|
-
image.width=360
|
|
79
|
-
image.height=333
|
|
80
|
-
end
|
|
81
|
-
ws.add_image :image_src => File.expand_path('../fixtures/image1.png', __FILE__) do |image|
|
|
82
|
-
image.start_at 9, 20
|
|
83
|
-
image.width = 180
|
|
84
|
-
image.height = 167
|
|
85
|
-
end
|
|
86
|
-
ws.add_table 'A1:C1'
|
|
87
|
-
|
|
88
|
-
ws.add_pivot_table 'G5:G6', 'A1:B3'
|
|
89
|
-
|
|
90
|
-
ws.add_page_break "B2"
|
|
91
|
-
|
|
92
|
-
end
|
|
93
|
-
|
|
94
|
-
def test_use_autowidth
|
|
95
|
-
@package.use_autowidth = false
|
|
96
|
-
assert(@package.workbook.use_autowidth == false)
|
|
97
|
-
end
|
|
98
|
-
|
|
99
|
-
def test_core_accessor
|
|
100
|
-
assert_equal(@package.core, @package.instance_values["core"])
|
|
101
|
-
assert_raise(NoMethodError) {@package.core = nil }
|
|
102
|
-
end
|
|
103
|
-
|
|
104
|
-
def test_app_accessor
|
|
105
|
-
assert_equal(@package.app, @package.instance_values["app"])
|
|
106
|
-
assert_raise(NoMethodError) {@package.app = nil }
|
|
107
|
-
end
|
|
108
|
-
|
|
109
|
-
def test_use_shared_strings
|
|
110
|
-
assert_equal(@package.use_shared_strings, nil)
|
|
111
|
-
assert_raise(ArgumentError) {@package.use_shared_strings 9}
|
|
112
|
-
assert_nothing_raised {@package.use_shared_strings = true}
|
|
113
|
-
assert_equal(@package.use_shared_strings, @package.workbook.use_shared_strings)
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
def test_default_objects_are_created
|
|
117
|
-
assert(@package.instance_values["app"].is_a?(Axlsx::App), 'App object not created')
|
|
118
|
-
assert(@package.instance_values["core"].is_a?(Axlsx::Core), 'Core object not created')
|
|
119
|
-
assert(@package.workbook.is_a?(Axlsx::Workbook), 'Workbook object not created')
|
|
120
|
-
assert(Axlsx::Package.new.workbook.worksheets.size == 0, 'Workbook should not have sheets by default')
|
|
121
|
-
end
|
|
122
|
-
|
|
123
|
-
def test_created_at_is_propagated_to_core
|
|
124
|
-
time = Time.utc(2013, 1, 1, 12, 0)
|
|
125
|
-
p = Axlsx::Package.new :created_at => time
|
|
126
|
-
assert_equal(time, p.core.created)
|
|
127
|
-
end
|
|
128
|
-
|
|
129
|
-
def test_serialization
|
|
130
|
-
@package.serialize(@fname)
|
|
131
|
-
assert_zip_file_matches_package(@fname, @package)
|
|
132
|
-
assert_created_with_rubyzip(@fname, @package)
|
|
133
|
-
File.delete(@fname)
|
|
134
|
-
end
|
|
135
|
-
|
|
136
|
-
def test_serialization_with_zip_command
|
|
137
|
-
@package.serialize(@fname, zip_command: "zip")
|
|
138
|
-
assert_zip_file_matches_package(@fname, @package)
|
|
139
|
-
assert_created_with_zip_command(@fname, @package)
|
|
140
|
-
File.delete(@fname)
|
|
141
|
-
end
|
|
142
|
-
|
|
143
|
-
def test_serialization_with_zip_command_and_absolute_path
|
|
144
|
-
fname = "#{Dir.tmpdir}/#{@fname}"
|
|
145
|
-
@package.serialize(fname, zip_command: "zip")
|
|
146
|
-
assert_zip_file_matches_package(fname, @package)
|
|
147
|
-
assert_created_with_zip_command(fname, @package)
|
|
148
|
-
File.delete(fname)
|
|
149
|
-
end
|
|
150
|
-
|
|
151
|
-
def test_serialization_with_invalid_zip_command
|
|
152
|
-
assert_raises Axlsx::ZipCommand::ZipError do
|
|
153
|
-
@package.serialize(@fname, zip_command: "invalid_zip")
|
|
154
|
-
end
|
|
155
|
-
end
|
|
156
|
-
|
|
157
|
-
def assert_zip_file_matches_package(fname, package)
|
|
158
|
-
zf = Zip::File.open(fname)
|
|
159
|
-
package.send(:parts).each{ |part| zf.get_entry(part[:entry]) }
|
|
160
|
-
end
|
|
161
|
-
|
|
162
|
-
def assert_created_with_rubyzip(fname, package)
|
|
163
|
-
assert_equal 2098, get_mtime(fname, package).year, "XLSX files created with RubyZip have 2098 as the file mtime"
|
|
164
|
-
end
|
|
165
|
-
|
|
166
|
-
def assert_created_with_zip_command(fname, package)
|
|
167
|
-
assert_equal Time.now.utc.year, get_mtime(fname, package).year, "XLSX files created with a zip command have the current year as the file mtime"
|
|
168
|
-
end
|
|
169
|
-
|
|
170
|
-
def get_mtime(fname, package)
|
|
171
|
-
zf = Zip::File.open(fname)
|
|
172
|
-
part = package.send(:parts).first
|
|
173
|
-
entry = zf.get_entry(part[:entry])
|
|
174
|
-
entry.mtime.utc
|
|
175
|
-
end
|
|
176
|
-
|
|
177
|
-
def test_serialization_with_deprecated_argument
|
|
178
|
-
warnings = capture_warnings do
|
|
179
|
-
@package.serialize(@fname, false)
|
|
180
|
-
end
|
|
181
|
-
assert_equal 1, warnings.size
|
|
182
|
-
assert_includes warnings.first, "confirm_valid as a boolean is deprecated"
|
|
183
|
-
File.delete(@fname)
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
def test_serialization_with_deprecated_three_arguments
|
|
187
|
-
warnings = capture_warnings do
|
|
188
|
-
@package.serialize(@fname, true, zip_command: "zip")
|
|
189
|
-
end
|
|
190
|
-
assert_zip_file_matches_package(@fname, @package)
|
|
191
|
-
assert_created_with_zip_command(@fname, @package)
|
|
192
|
-
assert_equal 2, warnings.size
|
|
193
|
-
assert_includes warnings.first, "with 3 arguments is deprecated"
|
|
194
|
-
File.delete(@fname)
|
|
195
|
-
end
|
|
196
|
-
|
|
197
|
-
def capture_warnings(&block)
|
|
198
|
-
original_warn = Kernel.instance_method(:warn)
|
|
199
|
-
warnings = []
|
|
200
|
-
Kernel.send(:define_method, :warn) { |string| warnings << string }
|
|
201
|
-
block.call
|
|
202
|
-
original_verbose = $VERBOSE
|
|
203
|
-
$VERBOSE = nil
|
|
204
|
-
Kernel.send(:define_method, :warn, original_warn)
|
|
205
|
-
$VERBOSE = original_verbose
|
|
206
|
-
warnings
|
|
207
|
-
end
|
|
208
|
-
|
|
209
|
-
# See comment for Package#zip_entry_for_part
|
|
210
|
-
def test_serialization_creates_identical_files_at_any_time_if_created_at_is_set
|
|
211
|
-
@package.core.created = Time.now
|
|
212
|
-
zip_content_now = @package.to_stream.string
|
|
213
|
-
Timecop.travel(3600) do
|
|
214
|
-
zip_content_then = @package.to_stream.string
|
|
215
|
-
assert zip_content_then == zip_content_now, "zip files are not identical"
|
|
216
|
-
end
|
|
217
|
-
end
|
|
218
|
-
|
|
219
|
-
def test_serialization_creates_identical_files_for_identical_packages
|
|
220
|
-
package_1, package_2 = 2.times.map do
|
|
221
|
-
Axlsx::Package.new(:created_at => Time.utc(2013, 1, 1)).tap do |p|
|
|
222
|
-
p.workbook.add_worksheet(:name => "Basic Worksheet") do |sheet|
|
|
223
|
-
sheet.add_row [1, 2, 3]
|
|
224
|
-
end
|
|
225
|
-
end
|
|
226
|
-
end
|
|
227
|
-
assert package_1.to_stream.string == package_2.to_stream.string, "zip files are not identical"
|
|
228
|
-
end
|
|
229
|
-
|
|
230
|
-
def test_serialization_creates_files_with_excel_mime_type
|
|
231
|
-
assert_equal(Marcel::MimeType.for(@package.to_stream),
|
|
232
|
-
'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
|
|
233
|
-
end
|
|
234
|
-
|
|
235
|
-
def test_validation
|
|
236
|
-
assert_equal(@package.validate.size, 0, @package.validate)
|
|
237
|
-
Axlsx::Workbook.send(:class_variable_set, :@@date1904, 9900)
|
|
238
|
-
assert(@package.validate.size > 0)
|
|
239
|
-
end
|
|
240
|
-
|
|
241
|
-
def test_parts
|
|
242
|
-
p = @package.send(:parts)
|
|
243
|
-
#all parts have an entry
|
|
244
|
-
assert_equal(p.select{ |part| part[:entry] =~ /_rels\/\.rels/ }.size, 1, "rels missing")
|
|
245
|
-
assert_equal(p.select{ |part| part[:entry] =~ /docProps\/core\.xml/ }.size, 1, "core missing")
|
|
246
|
-
assert_equal(p.select{ |part| part[:entry] =~ /docProps\/app\.xml/ }.size, 1, "app missing")
|
|
247
|
-
assert_equal(p.select{ |part| part[:entry] =~ /xl\/_rels\/workbook\.xml\.rels/ }.size, 1, "workbook rels missing")
|
|
248
|
-
assert_equal(p.select{ |part| part[:entry] =~ /xl\/workbook\.xml/ }.size, 1, "workbook missing")
|
|
249
|
-
assert_equal(p.select{ |part| part[:entry] =~ /\[Content_Types\]\.xml/ }.size, 1, "content types missing")
|
|
250
|
-
assert_equal(p.select{ |part| part[:entry] =~ /xl\/styles\.xml/ }.size, 1, "styles missin")
|
|
251
|
-
assert_equal(p.select{ |part| part[:entry] =~ /xl\/drawings\/_rels\/drawing\d\.xml\.rels/ }.size, @package.workbook.drawings.size, "one or more drawing rels missing")
|
|
252
|
-
assert_equal(p.select{ |part| part[:entry] =~ /xl\/drawings\/drawing\d\.xml/ }.size, @package.workbook.drawings.size, "one or more drawings missing")
|
|
253
|
-
assert_equal(p.select{ |part| part[:entry] =~ /xl\/charts\/chart\d\.xml/ }.size, @package.workbook.charts.size, "one or more charts missing")
|
|
254
|
-
assert_equal(p.select{ |part| part[:entry] =~ /xl\/worksheets\/sheet\d\.xml/ }.size, @package.workbook.worksheets.size, "one or more sheet missing")
|
|
255
|
-
assert_equal(p.select{ |part| part[:entry] =~ /xl\/worksheets\/_rels\/sheet\d\.xml\.rels/ }.size, @package.workbook.worksheets.size, "one or more sheet rels missing")
|
|
256
|
-
assert_equal(p.select{ |part| part[:entry] =~ /xl\/comments\d\.xml/ }.size, @package.workbook.worksheets.size, "one or more sheet rels missing")
|
|
257
|
-
assert_equal(p.select{ |part| part[:entry] =~ /xl\/pivotTables\/pivotTable\d\.xml/ }.size, @package.workbook.worksheets.first.pivot_tables.size, "one or more pivot tables missing")
|
|
258
|
-
assert_equal(p.select{ |part| part[:entry] =~ /xl\/pivotTables\/_rels\/pivotTable\d\.xml.rels/ }.size, @package.workbook.worksheets.first.pivot_tables.size, "one or more pivot tables rels missing")
|
|
259
|
-
assert_equal(p.select{ |part| part[:entry] =~ /xl\/pivotCache\/pivotCacheDefinition\d\.xml/ }.size, @package.workbook.worksheets.first.pivot_tables.size, "one or more pivot tables missing")
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
#no mystery parts
|
|
263
|
-
assert_equal(25, p.size)
|
|
264
|
-
|
|
265
|
-
end
|
|
266
|
-
|
|
267
|
-
def test_shared_strings_requires_part
|
|
268
|
-
@package.use_shared_strings = true
|
|
269
|
-
@package.to_stream #ensure all cell_serializer paths are hit
|
|
270
|
-
p = @package.send(:parts)
|
|
271
|
-
assert_equal(p.select{ |part| part[:entry] =~/xl\/sharedStrings.xml/}.size, 1, "shared strings table missing")
|
|
272
|
-
end
|
|
273
|
-
|
|
274
|
-
def test_workbook_is_a_workbook
|
|
275
|
-
assert @package.workbook.is_a? Axlsx::Workbook
|
|
276
|
-
end
|
|
277
|
-
|
|
278
|
-
def test_base_content_types
|
|
279
|
-
ct = @package.send(:base_content_types)
|
|
280
|
-
assert(ct.select { |c| c.ContentType == Axlsx::RELS_CT }.size == 1, "rels content type missing")
|
|
281
|
-
assert(ct.select { |c| c.ContentType == Axlsx::XML_CT }.size == 1, "xml content type missing")
|
|
282
|
-
assert(ct.select { |c| c.ContentType == Axlsx::APP_CT }.size == 1, "app content type missing")
|
|
283
|
-
assert(ct.select { |c| c.ContentType == Axlsx::CORE_CT }.size == 1, "core content type missing")
|
|
284
|
-
assert(ct.select { |c| c.ContentType == Axlsx::STYLES_CT }.size == 1, "styles content type missing")
|
|
285
|
-
assert(ct.select { |c| c.ContentType == Axlsx::WORKBOOK_CT }.size == 1, "workbook content type missing")
|
|
286
|
-
assert(ct.size == 6)
|
|
287
|
-
end
|
|
288
|
-
|
|
289
|
-
def test_content_type_added_with_shared_strings
|
|
290
|
-
@package.use_shared_strings = true
|
|
291
|
-
ct = @package.send(:content_types)
|
|
292
|
-
assert(ct.select { |type| type.ContentType == Axlsx::SHARED_STRINGS_CT }.size == 1)
|
|
293
|
-
end
|
|
294
|
-
|
|
295
|
-
def test_name_to_indices
|
|
296
|
-
assert(Axlsx::name_to_indices('A1') == [0,0])
|
|
297
|
-
assert(Axlsx::name_to_indices('A100') == [0,99], 'needs to axcept rows that contain 0')
|
|
298
|
-
end
|
|
299
|
-
|
|
300
|
-
def test_to_stream
|
|
301
|
-
stream = @package.to_stream
|
|
302
|
-
assert(stream.is_a?(StringIO))
|
|
303
|
-
# this is just a roundabout guess for a package as it is build now
|
|
304
|
-
# in testing.
|
|
305
|
-
assert(stream.size > 80000)
|
|
306
|
-
# Stream (of zipped contents) should have appropriate default encoding
|
|
307
|
-
assert stream.string.valid_encoding?
|
|
308
|
-
assert_equal(stream.external_encoding, Encoding::ASCII_8BIT)
|
|
309
|
-
# Cached ids should be cleared
|
|
310
|
-
assert(Axlsx::Relationship.ids_cache.empty?)
|
|
311
|
-
end
|
|
312
|
-
|
|
313
|
-
def test_encrypt
|
|
314
|
-
# this is no where near close to ready yet
|
|
315
|
-
assert(@package.encrypt('your_mom.xlsxl', 'has a password') == false)
|
|
316
|
-
end
|
|
317
|
-
end
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
require 'tc_helper.rb'
|
|
2
|
-
class TestMimeTypeUtils < Test::Unit::TestCase
|
|
3
|
-
def setup
|
|
4
|
-
@test_img = File.dirname(__FILE__) + "/../fixtures/image1.jpeg"
|
|
5
|
-
end
|
|
6
|
-
|
|
7
|
-
def teardown
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def test_mime_type_utils
|
|
11
|
-
assert_equal(Axlsx::MimeTypeUtils::get_mime_type(@test_img), 'image/jpeg')
|
|
12
|
-
end
|
|
13
|
-
end
|
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
require 'tc_helper.rb'
|
|
2
|
-
class Funk
|
|
3
|
-
include Axlsx::Accessors
|
|
4
|
-
include Axlsx::SerializedAttributes
|
|
5
|
-
serializable_attributes :camel_symbol, :boolean, :integer
|
|
6
|
-
|
|
7
|
-
attr_accessor :camel_symbol, :boolean, :integer
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
class TestSeralizedAttributes < Test::Unit::TestCase
|
|
11
|
-
def setup
|
|
12
|
-
@object = Funk.new
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def test_camel_symbol
|
|
16
|
-
@object.camel_symbol = :foo_bar
|
|
17
|
-
assert_equal('camelSymbol="fooBar" ', @object.serialized_attributes)
|
|
18
|
-
end
|
|
19
|
-
end
|
|
@@ -1,77 +0,0 @@
|
|
|
1
|
-
require 'tc_helper.rb'
|
|
2
|
-
class TestSimpleTypedList < Test::Unit::TestCase
|
|
3
|
-
def setup
|
|
4
|
-
@list = Axlsx::SimpleTypedList.new Integer
|
|
5
|
-
end
|
|
6
|
-
|
|
7
|
-
def teardown
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def test_type_is_a_class_or_array_of_class
|
|
11
|
-
assert_nothing_raised { Axlsx::SimpleTypedList.new Integer }
|
|
12
|
-
assert_nothing_raised { Axlsx::SimpleTypedList.new [Integer,String] }
|
|
13
|
-
assert_raise(ArgumentError) { Axlsx::SimpleTypedList.new }
|
|
14
|
-
assert_raise(ArgumentError) { Axlsx::SimpleTypedList.new "1" }
|
|
15
|
-
assert_raise(ArgumentError) { Axlsx::SimpleTypedList.new [Integer, "Class"] }
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def test_indexed_based_assignment
|
|
19
|
-
#should not allow nil assignment
|
|
20
|
-
assert_raise(ArgumentError) { @list[0] = nil }
|
|
21
|
-
assert_raise(ArgumentError) { @list[0] = "1" }
|
|
22
|
-
assert_nothing_raised { @list[0] = 1 }
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def test_concat_assignment
|
|
26
|
-
assert_raise(ArgumentError) { @list << nil }
|
|
27
|
-
assert_raise(ArgumentError) { @list << "1" }
|
|
28
|
-
assert_nothing_raised { @list << 1 }
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def test_concat_should_return_index
|
|
32
|
-
assert( @list.size == 0 )
|
|
33
|
-
assert( @list << 1 == 0 )
|
|
34
|
-
assert( @list << 2 == 1 )
|
|
35
|
-
@list.delete_at 0
|
|
36
|
-
assert( @list << 3 == 1 )
|
|
37
|
-
assert( @list.index(2) == 0 )
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def test_push_should_return_index
|
|
41
|
-
assert( @list.push(1) == 0 )
|
|
42
|
-
assert( @list.push(2) == 1 )
|
|
43
|
-
@list.delete_at 0
|
|
44
|
-
assert( @list.push(3) == 1 )
|
|
45
|
-
assert( @list.index(2) == 0 )
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def test_locking
|
|
49
|
-
@list.push 1
|
|
50
|
-
@list.push 2
|
|
51
|
-
@list.push 3
|
|
52
|
-
@list.lock
|
|
53
|
-
|
|
54
|
-
assert_raise(ArgumentError) { @list.delete 1 }
|
|
55
|
-
assert_raise(ArgumentError) { @list.delete_at 1 }
|
|
56
|
-
assert_raise(ArgumentError) { @list.delete_at 2 }
|
|
57
|
-
@list.push 4
|
|
58
|
-
assert_nothing_raised { @list.delete_at 3 }
|
|
59
|
-
@list.unlock
|
|
60
|
-
#ignore garbage
|
|
61
|
-
assert_nothing_raised { @list.delete 0 }
|
|
62
|
-
assert_nothing_raised { @list.delete 9 }
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def test_delete
|
|
66
|
-
@list.push 1
|
|
67
|
-
assert(@list.size == 1)
|
|
68
|
-
@list.delete 1
|
|
69
|
-
assert(@list.empty?)
|
|
70
|
-
end
|
|
71
|
-
|
|
72
|
-
def test_equality
|
|
73
|
-
@list.push 1
|
|
74
|
-
@list.push 2
|
|
75
|
-
assert_equal(@list.to_ary, [1,2])
|
|
76
|
-
end
|
|
77
|
-
end
|
data/test/util/tc_validators.rb
DELETED
|
@@ -1,210 +0,0 @@
|
|
|
1
|
-
require 'tc_helper.rb'
|
|
2
|
-
class TestValidators < Test::Unit::TestCase
|
|
3
|
-
def setup
|
|
4
|
-
end
|
|
5
|
-
def teardown
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def test_validators
|
|
9
|
-
#unsigned_int
|
|
10
|
-
assert_nothing_raised { Axlsx.validate_unsigned_int 1 }
|
|
11
|
-
assert_nothing_raised { Axlsx.validate_unsigned_int(+1) }
|
|
12
|
-
assert_raise(ArgumentError) { Axlsx.validate_unsigned_int(-1)}
|
|
13
|
-
assert_raise(ArgumentError) { Axlsx.validate_unsigned_int('1') }
|
|
14
|
-
|
|
15
|
-
#int
|
|
16
|
-
assert_nothing_raised { Axlsx.validate_int(1) }
|
|
17
|
-
assert_nothing_raised { Axlsx.validate_int(-1) }
|
|
18
|
-
assert_raise(ArgumentError) { Axlsx.validate_int('a')}
|
|
19
|
-
assert_raise(ArgumentError) { Axlsx.validate_int(Array) }
|
|
20
|
-
|
|
21
|
-
#boolean (as 0 or 1, :true, :false, true, false, or "true," "false")
|
|
22
|
-
[0,1,:true, :false, true, false, "true", "false"].each do |v|
|
|
23
|
-
assert_nothing_raised { Axlsx.validate_boolean 0 }
|
|
24
|
-
end
|
|
25
|
-
assert_raise(ArgumentError) { Axlsx.validate_boolean 2 }
|
|
26
|
-
|
|
27
|
-
#string
|
|
28
|
-
assert_nothing_raised { Axlsx.validate_string "1" }
|
|
29
|
-
assert_raise(ArgumentError) { Axlsx.validate_string 2 }
|
|
30
|
-
assert_raise(ArgumentError) { Axlsx.validate_string false }
|
|
31
|
-
|
|
32
|
-
#float
|
|
33
|
-
assert_nothing_raised { Axlsx.validate_float 1.0 }
|
|
34
|
-
assert_raise(ArgumentError) { Axlsx.validate_float 2 }
|
|
35
|
-
assert_raise(ArgumentError) { Axlsx.validate_float false }
|
|
36
|
-
|
|
37
|
-
#pattern_type
|
|
38
|
-
assert_nothing_raised { Axlsx.validate_pattern_type :none }
|
|
39
|
-
assert_raise(ArgumentError) { Axlsx.validate_pattern_type "none" }
|
|
40
|
-
assert_raise(ArgumentError) { Axlsx.validate_pattern_type "crazy_pattern" }
|
|
41
|
-
assert_raise(ArgumentError) { Axlsx.validate_pattern_type false }
|
|
42
|
-
|
|
43
|
-
#gradient_type
|
|
44
|
-
assert_nothing_raised { Axlsx.validate_gradient_type :path }
|
|
45
|
-
assert_raise(ArgumentError) { Axlsx.validate_gradient_type nil }
|
|
46
|
-
assert_raise(ArgumentError) { Axlsx.validate_gradient_type "fractal" }
|
|
47
|
-
assert_raise(ArgumentError) { Axlsx.validate_gradient_type false }
|
|
48
|
-
|
|
49
|
-
#horizontal alignment
|
|
50
|
-
assert_nothing_raised { Axlsx.validate_horizontal_alignment :general }
|
|
51
|
-
assert_raise(ArgumentError) { Axlsx.validate_horizontal_alignment nil }
|
|
52
|
-
assert_raise(ArgumentError) { Axlsx.validate_horizontal_alignment "wavy" }
|
|
53
|
-
assert_raise(ArgumentError) { Axlsx.validate_horizontal_alignment false }
|
|
54
|
-
|
|
55
|
-
#vertical alignment
|
|
56
|
-
assert_nothing_raised { Axlsx.validate_vertical_alignment :top }
|
|
57
|
-
assert_raise(ArgumentError) { Axlsx.validate_vertical_alignment nil }
|
|
58
|
-
assert_raise(ArgumentError) { Axlsx.validate_vertical_alignment "dynamic" }
|
|
59
|
-
assert_raise(ArgumentError) { Axlsx.validate_vertical_alignment false }
|
|
60
|
-
|
|
61
|
-
#contentType
|
|
62
|
-
assert_nothing_raised { Axlsx.validate_content_type Axlsx::WORKBOOK_CT }
|
|
63
|
-
assert_raise(ArgumentError) { Axlsx.validate_content_type nil }
|
|
64
|
-
assert_raise(ArgumentError) { Axlsx.validate_content_type "http://some.url" }
|
|
65
|
-
assert_raise(ArgumentError) { Axlsx.validate_content_type false }
|
|
66
|
-
|
|
67
|
-
#relationshipType
|
|
68
|
-
assert_nothing_raised { Axlsx.validate_relationship_type Axlsx::WORKBOOK_R }
|
|
69
|
-
assert_raise(ArgumentError) { Axlsx.validate_relationship_type nil }
|
|
70
|
-
assert_raise(ArgumentError) { Axlsx.validate_relationship_type "http://some.url" }
|
|
71
|
-
assert_raise(ArgumentError) { Axlsx.validate_relationship_type false }
|
|
72
|
-
|
|
73
|
-
#number_with_unit
|
|
74
|
-
assert_nothing_raised { Axlsx.validate_number_with_unit "210mm" }
|
|
75
|
-
assert_nothing_raised { Axlsx.validate_number_with_unit "8.5in" }
|
|
76
|
-
assert_nothing_raised { Axlsx.validate_number_with_unit "29.7cm" }
|
|
77
|
-
assert_nothing_raised { Axlsx.validate_number_with_unit "120pt" }
|
|
78
|
-
assert_nothing_raised { Axlsx.validate_number_with_unit "0pc" }
|
|
79
|
-
assert_nothing_raised { Axlsx.validate_number_with_unit "12.34pi" }
|
|
80
|
-
assert_raise(ArgumentError) { Axlsx.validate_number_with_unit nil }
|
|
81
|
-
assert_raise(ArgumentError) { Axlsx.validate_number_with_unit "210" }
|
|
82
|
-
assert_raise(ArgumentError) { Axlsx.validate_number_with_unit 210 }
|
|
83
|
-
assert_raise(ArgumentError) { Axlsx.validate_number_with_unit "mm" }
|
|
84
|
-
assert_raise(ArgumentError) { Axlsx.validate_number_with_unit "-29cm" }
|
|
85
|
-
|
|
86
|
-
#scale_10_400
|
|
87
|
-
assert_nothing_raised { Axlsx.validate_scale_10_400 10 }
|
|
88
|
-
assert_nothing_raised { Axlsx.validate_scale_10_400 100 }
|
|
89
|
-
assert_nothing_raised { Axlsx.validate_scale_10_400 400 }
|
|
90
|
-
assert_raise(ArgumentError) { Axlsx.validate_scale_10_400 9 }
|
|
91
|
-
assert_raise(ArgumentError) { Axlsx.validate_scale_10_400 10.0 }
|
|
92
|
-
assert_raise(ArgumentError) { Axlsx.validate_scale_10_400 400.1 }
|
|
93
|
-
assert_raise(ArgumentError) { Axlsx.validate_scale_10_400 "99" }
|
|
94
|
-
|
|
95
|
-
#scale_0_10_400
|
|
96
|
-
assert_nothing_raised { Axlsx.validate_scale_0_10_400 0 }
|
|
97
|
-
assert_nothing_raised { Axlsx.validate_scale_0_10_400 10 }
|
|
98
|
-
assert_nothing_raised { Axlsx.validate_scale_0_10_400 100 }
|
|
99
|
-
assert_nothing_raised { Axlsx.validate_scale_0_10_400 400 }
|
|
100
|
-
assert_raise(ArgumentError) { Axlsx.validate_scale_0_10_400 9 }
|
|
101
|
-
assert_raise(ArgumentError) { Axlsx.validate_scale_0_10_400 10.0 }
|
|
102
|
-
assert_raise(ArgumentError) { Axlsx.validate_scale_0_10_400 400.1 }
|
|
103
|
-
assert_raise(ArgumentError) { Axlsx.validate_scale_0_10_400 "99" }
|
|
104
|
-
|
|
105
|
-
#page_orientation
|
|
106
|
-
assert_nothing_raised { Axlsx.validate_page_orientation :default }
|
|
107
|
-
assert_nothing_raised { Axlsx.validate_page_orientation :landscape }
|
|
108
|
-
assert_nothing_raised { Axlsx.validate_page_orientation :portrait }
|
|
109
|
-
assert_raise(ArgumentError) { Axlsx.validate_page_orientation nil }
|
|
110
|
-
assert_raise(ArgumentError) { Axlsx.validate_page_orientation 1 }
|
|
111
|
-
assert_raise(ArgumentError) { Axlsx.validate_page_orientation "landscape" }
|
|
112
|
-
|
|
113
|
-
#data_validation_error_style
|
|
114
|
-
[:information, :stop, :warning].each do |sym|
|
|
115
|
-
assert_nothing_raised { Axlsx.validate_data_validation_error_style sym }
|
|
116
|
-
end
|
|
117
|
-
assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style :other_symbol }
|
|
118
|
-
assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 'warning' }
|
|
119
|
-
assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 0 }
|
|
120
|
-
|
|
121
|
-
#data_validation_operator
|
|
122
|
-
[:lessThan, :lessThanOrEqual, :equal, :notEqual, :greaterThanOrEqual, :greaterThan, :between, :notBetween].each do |sym|
|
|
123
|
-
assert_nothing_raised { Axlsx.validate_data_validation_operator sym }
|
|
124
|
-
end
|
|
125
|
-
assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style :other_symbol }
|
|
126
|
-
assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 'lessThan' }
|
|
127
|
-
assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 0 }
|
|
128
|
-
|
|
129
|
-
#data_validation_type
|
|
130
|
-
[:custom, :data, :decimal, :list, :none, :textLength, :date, :time, :whole].each do |sym|
|
|
131
|
-
assert_nothing_raised { Axlsx.validate_data_validation_type sym }
|
|
132
|
-
end
|
|
133
|
-
assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style :other_symbol }
|
|
134
|
-
assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 'decimal' }
|
|
135
|
-
assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 0 }
|
|
136
|
-
|
|
137
|
-
#sheet_view_type
|
|
138
|
-
[:normal, :page_break_preview, :page_layout].each do |sym|
|
|
139
|
-
assert_nothing_raised { Axlsx.validate_sheet_view_type sym }
|
|
140
|
-
end
|
|
141
|
-
assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style :other_symbol }
|
|
142
|
-
assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 'page_layout' }
|
|
143
|
-
assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 0 }
|
|
144
|
-
|
|
145
|
-
#active_pane_type
|
|
146
|
-
[:bottom_left, :bottom_right, :top_left, :top_right].each do |sym|
|
|
147
|
-
assert_nothing_raised { Axlsx.validate_pane_type sym }
|
|
148
|
-
end
|
|
149
|
-
assert_raise(ArgumentError) { Axlsx.validate_pane_type :other_symbol }
|
|
150
|
-
assert_raise(ArgumentError) { Axlsx.validate_pane_type 'bottom_left' }
|
|
151
|
-
assert_raise(ArgumentError) { Axlsx.validate_pane_type 0 }
|
|
152
|
-
|
|
153
|
-
#split_state_type
|
|
154
|
-
[:frozen, :frozen_split, :split].each do |sym|
|
|
155
|
-
assert_nothing_raised { Axlsx.validate_split_state_type sym }
|
|
156
|
-
end
|
|
157
|
-
assert_raise(ArgumentError) { Axlsx.validate_split_state_type :other_symbol }
|
|
158
|
-
assert_raise(ArgumentError) { Axlsx.validate_split_state_type 'frozen_split' }
|
|
159
|
-
assert_raise(ArgumentError) { Axlsx.validate_split_state_type 0 }
|
|
160
|
-
|
|
161
|
-
#display_blanks_as
|
|
162
|
-
[:gap, :span, :zero].each do |sym|
|
|
163
|
-
assert_nothing_raised { Axlsx.validate_display_blanks_as sym }
|
|
164
|
-
end
|
|
165
|
-
assert_raise(ArgumentError) { Axlsx.validate_display_blanks_as :other_symbol }
|
|
166
|
-
assert_raise(ArgumentError) { Axlsx.validate_display_blanks_as 'other_blank' }
|
|
167
|
-
assert_raise(ArgumentError) { Axlsx.validate_display_blanks_as 0 }
|
|
168
|
-
|
|
169
|
-
#view_visibility
|
|
170
|
-
[:visible, :hidden, :very_hidden].each do |sym|
|
|
171
|
-
assert_nothing_raised { Axlsx.validate_view_visibility sym }
|
|
172
|
-
end
|
|
173
|
-
assert_raise(ArgumentError) { Axlsx.validate_view_visibility :other_symbol }
|
|
174
|
-
assert_raise(ArgumentError) { Axlsx.validate_view_visibility 'other_visibility' }
|
|
175
|
-
assert_raise(ArgumentError) { Axlsx.validate_view_visibility 0 }
|
|
176
|
-
|
|
177
|
-
#marker_symbol
|
|
178
|
-
[:default, :circle, :dash, :diamond, :dot, :picture, :plus, :square, :star, :triangle, :x].each do |sym|
|
|
179
|
-
assert_nothing_raised { Axlsx.validate_marker_symbol sym }
|
|
180
|
-
end
|
|
181
|
-
assert_raise(ArgumentError) { Axlsx.validate_marker_symbol :other_symbol }
|
|
182
|
-
assert_raise(ArgumentError) { Axlsx.validate_marker_symbol 'other_marker' }
|
|
183
|
-
assert_raise(ArgumentError) { Axlsx.validate_marker_symbol 0 }
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
def test_validate_integerish
|
|
187
|
-
assert_raise(ArgumentError) { Axlsx.validate_integerish Axlsx }
|
|
188
|
-
[1, 1.4, "a"].each { |test_value| assert_nothing_raised { Axlsx.validate_integerish test_value } }
|
|
189
|
-
end
|
|
190
|
-
def test_validate_family
|
|
191
|
-
assert_raise(ArgumentError) { Axlsx.validate_family 0 }
|
|
192
|
-
(1..5).each do |item|
|
|
193
|
-
assert_nothing_raised { Axlsx.validate_family item }
|
|
194
|
-
end
|
|
195
|
-
end
|
|
196
|
-
|
|
197
|
-
def test_validate_u
|
|
198
|
-
assert_raise(ArgumentError) { Axlsx.validate_cell_u :hoge }
|
|
199
|
-
[:none, :single, :double, :singleAccounting, :doubleAccounting].each do |sym|
|
|
200
|
-
assert_nothing_raised { Axlsx.validate_cell_u sym }
|
|
201
|
-
end
|
|
202
|
-
end
|
|
203
|
-
|
|
204
|
-
def test_range_validation
|
|
205
|
-
# exclusive
|
|
206
|
-
assert_raise(ArgumentError) { Axlsx::RangeValidator.validate('foo', 1, 10, 10, false) }
|
|
207
|
-
# inclusive by default
|
|
208
|
-
assert_nothing_raised { Axlsx::RangeValidator.validate('foo', 1, 10, 10) }
|
|
209
|
-
end
|
|
210
|
-
end
|
|
@@ -1,49 +0,0 @@
|
|
|
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
|