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
data/test/doc_props/tc_app.rb
CHANGED
|
@@ -1,43 +1,43 @@
|
|
|
1
|
-
require 'tc_helper.rb'
|
|
2
|
-
|
|
3
|
-
class TestApp < Test::Unit::TestCase
|
|
4
|
-
def setup
|
|
5
|
-
options = {
|
|
6
|
-
:'Template' => 'Foo.xlt',
|
|
7
|
-
:'Manager' => 'Penny',
|
|
8
|
-
:'Company' => "Bob's Repair",
|
|
9
|
-
:'Pages' => 1,
|
|
10
|
-
:'Words' => 2,
|
|
11
|
-
:'Characters' => 7,
|
|
12
|
-
:'PresentationFormat' => 'any',
|
|
13
|
-
:'Lines' => 1,
|
|
14
|
-
:'Paragraphs' => 1,
|
|
15
|
-
:'Slides' => 4,
|
|
16
|
-
:'Notes' => 1,
|
|
17
|
-
:'TotalTime' => 2,
|
|
18
|
-
:'HidddenSlides' => 3,
|
|
19
|
-
:'MMClips' => 10,
|
|
20
|
-
:'ScaleCrop' => true,
|
|
21
|
-
:'LinksUpToDate' => true,
|
|
22
|
-
:'CharactersWithSpaces' => 9,
|
|
23
|
-
:'SharedDoc' => false,
|
|
24
|
-
:'HyperlinkBase' => 'foo',
|
|
25
|
-
:'HyperlInksChanged' => false,
|
|
26
|
-
:'Application' => 'axlsx',
|
|
27
|
-
:'AppVersion' => '1.1.5',
|
|
28
|
-
:'DocSecurity' => 0
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
@app = Axlsx::App.new options
|
|
32
|
-
|
|
33
|
-
end
|
|
34
|
-
def test_valid_document
|
|
35
|
-
schema = Nokogiri::XML::Schema(File.open(Axlsx::APP_XSD))
|
|
36
|
-
doc = Nokogiri::XML(@app.to_xml_string)
|
|
37
|
-
errors = []
|
|
38
|
-
schema.validate(doc).each do |error|
|
|
39
|
-
errors << error
|
|
40
|
-
end
|
|
41
|
-
assert_equal(errors.size, 0, "app.xml invalid" + errors.map{ |e| e.message }.to_s)
|
|
42
|
-
end
|
|
43
|
-
end
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestApp < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
options = {
|
|
6
|
+
:'Template' => 'Foo.xlt',
|
|
7
|
+
:'Manager' => 'Penny',
|
|
8
|
+
:'Company' => "Bob's Repair",
|
|
9
|
+
:'Pages' => 1,
|
|
10
|
+
:'Words' => 2,
|
|
11
|
+
:'Characters' => 7,
|
|
12
|
+
:'PresentationFormat' => 'any',
|
|
13
|
+
:'Lines' => 1,
|
|
14
|
+
:'Paragraphs' => 1,
|
|
15
|
+
:'Slides' => 4,
|
|
16
|
+
:'Notes' => 1,
|
|
17
|
+
:'TotalTime' => 2,
|
|
18
|
+
:'HidddenSlides' => 3,
|
|
19
|
+
:'MMClips' => 10,
|
|
20
|
+
:'ScaleCrop' => true,
|
|
21
|
+
:'LinksUpToDate' => true,
|
|
22
|
+
:'CharactersWithSpaces' => 9,
|
|
23
|
+
:'SharedDoc' => false,
|
|
24
|
+
:'HyperlinkBase' => 'foo',
|
|
25
|
+
:'HyperlInksChanged' => false,
|
|
26
|
+
:'Application' => 'axlsx',
|
|
27
|
+
:'AppVersion' => '1.1.5',
|
|
28
|
+
:'DocSecurity' => 0
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
@app = Axlsx::App.new options
|
|
32
|
+
|
|
33
|
+
end
|
|
34
|
+
def test_valid_document
|
|
35
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::APP_XSD))
|
|
36
|
+
doc = Nokogiri::XML(@app.to_xml_string)
|
|
37
|
+
errors = []
|
|
38
|
+
schema.validate(doc).each do |error|
|
|
39
|
+
errors << error
|
|
40
|
+
end
|
|
41
|
+
assert_equal(errors.size, 0, "app.xml invalid" + errors.map{ |e| e.message }.to_s)
|
|
42
|
+
end
|
|
43
|
+
end
|
data/test/doc_props/tc_core.rb
CHANGED
|
@@ -1,42 +1,42 @@
|
|
|
1
|
-
require 'tc_helper.rb'
|
|
2
|
-
|
|
3
|
-
class TestCore < Test::Unit::TestCase
|
|
4
|
-
|
|
5
|
-
def setup
|
|
6
|
-
@core = Axlsx::Core.new
|
|
7
|
-
# could still see some false positives if the second changes between the next two calls
|
|
8
|
-
@time = Time.now.strftime('%Y-%m-%dT%H:%M:%SZ')
|
|
9
|
-
@doc = Nokogiri::XML(@core.to_xml_string)
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def test_valid_document
|
|
13
|
-
schema = Nokogiri::XML::Schema(File.open(Axlsx::CORE_XSD))
|
|
14
|
-
errors = []
|
|
15
|
-
schema.validate(@doc).each do |error|
|
|
16
|
-
puts error.message
|
|
17
|
-
errors << error
|
|
18
|
-
end
|
|
19
|
-
assert_equal(errors.size, 0, "core.xml Invalid" + errors.map{ |e| e.message }.to_s)
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def test_populates_created
|
|
23
|
-
assert_equal(@doc.xpath('//dcterms:created').text, @time, "dcterms:created incorrect")
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def test_created_as_option
|
|
27
|
-
time = Time.utc(2013, 1, 1, 12, 00)
|
|
28
|
-
c = Axlsx::Core.new :created => time
|
|
29
|
-
doc = Nokogiri::XML(c.to_xml_string)
|
|
30
|
-
assert_equal(doc.xpath('//dcterms:created').text, time.xmlschema, "dcterms:created incorrect")
|
|
31
|
-
end
|
|
32
|
-
|
|
33
|
-
def test_populates_default_name
|
|
34
|
-
assert_equal(@doc.xpath('//dc:creator').text, "axlsx", "Default name not populated")
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def test_creator_as_option
|
|
38
|
-
c = Axlsx::Core.new :creator => "some guy"
|
|
39
|
-
doc = Nokogiri::XML(c.to_xml_string)
|
|
40
|
-
assert(doc.xpath('//dc:creator').text == "some guy")
|
|
41
|
-
end
|
|
42
|
-
end
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestCore < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@core = Axlsx::Core.new
|
|
7
|
+
# could still see some false positives if the second changes between the next two calls
|
|
8
|
+
@time = Time.now.strftime('%Y-%m-%dT%H:%M:%SZ')
|
|
9
|
+
@doc = Nokogiri::XML(@core.to_xml_string)
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_valid_document
|
|
13
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::CORE_XSD))
|
|
14
|
+
errors = []
|
|
15
|
+
schema.validate(@doc).each do |error|
|
|
16
|
+
puts error.message
|
|
17
|
+
errors << error
|
|
18
|
+
end
|
|
19
|
+
assert_equal(errors.size, 0, "core.xml Invalid" + errors.map{ |e| e.message }.to_s)
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_populates_created
|
|
23
|
+
assert_equal(@doc.xpath('//dcterms:created').text, @time, "dcterms:created incorrect")
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_created_as_option
|
|
27
|
+
time = Time.utc(2013, 1, 1, 12, 00)
|
|
28
|
+
c = Axlsx::Core.new :created => time
|
|
29
|
+
doc = Nokogiri::XML(c.to_xml_string)
|
|
30
|
+
assert_equal(doc.xpath('//dcterms:created').text, time.xmlschema, "dcterms:created incorrect")
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_populates_default_name
|
|
34
|
+
assert_equal(@doc.xpath('//dc:creator').text, "axlsx", "Default name not populated")
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_creator_as_option
|
|
38
|
+
c = Axlsx::Core.new :creator => "some guy"
|
|
39
|
+
doc = Nokogiri::XML(c.to_xml_string)
|
|
40
|
+
assert(doc.xpath('//dc:creator').text == "some guy")
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -1,39 +1,39 @@
|
|
|
1
|
-
require 'tc_helper.rb'
|
|
2
|
-
|
|
3
|
-
class TestAreaChart < Test::Unit::TestCase
|
|
4
|
-
|
|
5
|
-
def setup
|
|
6
|
-
@p = Axlsx::Package.new
|
|
7
|
-
ws = @p.workbook.add_worksheet
|
|
8
|
-
@row = ws.add_row ["one", 1, Time.now]
|
|
9
|
-
@chart = ws.add_chart Axlsx::AreaChart, :title => "fishery"
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def teardown
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def test_initialization
|
|
16
|
-
assert_equal(@chart.grouping, :standard, "grouping defualt incorrect")
|
|
17
|
-
assert_equal(@chart.series_type, Axlsx::AreaSeries, "series type incorrect")
|
|
18
|
-
assert(@chart.cat_axis.is_a?(Axlsx::CatAxis), "category axis not created")
|
|
19
|
-
assert(@chart.val_axis.is_a?(Axlsx::ValAxis), "value access not created")
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def test_grouping
|
|
23
|
-
assert_raise(ArgumentError, "require valid grouping") { @chart.grouping = :inverted }
|
|
24
|
-
assert_nothing_raised("allow valid grouping") { @chart.grouping = :stacked }
|
|
25
|
-
assert(@chart.grouping == :stacked)
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def test_to_xml
|
|
29
|
-
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
|
30
|
-
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
31
|
-
errors = []
|
|
32
|
-
schema.validate(doc).each do |error|
|
|
33
|
-
errors.push error
|
|
34
|
-
puts error.message
|
|
35
|
-
end
|
|
36
|
-
assert(errors.empty?, "error free validation")
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
end
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestAreaChart < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@p = Axlsx::Package.new
|
|
7
|
+
ws = @p.workbook.add_worksheet
|
|
8
|
+
@row = ws.add_row ["one", 1, Time.now]
|
|
9
|
+
@chart = ws.add_chart Axlsx::AreaChart, :title => "fishery"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def teardown
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_initialization
|
|
16
|
+
assert_equal(@chart.grouping, :standard, "grouping defualt incorrect")
|
|
17
|
+
assert_equal(@chart.series_type, Axlsx::AreaSeries, "series type incorrect")
|
|
18
|
+
assert(@chart.cat_axis.is_a?(Axlsx::CatAxis), "category axis not created")
|
|
19
|
+
assert(@chart.val_axis.is_a?(Axlsx::ValAxis), "value access not created")
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_grouping
|
|
23
|
+
assert_raise(ArgumentError, "require valid grouping") { @chart.grouping = :inverted }
|
|
24
|
+
assert_nothing_raised("allow valid grouping") { @chart.grouping = :stacked }
|
|
25
|
+
assert(@chart.grouping == :stacked)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
def test_to_xml
|
|
29
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
|
30
|
+
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
31
|
+
errors = []
|
|
32
|
+
schema.validate(doc).each do |error|
|
|
33
|
+
errors.push error
|
|
34
|
+
puts error.message
|
|
35
|
+
end
|
|
36
|
+
assert(errors.empty?, "error free validation")
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
end
|
|
@@ -1,71 +1,71 @@
|
|
|
1
|
-
require 'tc_helper.rb'
|
|
2
|
-
|
|
3
|
-
class TestAreaSeries < Test::Unit::TestCase
|
|
4
|
-
|
|
5
|
-
def setup
|
|
6
|
-
p = Axlsx::Package.new
|
|
7
|
-
@ws = p.workbook.add_worksheet :name=>"hmmm"
|
|
8
|
-
chart = @ws.add_chart Axlsx::AreaChart, :title => "fishery"
|
|
9
|
-
@series = chart.add_series(
|
|
10
|
-
:data => [0,1,2],
|
|
11
|
-
:labels => ["zero", "one", "two"],
|
|
12
|
-
:title => "bob",
|
|
13
|
-
:color => "#FF0000",
|
|
14
|
-
:show_marker => true,
|
|
15
|
-
:smooth => true
|
|
16
|
-
)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def test_initialize
|
|
20
|
-
assert_equal(@series.title.text, "bob", "series title has been applied")
|
|
21
|
-
assert_equal(@series.labels.class, Axlsx::AxDataSource)
|
|
22
|
-
assert_equal(@series.data.class, Axlsx::NumDataSource)
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def test_show_marker
|
|
26
|
-
assert_equal(true, @series.show_marker)
|
|
27
|
-
@series.show_marker = false
|
|
28
|
-
assert_equal(false, @series.show_marker)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def test_smooth
|
|
32
|
-
assert_equal(true, @series.smooth)
|
|
33
|
-
@series.smooth = false
|
|
34
|
-
assert_equal(false, @series.smooth)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def test_marker_symbol
|
|
38
|
-
assert_equal(:default, @series.marker_symbol)
|
|
39
|
-
@series.marker_symbol = :circle
|
|
40
|
-
assert_equal(:circle, @series.marker_symbol)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def test_to_xml_string
|
|
44
|
-
doc = Nokogiri::XML(wrap_with_namespaces(@series))
|
|
45
|
-
assert(doc.xpath("//srgbClr[@val='#{@series.color}']"))
|
|
46
|
-
assert_equal(xpath_with_namespaces(doc, "//c:marker").size, 0)
|
|
47
|
-
assert(doc.xpath("//smooth"))
|
|
48
|
-
|
|
49
|
-
@series.marker_symbol = :diamond
|
|
50
|
-
doc = Nokogiri::XML(wrap_with_namespaces(@series))
|
|
51
|
-
assert_equal(xpath_with_namespaces(doc, "//c:marker/c:symbol[@val='diamond']").size, 1)
|
|
52
|
-
|
|
53
|
-
@series.show_marker = false
|
|
54
|
-
doc = Nokogiri::XML(wrap_with_namespaces(@series))
|
|
55
|
-
assert_equal(xpath_with_namespaces(doc, "//c:marker/c:symbol[@val='none']").size, 1)
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
def wrap_with_namespaces(series)
|
|
59
|
-
'<c:chartSpace xmlns:c="' <<
|
|
60
|
-
Axlsx::XML_NS_C <<
|
|
61
|
-
'" xmlns:a="' <<
|
|
62
|
-
Axlsx::XML_NS_A <<
|
|
63
|
-
'">' <<
|
|
64
|
-
series.to_xml_string <<
|
|
65
|
-
'</c:chartSpace>'
|
|
66
|
-
end
|
|
67
|
-
|
|
68
|
-
def xpath_with_namespaces(doc, xpath)
|
|
69
|
-
doc.xpath(xpath, "a" => Axlsx::XML_NS_A, "c" => Axlsx::XML_NS_C)
|
|
70
|
-
end
|
|
71
|
-
end
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestAreaSeries < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
p = Axlsx::Package.new
|
|
7
|
+
@ws = p.workbook.add_worksheet :name=>"hmmm"
|
|
8
|
+
chart = @ws.add_chart Axlsx::AreaChart, :title => "fishery"
|
|
9
|
+
@series = chart.add_series(
|
|
10
|
+
:data => [0,1,2],
|
|
11
|
+
:labels => ["zero", "one", "two"],
|
|
12
|
+
:title => "bob",
|
|
13
|
+
:color => "#FF0000",
|
|
14
|
+
:show_marker => true,
|
|
15
|
+
:smooth => true
|
|
16
|
+
)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_initialize
|
|
20
|
+
assert_equal(@series.title.text, "bob", "series title has been applied")
|
|
21
|
+
assert_equal(@series.labels.class, Axlsx::AxDataSource)
|
|
22
|
+
assert_equal(@series.data.class, Axlsx::NumDataSource)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_show_marker
|
|
26
|
+
assert_equal(true, @series.show_marker)
|
|
27
|
+
@series.show_marker = false
|
|
28
|
+
assert_equal(false, @series.show_marker)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_smooth
|
|
32
|
+
assert_equal(true, @series.smooth)
|
|
33
|
+
@series.smooth = false
|
|
34
|
+
assert_equal(false, @series.smooth)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_marker_symbol
|
|
38
|
+
assert_equal(:default, @series.marker_symbol)
|
|
39
|
+
@series.marker_symbol = :circle
|
|
40
|
+
assert_equal(:circle, @series.marker_symbol)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def test_to_xml_string
|
|
44
|
+
doc = Nokogiri::XML(wrap_with_namespaces(@series))
|
|
45
|
+
assert(doc.xpath("//srgbClr[@val='#{@series.color}']"))
|
|
46
|
+
assert_equal(xpath_with_namespaces(doc, "//c:marker").size, 0)
|
|
47
|
+
assert(doc.xpath("//smooth"))
|
|
48
|
+
|
|
49
|
+
@series.marker_symbol = :diamond
|
|
50
|
+
doc = Nokogiri::XML(wrap_with_namespaces(@series))
|
|
51
|
+
assert_equal(xpath_with_namespaces(doc, "//c:marker/c:symbol[@val='diamond']").size, 1)
|
|
52
|
+
|
|
53
|
+
@series.show_marker = false
|
|
54
|
+
doc = Nokogiri::XML(wrap_with_namespaces(@series))
|
|
55
|
+
assert_equal(xpath_with_namespaces(doc, "//c:marker/c:symbol[@val='none']").size, 1)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
def wrap_with_namespaces(series)
|
|
59
|
+
'<c:chartSpace xmlns:c="' <<
|
|
60
|
+
Axlsx::XML_NS_C <<
|
|
61
|
+
'" xmlns:a="' <<
|
|
62
|
+
Axlsx::XML_NS_A <<
|
|
63
|
+
'">' <<
|
|
64
|
+
series.to_xml_string <<
|
|
65
|
+
'</c:chartSpace>'
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def xpath_with_namespaces(doc, xpath)
|
|
69
|
+
doc.xpath(xpath, "a" => Axlsx::XML_NS_A, "c" => Axlsx::XML_NS_C)
|
|
70
|
+
end
|
|
71
|
+
end
|
data/test/drawing/tc_axes.rb
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
require 'tc_helper.rb'
|
|
2
|
-
|
|
3
|
-
class TestAxes < Test::Unit::TestCase
|
|
4
|
-
def test_constructor_requires_cat_axis_first
|
|
5
|
-
assert_raise(ArgumentError) { Axlsx::Axes.new(:val_axis => Axlsx::ValAxis, :cat_axis => Axlsx::CatAxis) }
|
|
6
|
-
assert_nothing_raised { Axlsx::Axes.new(:cat_axis => Axlsx::CatAxis, :val_axis => Axlsx::ValAxis) }
|
|
7
|
-
end
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestAxes < Test::Unit::TestCase
|
|
4
|
+
def test_constructor_requires_cat_axis_first
|
|
5
|
+
assert_raise(ArgumentError) { Axlsx::Axes.new(:val_axis => Axlsx::ValAxis, :cat_axis => Axlsx::CatAxis) }
|
|
6
|
+
assert_nothing_raised { Axlsx::Axes.new(:cat_axis => Axlsx::CatAxis, :val_axis => Axlsx::ValAxis) }
|
|
7
|
+
end
|
|
8
8
|
end
|
data/test/drawing/tc_axis.rb
CHANGED
|
@@ -1,112 +1,112 @@
|
|
|
1
|
-
require 'tc_helper.rb'
|
|
2
|
-
|
|
3
|
-
class TestAxis < Test::Unit::TestCase
|
|
4
|
-
def setup
|
|
5
|
-
@axis = Axlsx::Axis.new :gridlines => false, :title => 'Foo'
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
def test_initialization
|
|
10
|
-
assert_equal(@axis.ax_pos, :b, "axis position default incorrect")
|
|
11
|
-
assert_equal(@axis.tick_lbl_pos, :nextTo, "tick label position default incorrect")
|
|
12
|
-
assert_equal(@axis.tick_lbl_pos, :nextTo, "tick label position default incorrect")
|
|
13
|
-
assert_equal(@axis.crosses, :autoZero, "tick label position default incorrect")
|
|
14
|
-
assert(@axis.scaling.is_a?(Axlsx::Scaling) && @axis.scaling.orientation == :minMax, "scaling default incorrect")
|
|
15
|
-
assert_equal('Foo', @axis.title.text)
|
|
16
|
-
end
|
|
17
|
-
|
|
18
|
-
def test_color
|
|
19
|
-
@axis.color = "00FF00"
|
|
20
|
-
@axis.cross_axis = Axlsx::CatAxis.new
|
|
21
|
-
str = '<?xml version="1.0" encoding="UTF-8"?>'
|
|
22
|
-
str << '<c:chartSpace xmlns:c="' << Axlsx::XML_NS_C << '" xmlns:a="' << Axlsx::XML_NS_A << '">'
|
|
23
|
-
doc = Nokogiri::XML(@axis.to_xml_string(str))
|
|
24
|
-
assert(doc.xpath("//a:srgbClr[@val='00FF00']"))
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
def test_cell_based_axis_title
|
|
28
|
-
p = Axlsx::Package.new
|
|
29
|
-
p.workbook.add_worksheet(:name=>'foosheet') do |sheet|
|
|
30
|
-
sheet.add_row ['battle victories']
|
|
31
|
-
sheet.add_row ['bird', 1, 2, 1]
|
|
32
|
-
sheet.add_row ['cat', 7, 9, 10]
|
|
33
|
-
sheet.add_chart(Axlsx::Line3DChart) do |chart|
|
|
34
|
-
chart.add_series :data => sheet['B2:D2'], :labels => sheet['B1']
|
|
35
|
-
chart.val_axis.title = sheet['A1']
|
|
36
|
-
assert_equal('battle victories', chart.val_axis.title.text)
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def test_axis_position
|
|
42
|
-
assert_raise(ArgumentError, "requires valid axis position") { @axis.ax_pos = :nowhere }
|
|
43
|
-
assert_nothing_raised("accepts valid axis position") { @axis.ax_pos = :r }
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def test_label_rotation
|
|
47
|
-
assert_raise(ArgumentError, "requires valid angle") { @axis.label_rotation = :nowhere }
|
|
48
|
-
assert_raise(ArgumentError, "requires valid angle") { @axis.label_rotation = 91 }
|
|
49
|
-
assert_raise(ArgumentError, "requires valid angle") { @axis.label_rotation = -91 }
|
|
50
|
-
assert_nothing_raised("accepts valid angle") { @axis.label_rotation = 45 }
|
|
51
|
-
assert_equal(@axis.label_rotation, 45 * 60000)
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def test_tick_label_position
|
|
55
|
-
assert_raise(ArgumentError, "requires valid tick label position") { @axis.tick_lbl_pos = :nowhere }
|
|
56
|
-
assert_nothing_raised("accepts valid tick label position") { @axis.tick_lbl_pos = :high }
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def test_format_code
|
|
60
|
-
assert_raise(ArgumentError, "requires valid format code") { @axis.format_code = :high }
|
|
61
|
-
assert_nothing_raised("accepts valid format code") { @axis.format_code = "00.##" }
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
def create_chart_with_formatting(format_string=nil)
|
|
65
|
-
p = Axlsx::Package.new
|
|
66
|
-
p.workbook.add_worksheet(:name => "Formatting Test") do |sheet|
|
|
67
|
-
sheet.add_row(['test', 20])
|
|
68
|
-
sheet.add_chart(Axlsx::Bar3DChart, :start_at => [0,5], :end_at => [10, 20], :title => "Test Formatting") do |chart|
|
|
69
|
-
chart.add_series :data => sheet["B1:B1"], :labels => sheet["A1:A1"]
|
|
70
|
-
chart.val_axis.format_code = format_string if format_string
|
|
71
|
-
doc = Nokogiri::XML(chart.to_xml_string)
|
|
72
|
-
yield doc
|
|
73
|
-
end
|
|
74
|
-
end
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
def test_format_code_resets_source_linked
|
|
78
|
-
create_chart_with_formatting("#,##0.00") do |doc|
|
|
79
|
-
assert_equal(doc.xpath("//c:valAx/c:numFmt[@formatCode='#,##0.00']").size, 1)
|
|
80
|
-
assert_equal(doc.xpath("//c:valAx/c:numFmt[@sourceLinked='0']").size, 1)
|
|
81
|
-
end
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
def test_no_format_code_keeps_source_linked
|
|
85
|
-
create_chart_with_formatting do |doc|
|
|
86
|
-
assert_equal(doc.xpath("//c:valAx/c:numFmt[@formatCode='General']").size, 1)
|
|
87
|
-
assert_equal(doc.xpath("//c:valAx/c:numFmt[@sourceLinked='1']").size, 1)
|
|
88
|
-
end
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
def test_crosses
|
|
92
|
-
assert_raise(ArgumentError, "requires valid crosses") { @axis.crosses = 1 }
|
|
93
|
-
assert_nothing_raised("accepts valid crosses") { @axis.crosses = :min }
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
def test_gridlines
|
|
97
|
-
assert_raise(ArgumentError, "requires valid gridlines") { @axis.gridlines = 'alice' }
|
|
98
|
-
assert_nothing_raised("accepts valid crosses") { @axis.gridlines = false }
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
def test_to_xml_string
|
|
102
|
-
@axis.cross_axis = Axlsx::CatAxis.new
|
|
103
|
-
str = '<?xml version="1.0" encoding="UTF-8"?>'
|
|
104
|
-
str << '<c:chartSpace xmlns:c="' << Axlsx::XML_NS_C << '" xmlns:a="' << Axlsx::XML_NS_A << '">'
|
|
105
|
-
doc = Nokogiri::XML(@axis.to_xml_string(str))
|
|
106
|
-
assert(doc.xpath('//a:noFill'))
|
|
107
|
-
assert(doc.xpath("//c:crosses[@val='#{@axis.crosses.to_s}']"))
|
|
108
|
-
assert(doc.xpath("//c:crossAx[@val='#{@axis.cross_axis.to_s}']"))
|
|
109
|
-
assert(doc.xpath("//a:bodyPr[@rot='#{@axis.label_rotation.to_s}']"))
|
|
110
|
-
assert(doc.xpath("//a:t[text()='Foo']"))
|
|
111
|
-
end
|
|
112
|
-
end
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestAxis < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@axis = Axlsx::Axis.new :gridlines => false, :title => 'Foo'
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
def test_initialization
|
|
10
|
+
assert_equal(@axis.ax_pos, :b, "axis position default incorrect")
|
|
11
|
+
assert_equal(@axis.tick_lbl_pos, :nextTo, "tick label position default incorrect")
|
|
12
|
+
assert_equal(@axis.tick_lbl_pos, :nextTo, "tick label position default incorrect")
|
|
13
|
+
assert_equal(@axis.crosses, :autoZero, "tick label position default incorrect")
|
|
14
|
+
assert(@axis.scaling.is_a?(Axlsx::Scaling) && @axis.scaling.orientation == :minMax, "scaling default incorrect")
|
|
15
|
+
assert_equal('Foo', @axis.title.text)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_color
|
|
19
|
+
@axis.color = "00FF00"
|
|
20
|
+
@axis.cross_axis = Axlsx::CatAxis.new
|
|
21
|
+
str = '<?xml version="1.0" encoding="UTF-8"?>'
|
|
22
|
+
str << '<c:chartSpace xmlns:c="' << Axlsx::XML_NS_C << '" xmlns:a="' << Axlsx::XML_NS_A << '">'
|
|
23
|
+
doc = Nokogiri::XML(@axis.to_xml_string(str))
|
|
24
|
+
assert(doc.xpath("//a:srgbClr[@val='00FF00']"))
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_cell_based_axis_title
|
|
28
|
+
p = Axlsx::Package.new
|
|
29
|
+
p.workbook.add_worksheet(:name=>'foosheet') do |sheet|
|
|
30
|
+
sheet.add_row ['battle victories']
|
|
31
|
+
sheet.add_row ['bird', 1, 2, 1]
|
|
32
|
+
sheet.add_row ['cat', 7, 9, 10]
|
|
33
|
+
sheet.add_chart(Axlsx::Line3DChart) do |chart|
|
|
34
|
+
chart.add_series :data => sheet['B2:D2'], :labels => sheet['B1']
|
|
35
|
+
chart.val_axis.title = sheet['A1']
|
|
36
|
+
assert_equal('battle victories', chart.val_axis.title.text)
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_axis_position
|
|
42
|
+
assert_raise(ArgumentError, "requires valid axis position") { @axis.ax_pos = :nowhere }
|
|
43
|
+
assert_nothing_raised("accepts valid axis position") { @axis.ax_pos = :r }
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_label_rotation
|
|
47
|
+
assert_raise(ArgumentError, "requires valid angle") { @axis.label_rotation = :nowhere }
|
|
48
|
+
assert_raise(ArgumentError, "requires valid angle") { @axis.label_rotation = 91 }
|
|
49
|
+
assert_raise(ArgumentError, "requires valid angle") { @axis.label_rotation = -91 }
|
|
50
|
+
assert_nothing_raised("accepts valid angle") { @axis.label_rotation = 45 }
|
|
51
|
+
assert_equal(@axis.label_rotation, 45 * 60000)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_tick_label_position
|
|
55
|
+
assert_raise(ArgumentError, "requires valid tick label position") { @axis.tick_lbl_pos = :nowhere }
|
|
56
|
+
assert_nothing_raised("accepts valid tick label position") { @axis.tick_lbl_pos = :high }
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_format_code
|
|
60
|
+
assert_raise(ArgumentError, "requires valid format code") { @axis.format_code = :high }
|
|
61
|
+
assert_nothing_raised("accepts valid format code") { @axis.format_code = "00.##" }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def create_chart_with_formatting(format_string=nil)
|
|
65
|
+
p = Axlsx::Package.new
|
|
66
|
+
p.workbook.add_worksheet(:name => "Formatting Test") do |sheet|
|
|
67
|
+
sheet.add_row(['test', 20])
|
|
68
|
+
sheet.add_chart(Axlsx::Bar3DChart, :start_at => [0,5], :end_at => [10, 20], :title => "Test Formatting") do |chart|
|
|
69
|
+
chart.add_series :data => sheet["B1:B1"], :labels => sheet["A1:A1"]
|
|
70
|
+
chart.val_axis.format_code = format_string if format_string
|
|
71
|
+
doc = Nokogiri::XML(chart.to_xml_string)
|
|
72
|
+
yield doc
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
def test_format_code_resets_source_linked
|
|
78
|
+
create_chart_with_formatting("#,##0.00") do |doc|
|
|
79
|
+
assert_equal(doc.xpath("//c:valAx/c:numFmt[@formatCode='#,##0.00']").size, 1)
|
|
80
|
+
assert_equal(doc.xpath("//c:valAx/c:numFmt[@sourceLinked='0']").size, 1)
|
|
81
|
+
end
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
def test_no_format_code_keeps_source_linked
|
|
85
|
+
create_chart_with_formatting do |doc|
|
|
86
|
+
assert_equal(doc.xpath("//c:valAx/c:numFmt[@formatCode='General']").size, 1)
|
|
87
|
+
assert_equal(doc.xpath("//c:valAx/c:numFmt[@sourceLinked='1']").size, 1)
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
def test_crosses
|
|
92
|
+
assert_raise(ArgumentError, "requires valid crosses") { @axis.crosses = 1 }
|
|
93
|
+
assert_nothing_raised("accepts valid crosses") { @axis.crosses = :min }
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
def test_gridlines
|
|
97
|
+
assert_raise(ArgumentError, "requires valid gridlines") { @axis.gridlines = 'alice' }
|
|
98
|
+
assert_nothing_raised("accepts valid crosses") { @axis.gridlines = false }
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def test_to_xml_string
|
|
102
|
+
@axis.cross_axis = Axlsx::CatAxis.new
|
|
103
|
+
str = '<?xml version="1.0" encoding="UTF-8"?>'
|
|
104
|
+
str << '<c:chartSpace xmlns:c="' << Axlsx::XML_NS_C << '" xmlns:a="' << Axlsx::XML_NS_A << '">'
|
|
105
|
+
doc = Nokogiri::XML(@axis.to_xml_string(str))
|
|
106
|
+
assert(doc.xpath('//a:noFill'))
|
|
107
|
+
assert(doc.xpath("//c:crosses[@val='#{@axis.crosses.to_s}']"))
|
|
108
|
+
assert(doc.xpath("//c:crossAx[@val='#{@axis.cross_axis.to_s}']"))
|
|
109
|
+
assert(doc.xpath("//a:bodyPr[@rot='#{@axis.label_rotation.to_s}']"))
|
|
110
|
+
assert(doc.xpath("//a:t[text()='Foo']"))
|
|
111
|
+
end
|
|
112
|
+
end
|