axlsx-alt 3.0.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 +7 -0
- data/.yardopts +9 -0
- data/.yardopts_guide +19 -0
- data/CHANGELOG.md +244 -0
- data/LICENSE +22 -0
- data/README.md +180 -0
- data/Rakefile +29 -0
- data/examples/2010_comments.rb +17 -0
- data/examples/anchor_swapping.rb +28 -0
- data/examples/auto_filter.rb +25 -0
- data/examples/basic_charts.rb +58 -0
- data/examples/chart_colors.rb +88 -0
- data/examples/colored_links.rb +59 -0
- data/examples/conditional_formatting/example_conditional_formatting.rb +89 -0
- data/examples/conditional_formatting/getting_barred.rb +37 -0
- data/examples/conditional_formatting/hitting_the_high_notes.rb +37 -0
- data/examples/conditional_formatting/scaled_colors.rb +39 -0
- data/examples/conditional_formatting/stop_and_go.rb +37 -0
- data/examples/data_validation.rb +67 -0
- data/examples/example.rb +885 -0
- data/examples/extractive.rb +45 -0
- data/examples/image1.jpeg +0 -0
- data/examples/ios_preview.rb +14 -0
- data/examples/merge_cells.rb +17 -0
- data/examples/no_grid_with_borders.rb +18 -0
- data/examples/page_setup.rb +11 -0
- data/examples/pivot_table.rb +39 -0
- data/examples/pivot_test.rb +63 -0
- data/examples/sheet_protection.rb +10 -0
- data/examples/skydrive/real_example.rb +63 -0
- data/examples/split.rb +16 -0
- data/examples/styles.rb +66 -0
- data/examples/underline.rb +13 -0
- data/examples/wrap_text.rb +21 -0
- data/lib/axlsx.rb +171 -0
- data/lib/axlsx/content_type/abstract_content_type.rb +32 -0
- data/lib/axlsx/content_type/content_type.rb +26 -0
- data/lib/axlsx/content_type/default.rb +25 -0
- data/lib/axlsx/content_type/override.rb +25 -0
- data/lib/axlsx/doc_props/app.rb +235 -0
- data/lib/axlsx/doc_props/core.rb +39 -0
- data/lib/axlsx/drawing/area_chart.rb +99 -0
- data/lib/axlsx/drawing/area_series.rb +110 -0
- data/lib/axlsx/drawing/ax_data_source.rb +26 -0
- data/lib/axlsx/drawing/axes.rb +61 -0
- data/lib/axlsx/drawing/axis.rb +190 -0
- data/lib/axlsx/drawing/bar_3D_chart.rb +151 -0
- data/lib/axlsx/drawing/bar_chart.rb +143 -0
- data/lib/axlsx/drawing/bar_series.rb +82 -0
- data/lib/axlsx/drawing/bubble_chart.rb +59 -0
- data/lib/axlsx/drawing/bubble_series.rb +63 -0
- data/lib/axlsx/drawing/cat_axis.rb +85 -0
- data/lib/axlsx/drawing/chart.rb +276 -0
- data/lib/axlsx/drawing/d_lbls.rb +90 -0
- data/lib/axlsx/drawing/drawing.rb +167 -0
- data/lib/axlsx/drawing/graphic_frame.rb +54 -0
- data/lib/axlsx/drawing/hyperlink.rb +100 -0
- data/lib/axlsx/drawing/line_3D_chart.rb +68 -0
- data/lib/axlsx/drawing/line_chart.rb +99 -0
- data/lib/axlsx/drawing/line_series.rb +110 -0
- data/lib/axlsx/drawing/marker.rb +84 -0
- data/lib/axlsx/drawing/num_data.rb +52 -0
- data/lib/axlsx/drawing/num_data_source.rb +62 -0
- data/lib/axlsx/drawing/num_val.rb +34 -0
- data/lib/axlsx/drawing/one_cell_anchor.rb +99 -0
- data/lib/axlsx/drawing/pic.rb +211 -0
- data/lib/axlsx/drawing/picture_locking.rb +42 -0
- data/lib/axlsx/drawing/pie_3D_chart.rb +47 -0
- data/lib/axlsx/drawing/pie_series.rb +74 -0
- data/lib/axlsx/drawing/scaling.rb +60 -0
- data/lib/axlsx/drawing/scatter_chart.rb +74 -0
- data/lib/axlsx/drawing/scatter_series.rb +98 -0
- data/lib/axlsx/drawing/ser_axis.rb +45 -0
- data/lib/axlsx/drawing/series.rb +69 -0
- data/lib/axlsx/drawing/series_title.rb +23 -0
- data/lib/axlsx/drawing/str_data.rb +42 -0
- data/lib/axlsx/drawing/str_val.rb +34 -0
- data/lib/axlsx/drawing/title.rb +96 -0
- data/lib/axlsx/drawing/two_cell_anchor.rb +97 -0
- data/lib/axlsx/drawing/val_axis.rb +37 -0
- data/lib/axlsx/drawing/view_3D.rb +115 -0
- data/lib/axlsx/drawing/vml_drawing.rb +42 -0
- data/lib/axlsx/drawing/vml_shape.rb +66 -0
- data/lib/axlsx/package.rb +358 -0
- data/lib/axlsx/rels/relationship.rb +137 -0
- data/lib/axlsx/rels/relationships.rb +32 -0
- data/lib/axlsx/stylesheet/border.rb +71 -0
- data/lib/axlsx/stylesheet/border_pr.rb +71 -0
- data/lib/axlsx/stylesheet/cell_alignment.rb +132 -0
- data/lib/axlsx/stylesheet/cell_protection.rb +41 -0
- data/lib/axlsx/stylesheet/cell_style.rb +72 -0
- data/lib/axlsx/stylesheet/color.rb +76 -0
- data/lib/axlsx/stylesheet/dxf.rb +79 -0
- data/lib/axlsx/stylesheet/fill.rb +35 -0
- data/lib/axlsx/stylesheet/font.rb +148 -0
- data/lib/axlsx/stylesheet/gradient_fill.rb +103 -0
- data/lib/axlsx/stylesheet/gradient_stop.rb +37 -0
- data/lib/axlsx/stylesheet/num_fmt.rb +86 -0
- data/lib/axlsx/stylesheet/pattern_fill.rb +73 -0
- data/lib/axlsx/stylesheet/styles.rb +420 -0
- data/lib/axlsx/stylesheet/table_style.rb +54 -0
- data/lib/axlsx/stylesheet/table_style_element.rb +77 -0
- data/lib/axlsx/stylesheet/table_styles.rb +46 -0
- data/lib/axlsx/stylesheet/xf.rb +147 -0
- data/lib/axlsx/util/accessors.rb +64 -0
- data/lib/axlsx/util/constants.rb +400 -0
- data/lib/axlsx/util/mime_type_utils.rb +11 -0
- data/lib/axlsx/util/options_parser.rb +16 -0
- data/lib/axlsx/util/parser.rb +44 -0
- data/lib/axlsx/util/serialized_attributes.rb +89 -0
- data/lib/axlsx/util/simple_typed_list.rb +179 -0
- data/lib/axlsx/util/storage.rb +146 -0
- data/lib/axlsx/util/validators.rb +312 -0
- data/lib/axlsx/version.rb +3 -0
- data/lib/axlsx/workbook/defined_name.rb +128 -0
- data/lib/axlsx/workbook/defined_names.rb +21 -0
- data/lib/axlsx/workbook/shared_strings_table.rb +77 -0
- data/lib/axlsx/workbook/workbook.rb +379 -0
- data/lib/axlsx/workbook/workbook_view.rb +80 -0
- data/lib/axlsx/workbook/workbook_views.rb +22 -0
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -0
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -0
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -0
- data/lib/axlsx/workbook/worksheet/break.rb +35 -0
- data/lib/axlsx/workbook/worksheet/cell.rb +478 -0
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -0
- data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -0
- data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -0
- data/lib/axlsx/workbook/worksheet/col.rb +141 -0
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -0
- data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -0
- data/lib/axlsx/workbook/worksheet/cols.rb +23 -0
- data/lib/axlsx/workbook/worksheet/comment.rb +90 -0
- data/lib/axlsx/workbook/worksheet/comments.rb +97 -0
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -0
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -0
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -0
- data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -0
- data/lib/axlsx/workbook/worksheet/data_validation.rb +246 -0
- data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -0
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -0
- data/lib/axlsx/workbook/worksheet/dimension.rb +64 -0
- data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -0
- data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -0
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -0
- data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -0
- data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -0
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -0
- data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -0
- data/lib/axlsx/workbook/worksheet/pane.rb +139 -0
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +289 -0
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -0
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -0
- data/lib/axlsx/workbook/worksheet/print_options.rb +39 -0
- data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -0
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -0
- data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -0
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -0
- data/lib/axlsx/workbook/worksheet/row.rb +161 -0
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -0
- data/lib/axlsx/workbook/worksheet/selection.rb +101 -0
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -0
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -0
- data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +60 -0
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -0
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -0
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -0
- data/lib/axlsx/workbook/worksheet/table.rb +102 -0
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -0
- data/lib/axlsx/workbook/worksheet/tables.rb +34 -0
- data/lib/axlsx/workbook/worksheet/worksheet.rb +756 -0
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -0
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -0
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -0
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -0
- data/lib/schema/dc.xsd +118 -0
- data/lib/schema/dcmitype.xsd +52 -0
- data/lib/schema/dcterms.xsd +331 -0
- data/lib/schema/dml-chart.xsd +1499 -0
- data/lib/schema/dml-chartDrawing.xsd +146 -0
- data/lib/schema/dml-compatibility.xsd +14 -0
- data/lib/schema/dml-diagram.xsd +1091 -0
- data/lib/schema/dml-lockedCanvas.xsd +11 -0
- data/lib/schema/dml-main.xsd +3048 -0
- data/lib/schema/dml-picture.xsd +23 -0
- data/lib/schema/dml-spreadsheetDrawing.xsd +185 -0
- data/lib/schema/dml-wordprocessingDrawing.xsd +185 -0
- data/lib/schema/opc-contentTypes.xsd +42 -0
- data/lib/schema/opc-coreProperties.xsd +54 -0
- data/lib/schema/opc-digSig.xsd +49 -0
- data/lib/schema/opc-relationships.xsd +33 -0
- data/lib/schema/pml.xsd +1676 -0
- data/lib/schema/shared-additionalCharacteristics.xsd +28 -0
- data/lib/schema/shared-bibliography.xsd +144 -0
- data/lib/schema/shared-commonSimpleTypes.xsd +166 -0
- data/lib/schema/shared-customXmlDataProperties.xsd +25 -0
- data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -0
- data/lib/schema/shared-documentPropertiesCustom.xsd +59 -0
- data/lib/schema/shared-documentPropertiesExtended.xsd +56 -0
- data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -0
- data/lib/schema/shared-math.xsd +582 -0
- data/lib/schema/shared-relationshipReference.xsd +25 -0
- data/lib/schema/sml.xsd +4434 -0
- data/lib/schema/vml-main.xsd +569 -0
- data/lib/schema/vml-officeDrawing.xsd +509 -0
- data/lib/schema/vml-presentationDrawing.xsd +12 -0
- data/lib/schema/vml-spreadsheetDrawing.xsd +108 -0
- data/lib/schema/vml-wordprocessingDrawing.xsd +96 -0
- data/lib/schema/wml.xsd +3644 -0
- data/lib/schema/xml.xsd +116 -0
- data/test/benchmark.rb +72 -0
- data/test/content_type/tc_content_type.rb +76 -0
- data/test/content_type/tc_default.rb +16 -0
- data/test/content_type/tc_override.rb +14 -0
- data/test/doc_props/tc_app.rb +43 -0
- data/test/doc_props/tc_core.rb +42 -0
- data/test/drawing/tc_area_chart.rb +39 -0
- data/test/drawing/tc_area_series.rb +71 -0
- data/test/drawing/tc_axes.rb +8 -0
- data/test/drawing/tc_axis.rb +112 -0
- data/test/drawing/tc_bar_3D_chart.rb +71 -0
- data/test/drawing/tc_bar_chart.rb +71 -0
- data/test/drawing/tc_bar_series.rb +37 -0
- data/test/drawing/tc_bubble_chart.rb +44 -0
- data/test/drawing/tc_bubble_series.rb +21 -0
- data/test/drawing/tc_cat_axis.rb +31 -0
- data/test/drawing/tc_cat_axis_data.rb +27 -0
- data/test/drawing/tc_chart.rb +123 -0
- data/test/drawing/tc_d_lbls.rb +57 -0
- data/test/drawing/tc_data_source.rb +23 -0
- data/test/drawing/tc_drawing.rb +80 -0
- data/test/drawing/tc_graphic_frame.rb +27 -0
- data/test/drawing/tc_hyperlink.rb +64 -0
- data/test/drawing/tc_line_3d_chart.rb +47 -0
- data/test/drawing/tc_line_chart.rb +39 -0
- data/test/drawing/tc_line_series.rb +71 -0
- data/test/drawing/tc_marker.rb +44 -0
- data/test/drawing/tc_named_axis_data.rb +27 -0
- data/test/drawing/tc_num_data.rb +31 -0
- data/test/drawing/tc_num_val.rb +29 -0
- data/test/drawing/tc_one_cell_anchor.rb +66 -0
- data/test/drawing/tc_pic.rb +103 -0
- data/test/drawing/tc_picture_locking.rb +72 -0
- data/test/drawing/tc_pie_3D_chart.rb +28 -0
- data/test/drawing/tc_pie_series.rb +32 -0
- data/test/drawing/tc_scaling.rb +36 -0
- data/test/drawing/tc_scatter_chart.rb +48 -0
- data/test/drawing/tc_scatter_series.rb +56 -0
- data/test/drawing/tc_ser_axis.rb +31 -0
- data/test/drawing/tc_series.rb +23 -0
- data/test/drawing/tc_series_title.rb +33 -0
- data/test/drawing/tc_str_data.rb +18 -0
- data/test/drawing/tc_str_val.rb +30 -0
- data/test/drawing/tc_title.rb +54 -0
- data/test/drawing/tc_two_cell_anchor.rb +36 -0
- data/test/drawing/tc_val_axis.rb +24 -0
- data/test/drawing/tc_view_3D.rb +54 -0
- data/test/drawing/tc_vml_drawing.rb +25 -0
- data/test/drawing/tc_vml_shape.rb +106 -0
- data/test/profile.rb +24 -0
- data/test/rels/tc_relationship.rb +44 -0
- data/test/rels/tc_relationships.rb +37 -0
- data/test/stylesheet/tc_border.rb +37 -0
- data/test/stylesheet/tc_border_pr.rb +32 -0
- data/test/stylesheet/tc_cell_alignment.rb +81 -0
- data/test/stylesheet/tc_cell_protection.rb +29 -0
- data/test/stylesheet/tc_cell_style.rb +57 -0
- data/test/stylesheet/tc_color.rb +43 -0
- data/test/stylesheet/tc_dxf.rb +81 -0
- data/test/stylesheet/tc_fill.rb +18 -0
- data/test/stylesheet/tc_font.rb +121 -0
- data/test/stylesheet/tc_gradient_fill.rb +72 -0
- data/test/stylesheet/tc_gradient_stop.rb +31 -0
- data/test/stylesheet/tc_num_fmt.rb +30 -0
- data/test/stylesheet/tc_pattern_fill.rb +43 -0
- data/test/stylesheet/tc_styles.rb +235 -0
- data/test/stylesheet/tc_table_style.rb +44 -0
- data/test/stylesheet/tc_table_style_element.rb +45 -0
- data/test/stylesheet/tc_table_styles.rb +29 -0
- data/test/stylesheet/tc_xf.rb +120 -0
- data/test/tc_axlsx.rb +103 -0
- data/test/tc_helper.rb +12 -0
- data/test/tc_package.rb +245 -0
- data/test/util/tc_mime_type_utils.rb +13 -0
- data/test/util/tc_serialized_attributes.rb +19 -0
- data/test/util/tc_simple_typed_list.rb +77 -0
- data/test/util/tc_validators.rb +210 -0
- data/test/workbook/tc_defined_name.rb +49 -0
- data/test/workbook/tc_shared_strings_table.rb +59 -0
- data/test/workbook/tc_workbook.rb +160 -0
- data/test/workbook/tc_workbook_view.rb +50 -0
- data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -0
- data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -0
- data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -0
- data/test/workbook/worksheet/tc_break.rb +49 -0
- data/test/workbook/worksheet/tc_cell.rb +387 -0
- data/test/workbook/worksheet/tc_cfvo.rb +31 -0
- data/test/workbook/worksheet/tc_col.rb +78 -0
- data/test/workbook/worksheet/tc_color_scale.rb +58 -0
- data/test/workbook/worksheet/tc_comment.rb +72 -0
- data/test/workbook/worksheet/tc_comments.rb +57 -0
- data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -0
- data/test/workbook/worksheet/tc_data_bar.rb +46 -0
- data/test/workbook/worksheet/tc_data_validation.rb +265 -0
- data/test/workbook/worksheet/tc_date_time_converter.rb +124 -0
- data/test/workbook/worksheet/tc_header_footer.rb +151 -0
- data/test/workbook/worksheet/tc_icon_set.rb +45 -0
- data/test/workbook/worksheet/tc_outline_pr.rb +19 -0
- data/test/workbook/worksheet/tc_page_margins.rb +97 -0
- data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -0
- data/test/workbook/worksheet/tc_page_setup.rb +143 -0
- data/test/workbook/worksheet/tc_pane.rb +54 -0
- data/test/workbook/worksheet/tc_pivot_table.rb +135 -0
- data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +54 -0
- data/test/workbook/worksheet/tc_print_options.rb +72 -0
- data/test/workbook/worksheet/tc_protected_range.rb +17 -0
- data/test/workbook/worksheet/tc_rich_text.rb +44 -0
- data/test/workbook/worksheet/tc_rich_text_run.rb +172 -0
- data/test/workbook/worksheet/tc_row.rb +122 -0
- data/test/workbook/worksheet/tc_selection.rb +55 -0
- data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -0
- data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -0
- data/test/workbook/worksheet/tc_sheet_pr.rb +49 -0
- data/test/workbook/worksheet/tc_sheet_protection.rb +117 -0
- data/test/workbook/worksheet/tc_sheet_view.rb +214 -0
- data/test/workbook/worksheet/tc_table.rb +67 -0
- data/test/workbook/worksheet/tc_table_style_info.rb +53 -0
- data/test/workbook/worksheet/tc_worksheet.rb +597 -0
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -0
- metadata +601 -0
|
@@ -0,0 +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
|
|
8
|
+
end
|
|
@@ -0,0 +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
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestBar3DChart < 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::Bar3DChart, :title => "fishery"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def teardown
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_initialization
|
|
16
|
+
assert_equal(@chart.grouping, :clustered, "grouping defualt incorrect")
|
|
17
|
+
assert_equal(@chart.series_type, Axlsx::BarSeries, "series type incorrect")
|
|
18
|
+
assert_equal(@chart.bar_dir, :bar, " bar direction incorrect")
|
|
19
|
+
assert(@chart.cat_axis.is_a?(Axlsx::CatAxis), "category axis not created")
|
|
20
|
+
assert(@chart.val_axis.is_a?(Axlsx::ValAxis), "value access not created")
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_bar_direction
|
|
24
|
+
assert_raise(ArgumentError, "require valid bar direction") { @chart.bar_dir = :left }
|
|
25
|
+
assert_nothing_raised("allow valid bar direction") { @chart.bar_dir = :col }
|
|
26
|
+
assert(@chart.bar_dir == :col)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_grouping
|
|
30
|
+
assert_raise(ArgumentError, "require valid grouping") { @chart.grouping = :inverted }
|
|
31
|
+
assert_nothing_raised("allow valid grouping") { @chart.grouping = :standard }
|
|
32
|
+
assert(@chart.grouping == :standard)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def test_gapWidth
|
|
37
|
+
assert_raise(ArgumentError, "require valid gap width") { @chart.gap_width = 200 }
|
|
38
|
+
assert_nothing_raised("allow valid gapWidth") { @chart.gap_width = "200%" }
|
|
39
|
+
assert(@chart.gap_width == "200%")
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def test_gapDepth
|
|
43
|
+
assert_raise(ArgumentError, "require valid gap_depth") { @chart.gap_depth = 200 }
|
|
44
|
+
assert_nothing_raised("allow valid gap_depth") { @chart.gap_depth = "200%" }
|
|
45
|
+
assert(@chart.gap_depth == "200%")
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_shape
|
|
49
|
+
assert_raise(ArgumentError, "require valid shape") { @chart.shape = :star }
|
|
50
|
+
assert_nothing_raised("allow valid shape") { @chart.shape = :cone }
|
|
51
|
+
assert(@chart.shape == :cone)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_to_xml_string
|
|
55
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
|
56
|
+
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
57
|
+
errors = []
|
|
58
|
+
schema.validate(doc).each do |error|
|
|
59
|
+
errors.push error
|
|
60
|
+
puts error.message
|
|
61
|
+
end
|
|
62
|
+
assert(errors.empty?, "error free validation")
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def test_to_xml_string_has_axes_in_correct_order
|
|
66
|
+
str = @chart.to_xml_string
|
|
67
|
+
cat_axis_position = str.index(@chart.axes[:cat_axis].id.to_s)
|
|
68
|
+
val_axis_position = str.index(@chart.axes[:val_axis].id.to_s)
|
|
69
|
+
assert(cat_axis_position < val_axis_position, "cat_axis must occur earlier than val_axis in the XML")
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestBarChart < 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::BarChart, :title => "fishery"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def teardown
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_initialization
|
|
16
|
+
assert_equal(@chart.grouping, :clustered, "grouping defualt incorrect")
|
|
17
|
+
assert_equal(@chart.series_type, Axlsx::BarSeries, "series type incorrect")
|
|
18
|
+
assert_equal(@chart.bar_dir, :bar, " bar direction incorrect")
|
|
19
|
+
assert(@chart.cat_axis.is_a?(Axlsx::CatAxis), "category axis not created")
|
|
20
|
+
assert(@chart.val_axis.is_a?(Axlsx::ValAxis), "value access not created")
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_bar_direction
|
|
24
|
+
assert_raise(ArgumentError, "require valid bar direction") { @chart.bar_dir = :left }
|
|
25
|
+
assert_nothing_raised("allow valid bar direction") { @chart.bar_dir = :col }
|
|
26
|
+
assert(@chart.bar_dir == :col)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_grouping
|
|
30
|
+
assert_raise(ArgumentError, "require valid grouping") { @chart.grouping = :inverted }
|
|
31
|
+
assert_nothing_raised("allow valid grouping") { @chart.grouping = :standard }
|
|
32
|
+
assert(@chart.grouping == :standard)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def test_gapWidth
|
|
37
|
+
assert_raise(ArgumentError, "require valid gap width") { @chart.gap_width = 200 }
|
|
38
|
+
assert_nothing_raised("allow valid gapWidth") { @chart.gap_width = "200%" }
|
|
39
|
+
assert(@chart.gap_width == "200%")
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def test_gapDepth
|
|
43
|
+
assert_raise(ArgumentError, "require valid gap_depth") { @chart.gap_depth = 200 }
|
|
44
|
+
assert_nothing_raised("allow valid gap_depth") { @chart.gap_depth = "200%" }
|
|
45
|
+
assert(@chart.gap_depth == "200%")
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_shape
|
|
49
|
+
assert_raise(ArgumentError, "require valid shape") { @chart.shape = :star }
|
|
50
|
+
assert_nothing_raised("allow valid shape") { @chart.shape = :cone }
|
|
51
|
+
assert(@chart.shape == :cone)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_to_xml_string
|
|
55
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
|
56
|
+
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
57
|
+
errors = []
|
|
58
|
+
schema.validate(doc).each do |error|
|
|
59
|
+
errors.push error
|
|
60
|
+
puts error.message
|
|
61
|
+
end
|
|
62
|
+
assert(errors.empty?, "error free validation")
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
def test_to_xml_string_has_axes_in_correct_order
|
|
66
|
+
str = @chart.to_xml_string
|
|
67
|
+
cat_axis_position = str.index(@chart.axes[:cat_axis].id.to_s)
|
|
68
|
+
val_axis_position = str.index(@chart.axes[:val_axis].id.to_s)
|
|
69
|
+
assert(cat_axis_position < val_axis_position, "cat_axis must occur earlier than val_axis in the XML")
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestBarSeries < 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::Bar3DChart, :title => "fishery"
|
|
9
|
+
@series = @chart.add_series :data=>[0,1,2], :labels=>["zero", "one", "two"], :title=>"bob", :colors => ['FF0000', '00FF00', '0000FF'], :shape => :cone
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_initialize
|
|
13
|
+
assert_equal(@series.title.text, "bob", "series title has been applied")
|
|
14
|
+
assert_equal(@series.data.class, Axlsx::NumDataSource, "data option applied")
|
|
15
|
+
assert_equal(@series.shape, :cone, "series shape has been applied")
|
|
16
|
+
assert(@series.data.is_a?(Axlsx::NumDataSource))
|
|
17
|
+
assert(@series.labels.is_a?(Axlsx::AxDataSource))
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def test_colors
|
|
21
|
+
assert_equal(@series.colors.size, 3)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def test_shape
|
|
25
|
+
assert_raise(ArgumentError, "require valid shape") { @series.shape = :teardropt }
|
|
26
|
+
assert_nothing_raised("allow valid shape") { @series.shape = :box }
|
|
27
|
+
assert(@series.shape == :box)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_to_xml_string
|
|
31
|
+
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
32
|
+
@series.colors.each_with_index do |color, index|
|
|
33
|
+
assert_equal(doc.xpath("//c:dPt/c:idx[@val='#{index}']").size,1)
|
|
34
|
+
assert_equal(doc.xpath("//c:dPt/c:spPr/a:solidFill/a:srgbClr[@val='#{@series.colors[index]}']").size,1)
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestBubbleChart < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@p = Axlsx::Package.new
|
|
6
|
+
@chart = nil
|
|
7
|
+
@p.workbook.add_worksheet do |sheet|
|
|
8
|
+
sheet.add_row ["First", 1, 5, 7, 9]
|
|
9
|
+
sheet.add_row ["", 1, 25, 49, 81]
|
|
10
|
+
sheet.add_row ["", 1, 42, 60, 75]
|
|
11
|
+
sheet.add_row ["Second", 5, 2, 14, 9]
|
|
12
|
+
sheet.add_row ["", 5, 10, 15, 20]
|
|
13
|
+
sheet.add_row ["", 5, 28, 92, 13]
|
|
14
|
+
sheet.add_chart(Axlsx::BubbleChart, :title => "example: Bubble Chart") do |chart|
|
|
15
|
+
chart.start_at 0, 4
|
|
16
|
+
chart.end_at 10, 19
|
|
17
|
+
chart.add_series :xData => sheet["B1:E1"], :yData => sheet["B2:E2"], :bubbleSize => sheet["B3:E3"], :title => sheet["A1"]
|
|
18
|
+
chart.add_series :xData => sheet["B4:E4"], :yData => sheet["B5:E5"], :bubbleSize => sheet["B6:E6"], :title => sheet["A3"]
|
|
19
|
+
@chart = chart
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def teardown
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def test_initialization
|
|
28
|
+
assert_equal(@chart.series_type, Axlsx::BubbleSeries, "series type incorrect")
|
|
29
|
+
assert(@chart.xValAxis.is_a?(Axlsx::ValAxis), "independant value axis not created")
|
|
30
|
+
assert(@chart.yValAxis.is_a?(Axlsx::ValAxis), "dependant value axis not created")
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
def test_to_xml_string
|
|
34
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
|
35
|
+
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
36
|
+
errors = []
|
|
37
|
+
schema.validate(doc).each do |error|
|
|
38
|
+
errors.push error
|
|
39
|
+
puts error.message
|
|
40
|
+
end
|
|
41
|
+
assert(errors.empty?, "error free validation")
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestBubbleSeries < 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::BubbleChart, :title => "Bubble Chart"
|
|
9
|
+
@series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9], :bubbleSize=>[1,5,7], :title=>"GDP", :color => 'FF0000'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_initialize
|
|
13
|
+
assert_equal(@series.title.text, "GDP", "series title has been applied")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_to_xml_string
|
|
17
|
+
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
18
|
+
assert_equal(doc.xpath("//a:srgbClr[@val='#{@series.color}']").size,2)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestCatAxis < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@axis = Axlsx::CatAxis.new
|
|
6
|
+
end
|
|
7
|
+
def teardown
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_initialization
|
|
11
|
+
assert_equal(@axis.auto, 1, "axis auto default incorrect")
|
|
12
|
+
assert_equal(@axis.lbl_algn, :ctr, "label align default incorrect")
|
|
13
|
+
assert_equal(@axis.lbl_offset, "100", "label offset default incorrect")
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_auto
|
|
17
|
+
assert_raise(ArgumentError, "requires valid auto") { @axis.auto = :nowhere }
|
|
18
|
+
assert_nothing_raised("accepts valid auto") { @axis.auto = false }
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_lbl_algn
|
|
22
|
+
assert_raise(ArgumentError, "requires valid label alignment") { @axis.lbl_algn = :nowhere }
|
|
23
|
+
assert_nothing_raised("accepts valid label alignment") { @axis.lbl_algn = :r }
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_lbl_offset
|
|
27
|
+
assert_raise(ArgumentError, "requires valid label offset") { @axis.lbl_offset = 'foo' }
|
|
28
|
+
assert_nothing_raised("accepts valid label offset") { @axis.lbl_offset = "20" }
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
# require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
# class TestCatAxisData < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
# def setup
|
|
6
|
+
# p = Axlsx::Package.new
|
|
7
|
+
# @ws = p.workbook.add_worksheet
|
|
8
|
+
# @chart = @ws.drawing.add_chart Axlsx::Bar3DChart
|
|
9
|
+
# @series = @chart.add_series :labels=>["zero", "one", "two"]
|
|
10
|
+
# end
|
|
11
|
+
|
|
12
|
+
# def test_initialize
|
|
13
|
+
# assert(@series.labels.is_a?Axlsx::SimpleTypedList)
|
|
14
|
+
# assert_equal(@series.labels, ["zero", "one", "two"])
|
|
15
|
+
# end
|
|
16
|
+
|
|
17
|
+
# def test_to_xml_string
|
|
18
|
+
# doc = Nokogiri::XML(@chart.to_xml_string)
|
|
19
|
+
# assert_equal(doc.xpath("//c:cat/c:strRef/c:f").size,1)
|
|
20
|
+
# assert_equal(doc.xpath("//c:strCache/c:ptCount[@val='#{@series.labels.size}']").size,1)
|
|
21
|
+
# @series.labels.each_with_index do |label, index|
|
|
22
|
+
# assert_equal(doc.xpath("//c:strCache/c:pt[@idx='#{index}']").size,1)
|
|
23
|
+
# assert_equal(doc.xpath("//c:strCache/c:pt/c:v[text()='#{label}']").size,1)
|
|
24
|
+
# end
|
|
25
|
+
# end
|
|
26
|
+
|
|
27
|
+
# end
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestChart < 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::Bar3DChart, :title => "fishery", :bg_color => "000000"
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def teardown
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def test_initialization
|
|
16
|
+
assert_equal(@p.workbook.charts.last,@chart, "the chart is in the workbook")
|
|
17
|
+
assert_equal(@chart.title.text, "fishery", "the title option has been applied")
|
|
18
|
+
assert((@chart.series.is_a?(Axlsx::SimpleTypedList) && @chart.series.empty?), "The series is initialized and empty")
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_title
|
|
22
|
+
@chart.title.text = 'wowzer'
|
|
23
|
+
assert_equal(@chart.title.text, "wowzer", "the title text via a string")
|
|
24
|
+
assert_equal(@chart.title.cell, nil, "the title cell is nil as we set the title with text.")
|
|
25
|
+
@chart.title = @row.cells.first
|
|
26
|
+
assert_equal(@chart.title.text, "one", "the title text was set via cell reference")
|
|
27
|
+
assert_equal(@chart.title.cell, @row.cells.first)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def test_style
|
|
31
|
+
assert_raise(ArgumentError) { @chart.style = 49 }
|
|
32
|
+
assert_nothing_raised { @chart.style = 2 }
|
|
33
|
+
assert_equal(@chart.style, 2)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def test_to_from_marker_access
|
|
37
|
+
assert(@chart.to.is_a?(Axlsx::Marker))
|
|
38
|
+
assert(@chart.from.is_a?(Axlsx::Marker))
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_bg_color
|
|
42
|
+
assert_raise(ArgumentError) { @chart.bg_color = 2 }
|
|
43
|
+
assert_nothing_raised { @chart.bg_color = "FFFFFF" }
|
|
44
|
+
assert_equal(@chart.bg_color, "FFFFFF")
|
|
45
|
+
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_title_size
|
|
49
|
+
assert_raise(ArgumentError) { @chart.title_size = 2 }
|
|
50
|
+
assert_nothing_raised { @chart.title_size = "100" }
|
|
51
|
+
assert_equal(@chart.title.text_size, "100")
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
def test_vary_colors
|
|
55
|
+
assert_equal(true, @chart.vary_colors)
|
|
56
|
+
assert_raise(ArgumentError) { @chart.vary_colors = 7 }
|
|
57
|
+
assert_nothing_raised { @chart.vary_colors = false }
|
|
58
|
+
assert_equal(false, @chart.vary_colors)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def test_display_blanks_as
|
|
62
|
+
assert_equal(:gap, @chart.display_blanks_as, "default is not :gap")
|
|
63
|
+
assert_raise(ArgumentError, "did not validate possible values") { @chart.display_blanks_as = :hole }
|
|
64
|
+
assert_nothing_raised { @chart.display_blanks_as = :zero }
|
|
65
|
+
assert_nothing_raised { @chart.display_blanks_as = :span }
|
|
66
|
+
assert_equal(:span, @chart.display_blanks_as)
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def test_start_at
|
|
70
|
+
@chart.start_at 15, 25
|
|
71
|
+
assert_equal(@chart.graphic_frame.anchor.from.col, 15)
|
|
72
|
+
assert_equal(@chart.graphic_frame.anchor.from.row, 25)
|
|
73
|
+
@chart.start_at @row.cells.first
|
|
74
|
+
assert_equal(@chart.graphic_frame.anchor.from.col, 0)
|
|
75
|
+
assert_equal(@chart.graphic_frame.anchor.from.row, 0)
|
|
76
|
+
@chart.start_at [5,6]
|
|
77
|
+
assert_equal(@chart.graphic_frame.anchor.from.col, 5)
|
|
78
|
+
assert_equal(@chart.graphic_frame.anchor.from.row, 6)
|
|
79
|
+
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def test_end_at
|
|
83
|
+
@chart.end_at 25, 90
|
|
84
|
+
assert_equal(@chart.graphic_frame.anchor.to.col, 25)
|
|
85
|
+
assert_equal(@chart.graphic_frame.anchor.to.row, 90)
|
|
86
|
+
@chart.end_at @row.cells.last
|
|
87
|
+
assert_equal(@chart.graphic_frame.anchor.to.col, 2)
|
|
88
|
+
assert_equal(@chart.graphic_frame.anchor.to.row, 0)
|
|
89
|
+
@chart.end_at [10,11]
|
|
90
|
+
assert_equal(@chart.graphic_frame.anchor.to.col, 10)
|
|
91
|
+
assert_equal(@chart.graphic_frame.anchor.to.row, 11)
|
|
92
|
+
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
def test_add_series
|
|
96
|
+
s = @chart.add_series :data=>[0,1,2,3], :labels => ["one", 1, "anything"], :title=>"bob"
|
|
97
|
+
assert_equal(@chart.series.last, s, "series has been added to chart series collection")
|
|
98
|
+
assert_equal(s.title.text, "bob", "series title has been applied")
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
def test_pn
|
|
102
|
+
assert_equal(@chart.pn, "charts/chart1.xml")
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def test_d_lbls
|
|
106
|
+
assert_equal(nil, @chart.instance_values[:d_lbls])
|
|
107
|
+
@chart.d_lbls.d_lbl_pos = :t
|
|
108
|
+
assert(@chart.d_lbls.is_a?(Axlsx::DLbls), 'DLbls instantiated on access')
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
def test_to_xml_string
|
|
112
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
|
113
|
+
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
114
|
+
errors = schema.validate(doc).map { |error| puts error.message; error }
|
|
115
|
+
assert(errors.empty?, "error free validation")
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
def test_to_xml_string_for_display_blanks_as
|
|
119
|
+
@chart.display_blanks_as = :span
|
|
120
|
+
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
121
|
+
assert_equal("span", doc.xpath("//c:dispBlanksAs").attr("val").value, "did not use the display_blanks_as configuration")
|
|
122
|
+
end
|
|
123
|
+
end
|