caxlsx 2.0.2
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 +239 -0
- data/LICENSE +22 -0
- data/README.md +256 -0
- data/Rakefile +31 -0
- data/examples/2010_comments.rb +17 -0
- data/examples/anchor_swapping.rb +28 -0
- data/examples/auto_filter.rb +16 -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 +74 -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 +50 -0
- data/examples/example.rb +777 -0
- data/examples/extractive.rb +45 -0
- data/examples/image1.jpeg +0 -0
- data/examples/ios_preview.rb +14 -0
- data/examples/page_setup.rb +11 -0
- data/examples/pivot_table.rb +39 -0
- data/examples/sheet_protection.rb +10 -0
- data/examples/skydrive/real_example.rb +63 -0
- data/examples/styles.rb +66 -0
- data/examples/underline.rb +13 -0
- data/examples/wrap_text.rb +21 -0
- data/lib/axlsx.rb +152 -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/ax_data_source.rb +26 -0
- data/lib/axlsx/drawing/axes.rb +61 -0
- data/lib/axlsx/drawing/axis.rb +187 -0
- data/lib/axlsx/drawing/bar_3D_chart.rb +151 -0
- data/lib/axlsx/drawing/bar_series.rb +82 -0
- data/lib/axlsx/drawing/cat_axis.rb +85 -0
- data/lib/axlsx/drawing/chart.rb +232 -0
- data/lib/axlsx/drawing/d_lbls.rb +90 -0
- data/lib/axlsx/drawing/drawing.rb +162 -0
- data/lib/axlsx/drawing/graphic_frame.rb +54 -0
- data/lib/axlsx/drawing/hyperlink.rb +102 -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 +81 -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 +32 -0
- data/lib/axlsx/drawing/one_cell_anchor.rb +98 -0
- data/lib/axlsx/drawing/pic.rb +205 -0
- data/lib/axlsx/drawing/picture_locking.rb +44 -0
- data/lib/axlsx/drawing/pie_3D_chart.rb +48 -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 +65 -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 +32 -0
- data/lib/axlsx/drawing/title.rb +78 -0
- data/lib/axlsx/drawing/two_cell_anchor.rb +92 -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 +352 -0
- data/lib/axlsx/rels/relationship.rb +129 -0
- data/lib/axlsx/rels/relationships.rb +29 -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 +134 -0
- data/lib/axlsx/stylesheet/cell_protection.rb +43 -0
- data/lib/axlsx/stylesheet/cell_style.rb +74 -0
- data/lib/axlsx/stylesheet/color.rb +78 -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 +79 -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 +79 -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 +392 -0
- data/lib/axlsx/util/options_parser.rb +15 -0
- data/lib/axlsx/util/parser.rb +44 -0
- data/lib/axlsx/util/serialized_attributes.rb +79 -0
- data/lib/axlsx/util/simple_typed_list.rb +203 -0
- data/lib/axlsx/util/storage.rb +146 -0
- data/lib/axlsx/util/validators.rb +300 -0
- data/lib/axlsx/version.rb +5 -0
- data/lib/axlsx/workbook/defined_name.rb +129 -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 +354 -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 +246 -0
- data/lib/axlsx/workbook/worksheet/break.rb +37 -0
- data/lib/axlsx/workbook/worksheet/cell.rb +416 -0
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +144 -0
- data/lib/axlsx/workbook/worksheet/cfvo.rb +62 -0
- data/lib/axlsx/workbook/worksheet/cfvos.rb +15 -0
- data/lib/axlsx/workbook/worksheet/col.rb +144 -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 +20 -0
- data/lib/axlsx/workbook/worksheet/comment.rb +92 -0
- data/lib/axlsx/workbook/worksheet/comments.rb +85 -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 +131 -0
- data/lib/axlsx/workbook/worksheet/data_validation.rb +244 -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 +54 -0
- data/lib/axlsx/workbook/worksheet/icon_set.rb +83 -0
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +35 -0
- data/lib/axlsx/workbook/worksheet/page_margins.rb +99 -0
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -0
- data/lib/axlsx/workbook/worksheet/page_setup.rb +242 -0
- data/lib/axlsx/workbook/worksheet/pane.rb +141 -0
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +273 -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 +41 -0
- data/lib/axlsx/workbook/worksheet/protected_range.rb +49 -0
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +34 -0
- data/lib/axlsx/workbook/worksheet/row.rb +172 -0
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -0
- data/lib/axlsx/workbook/worksheet/selection.rb +103 -0
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -0
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +25 -0
- data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +60 -0
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +69 -0
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +120 -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 +51 -0
- data/lib/axlsx/workbook/worksheet/tables.rb +31 -0
- data/lib/axlsx/workbook/worksheet/worksheet.rb +769 -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_axes.rb +8 -0
- data/test/drawing/tc_axis.rb +85 -0
- data/test/drawing/tc_bar_3D_chart.rb +71 -0
- data/test/drawing/tc_bar_series.rb +37 -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 +110 -0
- data/test/drawing/tc_d_lbls.rb +57 -0
- data/test/drawing/tc_data_source.rb +17 -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 +30 -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 +107 -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 +21 -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 +21 -0
- data/test/drawing/tc_title.rb +49 -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 +72 -0
- data/test/tc_helper.rb +10 -0
- data/test/tc_package.rb +227 -0
- data/test/util/tc_serialized_attributes.rb +19 -0
- data/test/util/tc_simple_typed_list.rb +78 -0
- data/test/util/tc_validators.rb +186 -0
- data/test/workbook/tc_defined_name.rb +41 -0
- data/test/workbook/tc_shared_strings_table.rb +44 -0
- data/test/workbook/tc_workbook.rb +125 -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 +319 -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_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 +120 -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_row.rb +117 -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 +27 -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 +68 -0
- data/test/workbook/worksheet/tc_table_style_info.rb +53 -0
- data/test/workbook/worksheet/tc_worksheet.rb +538 -0
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -0
- metadata +546 -0
|
@@ -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,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,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,110 @@
|
|
|
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"
|
|
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_to_from_marker_access
|
|
31
|
+
assert(@chart.to.is_a?(Axlsx::Marker))
|
|
32
|
+
assert(@chart.from.is_a?(Axlsx::Marker))
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_style
|
|
36
|
+
assert_raise(ArgumentError) { @chart.style = 49 }
|
|
37
|
+
assert_nothing_raised { @chart.style = 2 }
|
|
38
|
+
assert_equal(@chart.style, 2)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_vary_colors
|
|
42
|
+
assert_equal(true, @chart.vary_colors)
|
|
43
|
+
assert_raise(ArgumentError) { @chart.vary_colors = 7 }
|
|
44
|
+
assert_nothing_raised { @chart.vary_colors = false }
|
|
45
|
+
assert_equal(false, @chart.vary_colors)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def test_display_blanks_as
|
|
49
|
+
assert_equal(:gap, @chart.display_blanks_as, "default is not :gap")
|
|
50
|
+
assert_raise(ArgumentError, "did not validate possible values") { @chart.display_blanks_as = :hole }
|
|
51
|
+
assert_nothing_raised { @chart.display_blanks_as = :zero }
|
|
52
|
+
assert_nothing_raised { @chart.display_blanks_as = :span }
|
|
53
|
+
assert_equal(:span, @chart.display_blanks_as)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def test_start_at
|
|
57
|
+
@chart.start_at 15, 25
|
|
58
|
+
assert_equal(@chart.graphic_frame.anchor.from.col, 15)
|
|
59
|
+
assert_equal(@chart.graphic_frame.anchor.from.row, 25)
|
|
60
|
+
@chart.start_at @row.cells.first
|
|
61
|
+
assert_equal(@chart.graphic_frame.anchor.from.col, 0)
|
|
62
|
+
assert_equal(@chart.graphic_frame.anchor.from.row, 0)
|
|
63
|
+
@chart.start_at [5,6]
|
|
64
|
+
assert_equal(@chart.graphic_frame.anchor.from.col, 5)
|
|
65
|
+
assert_equal(@chart.graphic_frame.anchor.from.row, 6)
|
|
66
|
+
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def test_end_at
|
|
70
|
+
@chart.end_at 25, 90
|
|
71
|
+
assert_equal(@chart.graphic_frame.anchor.to.col, 25)
|
|
72
|
+
assert_equal(@chart.graphic_frame.anchor.to.row, 90)
|
|
73
|
+
@chart.end_at @row.cells.last
|
|
74
|
+
assert_equal(@chart.graphic_frame.anchor.to.col, 2)
|
|
75
|
+
assert_equal(@chart.graphic_frame.anchor.to.row, 0)
|
|
76
|
+
@chart.end_at [10,11]
|
|
77
|
+
assert_equal(@chart.graphic_frame.anchor.to.col, 10)
|
|
78
|
+
assert_equal(@chart.graphic_frame.anchor.to.row, 11)
|
|
79
|
+
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def test_add_series
|
|
83
|
+
s = @chart.add_series :data=>[0,1,2,3], :labels => ["one", 1, "anything"], :title=>"bob"
|
|
84
|
+
assert_equal(@chart.series.last, s, "series has been added to chart series collection")
|
|
85
|
+
assert_equal(s.title.text, "bob", "series title has been applied")
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def test_pn
|
|
89
|
+
assert_equal(@chart.pn, "charts/chart1.xml")
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
def test_d_lbls
|
|
93
|
+
assert_equal(nil, @chart.instance_values[:d_lbls])
|
|
94
|
+
@chart.d_lbls.d_lbl_pos = :t
|
|
95
|
+
assert(@chart.d_lbls.is_a?(Axlsx::DLbls), 'DLbls instantiated on access')
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def test_to_xml_string
|
|
99
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
|
100
|
+
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
101
|
+
errors = schema.validate(doc).map { |error| puts error.message; error }
|
|
102
|
+
assert(errors.empty?, "error free validation")
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
def test_to_xml_string_for_display_blanks_as
|
|
106
|
+
@chart.display_blanks_as = :span
|
|
107
|
+
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
108
|
+
assert_equal("span", doc.xpath("//c:dispBlanksAs").attr("val").value, "did not use the display_blanks_as configuration")
|
|
109
|
+
end
|
|
110
|
+
end
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
require 'tc_helper'
|
|
2
|
+
|
|
3
|
+
class TestDLbls < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@d_lbls = Axlsx::DLbls.new(Axlsx::Pie3DChart)
|
|
7
|
+
@boolean_attributes =[:show_legend_key,
|
|
8
|
+
:show_val,
|
|
9
|
+
:show_cat_name,
|
|
10
|
+
:show_ser_name,
|
|
11
|
+
:show_percent,
|
|
12
|
+
:show_bubble_size,
|
|
13
|
+
:show_leader_lines]
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_initialization
|
|
17
|
+
assert_equal(:bestFit, @d_lbls.d_lbl_pos)
|
|
18
|
+
@boolean_attributes.each do |attr|
|
|
19
|
+
assert_equal(false, @d_lbls.send(attr))
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_initialization_with_optoins
|
|
24
|
+
|
|
25
|
+
options_hash = Hash[*[@boolean_attributes.map { |name| [name, true] }] ]
|
|
26
|
+
|
|
27
|
+
d_lbls = Axlsx::DLbls.new(Axlsx::Pie3DChart, options_hash.merge( { :d_lbl_pos => :t }))
|
|
28
|
+
|
|
29
|
+
@boolean_attributes.each do |attr|
|
|
30
|
+
assert_equal(true, d_lbls.send(attr), "boolean attributes set by options")
|
|
31
|
+
end
|
|
32
|
+
assert_equal(:t, d_lbls.d_lbl_pos, "d_lbl_pos set by options")
|
|
33
|
+
end
|
|
34
|
+
def test_d_lbl_pos
|
|
35
|
+
assert_raise(ArgumentError, 'invlaid label positions are rejected') { @d_lbls.d_lbl_pos = :upside_down }
|
|
36
|
+
assert_nothing_raised('accepts valid label position') { @d_lbls.d_lbl_pos = :ctr }
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_boolean_attributes
|
|
40
|
+
@boolean_attributes.each do |attr|
|
|
41
|
+
assert_raise(ArgumentError, "rejects non boolean value for #{attr}") { @d_lbls.send("#{attr}=", :foo) }
|
|
42
|
+
assert_nothing_raised("accepts boolean value for #{attr}") { @d_lbls.send("#{attr}=", true) }
|
|
43
|
+
assert_nothing_raised("accepts boolean value for #{attr}") { @d_lbls.send("#{attr}=", false) }
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def test_to_xml_string
|
|
48
|
+
str = '<?xml version="1.0" encoding="UTF-8"?>'
|
|
49
|
+
str << '<c:chartSpace xmlns:c="' << Axlsx::XML_NS_C << '" xmlns:a="' << Axlsx::XML_NS_A << '" xmlns:r="' << Axlsx::XML_NS_R << '">'
|
|
50
|
+
@d_lbls.to_xml_string(str)
|
|
51
|
+
str << '</c:chartSpace>'
|
|
52
|
+
doc = Nokogiri::XML(str)
|
|
53
|
+
@d_lbls.instance_values.each do |name, value|
|
|
54
|
+
assert(doc.xpath("//c:#{Axlsx::camel(name, false)}[@val='#{value}']"), "#{name} is properly serialized")
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestNumDataSource < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@data_source = Axlsx::NumDataSource.new :data => ["1", "2", "3"]
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_to_xml_string_strLit
|
|
10
|
+
str = '<?xml version="1.0" encoding="UTF-8"?>'
|
|
11
|
+
str << '<c:chartSpace xmlns:c="' << Axlsx::XML_NS_C << '">'
|
|
12
|
+
str << @data_source.to_xml_string
|
|
13
|
+
doc = Nokogiri::XML(str)
|
|
14
|
+
assert_equal(doc.xpath("//c:val").size, 1)
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
end
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestDrawing < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
p = Axlsx::Package.new
|
|
6
|
+
@ws = p.workbook.add_worksheet
|
|
7
|
+
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def test_initialization
|
|
11
|
+
assert(@ws.workbook.drawings.empty?)
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_add_chart
|
|
15
|
+
chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"bob", :start_at=>[0,0], :end_at=>[1,1])
|
|
16
|
+
assert(chart.is_a?(Axlsx::Pie3DChart), "must create a chart")
|
|
17
|
+
assert_equal(@ws.workbook.charts.last, chart, "must be added to workbook charts collection")
|
|
18
|
+
assert_equal(@ws.drawing.anchors.last.object.chart, chart, "an anchor has been created and holds a reference to this chart")
|
|
19
|
+
anchor = @ws.drawing.anchors.last
|
|
20
|
+
assert_equal([anchor.from.row, anchor.from.col], [0,0], "options for start at are applied")
|
|
21
|
+
assert_equal([anchor.to.row, anchor.to.col], [1,1], "options for start at are applied")
|
|
22
|
+
assert_equal(chart.title.text, "bob", "option for title is applied")
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_add_image
|
|
26
|
+
src = File.dirname(__FILE__) + "/../../examples/image1.jpeg"
|
|
27
|
+
image = @ws.add_image(:image_src => src, :start_at=>[0,0], :width=>600, :height=>400)
|
|
28
|
+
assert(@ws.drawing.anchors.last.is_a?(Axlsx::OneCellAnchor))
|
|
29
|
+
assert(image.is_a?(Axlsx::Pic))
|
|
30
|
+
assert_equal(600, image.width)
|
|
31
|
+
assert_equal(400, image.height)
|
|
32
|
+
end
|
|
33
|
+
def test_add_two_cell_anchor_image
|
|
34
|
+
src = File.dirname(__FILE__) + "/../../examples/image1.jpeg"
|
|
35
|
+
image = @ws.add_image(:image_src => src, :start_at=>[0,0], :end_at => [15,0])
|
|
36
|
+
assert(@ws.drawing.anchors.last.is_a?(Axlsx::TwoCellAnchor))
|
|
37
|
+
assert(image.is_a?(Axlsx::Pic))
|
|
38
|
+
end
|
|
39
|
+
def test_charts
|
|
40
|
+
chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"bob", :start_at=>[0,0], :end_at=>[1,1])
|
|
41
|
+
assert_equal(@ws.drawing.charts.last, chart, "add chart is returned")
|
|
42
|
+
chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"nancy", :start_at=>[1,5], :end_at=>[5,10])
|
|
43
|
+
assert_equal(@ws.drawing.charts.last, chart, "add chart is returned")
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_pn
|
|
47
|
+
@ws.add_chart(Axlsx::Pie3DChart)
|
|
48
|
+
assert_equal(@ws.drawing.pn, "drawings/drawing1.xml")
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def test_rels_pn
|
|
52
|
+
@ws.add_chart(Axlsx::Pie3DChart)
|
|
53
|
+
assert_equal(@ws.drawing.rels_pn, "drawings/_rels/drawing1.xml.rels")
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def test_index
|
|
57
|
+
@ws.add_chart(Axlsx::Pie3DChart)
|
|
58
|
+
assert_equal(@ws.drawing.index, @ws.workbook.drawings.index(@ws.drawing))
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def test_relationships
|
|
62
|
+
chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"bob", :start_at=>[0,0], :end_at=>[1,1])
|
|
63
|
+
assert_equal(@ws.drawing.relationships.size, 1, "adding a chart adds a relationship")
|
|
64
|
+
chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"nancy", :start_at=>[1,5], :end_at=>[5,10])
|
|
65
|
+
assert_equal(@ws.drawing.relationships.size, 2, "adding a chart adds a relationship")
|
|
66
|
+
end
|
|
67
|
+
|
|
68
|
+
def test_to_xml
|
|
69
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
|
70
|
+
@ws.add_chart(Axlsx::Pie3DChart)
|
|
71
|
+
doc = Nokogiri::XML(@ws.drawing.to_xml_string)
|
|
72
|
+
errors = []
|
|
73
|
+
schema.validate(doc).each do |error|
|
|
74
|
+
errors.push error
|
|
75
|
+
puts error.message
|
|
76
|
+
end
|
|
77
|
+
assert(errors.empty?, "error free validation")
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
end
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestGraphicFrame < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
p = Axlsx::Package.new
|
|
6
|
+
@ws = p.workbook.add_worksheet
|
|
7
|
+
@chart = @ws.add_chart Axlsx::Chart
|
|
8
|
+
@frame = @chart.graphic_frame
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def teardown
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_initialization
|
|
15
|
+
assert(@frame.anchor.is_a?(Axlsx::TwoCellAnchor))
|
|
16
|
+
assert_equal(@frame.chart, @chart)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_rId
|
|
20
|
+
assert_equal @ws.drawing.relationships.for(@chart).Id, @frame.rId
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def test_to_xml_has_correct_rId
|
|
24
|
+
doc = Nokogiri::XML(@frame.to_xml_string)
|
|
25
|
+
assert_equal @frame.rId, doc.xpath("//c:chart", doc.collect_namespaces).first["r:id"]
|
|
26
|
+
end
|
|
27
|
+
end
|