caxlsx 3.2.0 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +9 -9
- data/.yardopts_guide +18 -18
- data/CHANGELOG.md +394 -354
- data/LICENSE +21 -21
- data/README.md +184 -168
- data/Rakefile +28 -29
- data/examples/generate.rb +15 -15
- data/lib/axlsx/content_type/abstract_content_type.rb +29 -32
- data/lib/axlsx/content_type/content_type.rb +22 -26
- data/lib/axlsx/content_type/default.rb +21 -25
- data/lib/axlsx/content_type/override.rb +21 -25
- data/lib/axlsx/doc_props/app.rb +230 -235
- data/lib/axlsx/doc_props/core.rb +34 -39
- data/lib/axlsx/drawing/area_chart.rb +96 -99
- data/lib/axlsx/drawing/area_series.rb +107 -110
- data/lib/axlsx/drawing/ax_data_source.rb +21 -26
- data/lib/axlsx/drawing/axes.rb +60 -61
- data/lib/axlsx/drawing/axis.rb +185 -190
- data/lib/axlsx/drawing/bar_3D_chart.rb +145 -148
- data/lib/axlsx/drawing/bar_chart.rb +135 -138
- data/lib/axlsx/drawing/bar_series.rb +91 -97
- data/lib/axlsx/drawing/bubble_chart.rb +56 -59
- data/lib/axlsx/drawing/bubble_series.rb +60 -63
- data/lib/axlsx/drawing/cat_axis.rb +80 -85
- data/lib/axlsx/drawing/chart.rb +294 -276
- data/lib/axlsx/drawing/d_lbls.rb +92 -90
- data/lib/axlsx/drawing/drawing.rb +163 -167
- data/lib/axlsx/drawing/graphic_frame.rb +51 -54
- data/lib/axlsx/drawing/hyperlink.rb +97 -100
- data/lib/axlsx/drawing/line_3D_chart.rb +64 -68
- data/lib/axlsx/drawing/line_chart.rb +96 -99
- data/lib/axlsx/drawing/line_series.rb +107 -110
- data/lib/axlsx/drawing/marker.rb +80 -84
- data/lib/axlsx/drawing/num_data.rb +47 -52
- data/lib/axlsx/drawing/num_data_source.rb +58 -62
- data/lib/axlsx/drawing/num_val.rb +31 -34
- data/lib/axlsx/drawing/one_cell_anchor.rb +97 -99
- data/lib/axlsx/drawing/pic.rb +244 -211
- data/lib/axlsx/drawing/picture_locking.rb +39 -42
- data/lib/axlsx/drawing/pie_3D_chart.rb +42 -47
- data/lib/axlsx/drawing/pie_series.rb +69 -74
- data/lib/axlsx/drawing/scaling.rb +57 -60
- data/lib/axlsx/drawing/scatter_chart.rb +71 -74
- data/lib/axlsx/drawing/scatter_series.rb +126 -129
- data/lib/axlsx/drawing/ser_axis.rb +41 -45
- data/lib/axlsx/drawing/series.rb +67 -69
- data/lib/axlsx/drawing/series_title.rb +23 -25
- data/lib/axlsx/drawing/str_data.rb +37 -42
- data/lib/axlsx/drawing/str_val.rb +31 -34
- data/lib/axlsx/drawing/title.rb +104 -97
- data/lib/axlsx/drawing/two_cell_anchor.rb +95 -97
- data/lib/axlsx/drawing/val_axis.rb +34 -37
- data/lib/axlsx/drawing/view_3D.rb +115 -115
- data/lib/axlsx/drawing/vml_drawing.rb +39 -42
- data/lib/axlsx/drawing/vml_shape.rb +63 -66
- data/lib/axlsx/package.rb +397 -388
- data/lib/axlsx/rels/relationship.rb +127 -130
- data/lib/axlsx/rels/relationships.rb +29 -32
- data/lib/axlsx/stylesheet/border.rb +70 -73
- data/lib/axlsx/stylesheet/border_pr.rb +69 -71
- data/lib/axlsx/stylesheet/cell_alignment.rb +124 -132
- data/lib/axlsx/stylesheet/cell_protection.rb +38 -41
- data/lib/axlsx/stylesheet/cell_style.rb +68 -72
- data/lib/axlsx/stylesheet/color.rb +77 -76
- data/lib/axlsx/stylesheet/dxf.rb +75 -79
- data/lib/axlsx/stylesheet/fill.rb +31 -35
- data/lib/axlsx/stylesheet/font.rb +157 -156
- data/lib/axlsx/stylesheet/gradient_fill.rb +101 -103
- data/lib/axlsx/stylesheet/gradient_stop.rb +36 -37
- data/lib/axlsx/stylesheet/num_fmt.rb +83 -86
- data/lib/axlsx/stylesheet/pattern_fill.rb +71 -73
- data/lib/axlsx/stylesheet/styles.rb +543 -494
- data/lib/axlsx/stylesheet/table_style.rb +51 -54
- data/lib/axlsx/stylesheet/table_style_element.rb +74 -77
- data/lib/axlsx/stylesheet/table_styles.rb +42 -46
- data/lib/axlsx/stylesheet/xf.rb +144 -147
- data/lib/axlsx/util/accessors.rb +62 -64
- data/lib/axlsx/util/constants.rb +414 -410
- data/lib/axlsx/util/mime_type_utils.rb +24 -11
- data/lib/axlsx/util/options_parser.rb +15 -16
- data/lib/axlsx/util/serialized_attributes.rb +88 -89
- data/lib/axlsx/util/simple_typed_list.rb +180 -179
- data/lib/axlsx/util/storage.rb +142 -146
- data/lib/axlsx/util/validators.rb +315 -312
- data/lib/axlsx/util/zip_command.rb +71 -73
- data/lib/axlsx/version.rb +4 -5
- data/lib/axlsx/workbook/defined_name.rb +129 -128
- data/lib/axlsx/workbook/defined_names.rb +20 -21
- data/lib/axlsx/workbook/shared_strings_table.rb +74 -77
- data/lib/axlsx/workbook/workbook.rb +430 -395
- data/lib/axlsx/workbook/workbook_view.rb +75 -80
- data/lib/axlsx/workbook/workbook_views.rb +20 -22
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +78 -77
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +243 -244
- data/lib/axlsx/workbook/worksheet/border_creator.rb +79 -0
- data/lib/axlsx/workbook/worksheet/break.rb +32 -35
- data/lib/axlsx/workbook/worksheet/cell.rb +552 -506
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
- data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
- data/lib/axlsx/workbook/worksheet/cfvos.rb +16 -18
- data/lib/axlsx/workbook/worksheet/col.rb +142 -145
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +34 -35
- data/lib/axlsx/workbook/worksheet/color_scale.rb +108 -110
- data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
- data/lib/axlsx/workbook/worksheet/comment.rb +90 -91
- data/lib/axlsx/workbook/worksheet/comments.rb +78 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +81 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +216 -220
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +23 -25
- data/lib/axlsx/workbook/worksheet/data_bar.rb +127 -129
- data/lib/axlsx/workbook/worksheet/data_validation.rb +266 -246
- data/lib/axlsx/workbook/worksheet/data_validations.rb +25 -28
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +28 -30
- data/lib/axlsx/workbook/worksheet/dimension.rb +65 -64
- data/lib/axlsx/workbook/worksheet/header_footer.rb +51 -52
- data/lib/axlsx/workbook/worksheet/icon_set.rb +80 -81
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
- data/lib/axlsx/workbook/worksheet/outline_pr.rb +32 -33
- data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +42 -44
- data/lib/axlsx/workbook/worksheet/page_setup.rb +237 -240
- data/lib/axlsx/workbook/worksheet/pane.rb +138 -139
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +332 -296
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +63 -66
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +23 -24
- data/lib/axlsx/workbook/worksheet/print_options.rb +38 -39
- data/lib/axlsx/workbook/worksheet/protected_range.rb +46 -47
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
- data/lib/axlsx/workbook/worksheet/rich_text.rb +53 -55
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +266 -250
- data/lib/axlsx/workbook/worksheet/row.rb +173 -164
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +32 -33
- data/lib/axlsx/workbook/worksheet/selection.rb +99 -101
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +28 -29
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +25 -27
- data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +18 -18
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +117 -118
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +206 -213
- data/lib/axlsx/workbook/worksheet/table.rb +100 -102
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +48 -49
- data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
- data/lib/axlsx/workbook/worksheet/worksheet.rb +857 -786
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +59 -58
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +73 -74
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
- data/lib/axlsx.rb +218 -185
- data/lib/caxlsx.rb +1 -2
- data/lib/schema/dc.xsd +118 -118
- data/lib/schema/dcmitype.xsd +51 -51
- data/lib/schema/dcterms.xsd +331 -331
- data/lib/schema/dml-chartDrawing.xsd +146 -146
- data/lib/schema/dml-compatibility.xsd +14 -14
- data/lib/schema/dml-lockedCanvas.xsd +11 -11
- data/lib/schema/dml-main.xsd +3048 -3048
- data/lib/schema/dml-picture.xsd +23 -23
- data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
- data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
- data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
- data/lib/schema/shared-bibliography.xsd +144 -144
- data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
- data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
- data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
- data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
- data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
- data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
- data/lib/schema/shared-relationshipReference.xsd +25 -25
- data/lib/schema/vml-main.xsd +569 -569
- data/lib/schema/vml-officeDrawing.xsd +509 -509
- data/lib/schema/vml-presentationDrawing.xsd +12 -12
- data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
- data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
- data/lib/schema/xml.xsd +116 -116
- metadata +5 -252
- data/test/benchmark.rb +0 -72
- data/test/content_type/tc_content_type.rb +0 -76
- data/test/content_type/tc_default.rb +0 -16
- data/test/content_type/tc_override.rb +0 -14
- data/test/doc_props/tc_app.rb +0 -43
- data/test/doc_props/tc_core.rb +0 -42
- data/test/drawing/tc_area_chart.rb +0 -39
- data/test/drawing/tc_area_series.rb +0 -71
- data/test/drawing/tc_axes.rb +0 -8
- data/test/drawing/tc_axis.rb +0 -112
- data/test/drawing/tc_bar_3D_chart.rb +0 -86
- data/test/drawing/tc_bar_chart.rb +0 -86
- data/test/drawing/tc_bar_series.rb +0 -46
- data/test/drawing/tc_bubble_chart.rb +0 -44
- data/test/drawing/tc_bubble_series.rb +0 -21
- data/test/drawing/tc_cat_axis.rb +0 -31
- data/test/drawing/tc_cat_axis_data.rb +0 -27
- data/test/drawing/tc_chart.rb +0 -123
- data/test/drawing/tc_d_lbls.rb +0 -57
- data/test/drawing/tc_data_source.rb +0 -23
- data/test/drawing/tc_drawing.rb +0 -80
- data/test/drawing/tc_graphic_frame.rb +0 -27
- data/test/drawing/tc_hyperlink.rb +0 -64
- data/test/drawing/tc_line_3d_chart.rb +0 -47
- data/test/drawing/tc_line_chart.rb +0 -39
- data/test/drawing/tc_line_series.rb +0 -71
- data/test/drawing/tc_marker.rb +0 -44
- data/test/drawing/tc_named_axis_data.rb +0 -27
- data/test/drawing/tc_num_data.rb +0 -31
- data/test/drawing/tc_num_val.rb +0 -29
- data/test/drawing/tc_one_cell_anchor.rb +0 -66
- data/test/drawing/tc_pic.rb +0 -103
- data/test/drawing/tc_picture_locking.rb +0 -72
- data/test/drawing/tc_pie_3D_chart.rb +0 -28
- data/test/drawing/tc_pie_series.rb +0 -33
- data/test/drawing/tc_scaling.rb +0 -36
- data/test/drawing/tc_scatter_chart.rb +0 -48
- data/test/drawing/tc_scatter_series.rb +0 -74
- data/test/drawing/tc_ser_axis.rb +0 -31
- data/test/drawing/tc_series.rb +0 -23
- data/test/drawing/tc_series_title.rb +0 -54
- data/test/drawing/tc_str_data.rb +0 -18
- data/test/drawing/tc_str_val.rb +0 -30
- data/test/drawing/tc_title.rb +0 -70
- data/test/drawing/tc_two_cell_anchor.rb +0 -36
- data/test/drawing/tc_val_axis.rb +0 -24
- data/test/drawing/tc_view_3D.rb +0 -54
- data/test/drawing/tc_vml_drawing.rb +0 -25
- data/test/drawing/tc_vml_shape.rb +0 -106
- data/test/fixtures/image1.gif +0 -0
- data/test/fixtures/image1.jpeg +0 -0
- data/test/fixtures/image1.jpg +0 -0
- data/test/fixtures/image1.png +0 -0
- data/test/fixtures/image1_fake.jpg +0 -0
- data/test/profile.rb +0 -24
- data/test/rels/tc_relationship.rb +0 -52
- data/test/rels/tc_relationships.rb +0 -37
- data/test/stylesheet/tc_border.rb +0 -37
- data/test/stylesheet/tc_border_pr.rb +0 -32
- data/test/stylesheet/tc_cell_alignment.rb +0 -81
- data/test/stylesheet/tc_cell_protection.rb +0 -29
- data/test/stylesheet/tc_cell_style.rb +0 -57
- data/test/stylesheet/tc_color.rb +0 -43
- data/test/stylesheet/tc_dxf.rb +0 -81
- data/test/stylesheet/tc_fill.rb +0 -18
- data/test/stylesheet/tc_font.rb +0 -133
- data/test/stylesheet/tc_gradient_fill.rb +0 -72
- data/test/stylesheet/tc_gradient_stop.rb +0 -31
- data/test/stylesheet/tc_num_fmt.rb +0 -30
- data/test/stylesheet/tc_pattern_fill.rb +0 -43
- data/test/stylesheet/tc_styles.rb +0 -309
- data/test/stylesheet/tc_table_style.rb +0 -44
- data/test/stylesheet/tc_table_style_element.rb +0 -45
- data/test/stylesheet/tc_table_styles.rb +0 -29
- data/test/stylesheet/tc_xf.rb +0 -120
- data/test/tc_axlsx.rb +0 -109
- data/test/tc_helper.rb +0 -10
- data/test/tc_package.rb +0 -317
- data/test/util/tc_mime_type_utils.rb +0 -13
- data/test/util/tc_serialized_attributes.rb +0 -19
- data/test/util/tc_simple_typed_list.rb +0 -77
- data/test/util/tc_validators.rb +0 -210
- data/test/workbook/tc_defined_name.rb +0 -49
- data/test/workbook/tc_shared_strings_table.rb +0 -59
- data/test/workbook/tc_workbook.rb +0 -165
- data/test/workbook/tc_workbook_view.rb +0 -50
- data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
- data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
- data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
- data/test/workbook/worksheet/tc_break.rb +0 -49
- data/test/workbook/worksheet/tc_cell.rb +0 -465
- data/test/workbook/worksheet/tc_cfvo.rb +0 -31
- data/test/workbook/worksheet/tc_col.rb +0 -93
- data/test/workbook/worksheet/tc_color_scale.rb +0 -58
- data/test/workbook/worksheet/tc_comment.rb +0 -72
- data/test/workbook/worksheet/tc_comments.rb +0 -57
- data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
- data/test/workbook/worksheet/tc_data_bar.rb +0 -46
- data/test/workbook/worksheet/tc_data_validation.rb +0 -265
- data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
- data/test/workbook/worksheet/tc_header_footer.rb +0 -151
- data/test/workbook/worksheet/tc_icon_set.rb +0 -45
- data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
- data/test/workbook/worksheet/tc_page_margins.rb +0 -97
- data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
- data/test/workbook/worksheet/tc_page_setup.rb +0 -143
- data/test/workbook/worksheet/tc_pane.rb +0 -54
- data/test/workbook/worksheet/tc_pivot_table.rb +0 -180
- data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
- data/test/workbook/worksheet/tc_print_options.rb +0 -72
- data/test/workbook/worksheet/tc_protected_range.rb +0 -17
- data/test/workbook/worksheet/tc_rich_text.rb +0 -44
- data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
- data/test/workbook/worksheet/tc_row.rb +0 -160
- data/test/workbook/worksheet/tc_selection.rb +0 -55
- data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
- data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
- data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
- data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
- data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
- data/test/workbook/worksheet/tc_table.rb +0 -77
- data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
- data/test/workbook/worksheet/tc_worksheet.rb +0 -632
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
# encoding: UTF-8
|
|
2
|
-
require 'tc_helper.rb'
|
|
3
|
-
|
|
4
|
-
class TestDefault < Test::Unit::TestCase
|
|
5
|
-
|
|
6
|
-
def test_content_type_restriction
|
|
7
|
-
assert_raise(ArgumentError, "raises argument error if invlalid ContentType is") { Axlsx::Default.new :ContentType=>"asdf" }
|
|
8
|
-
end
|
|
9
|
-
|
|
10
|
-
def test_to_xml_string
|
|
11
|
-
type = Axlsx::Default.new :Extension=>"xml", :ContentType=>Axlsx::XML_CT
|
|
12
|
-
doc = Nokogiri::XML(type.to_xml_string)
|
|
13
|
-
assert_equal(doc.xpath("Default[@ContentType='#{Axlsx::XML_CT}']").size, 1)
|
|
14
|
-
assert_equal(doc.xpath("Default[@Extension='xml']").size, 1)
|
|
15
|
-
end
|
|
16
|
-
end
|
|
@@ -1,14 +0,0 @@
|
|
|
1
|
-
require 'tc_helper.rb'
|
|
2
|
-
class TestOverride < Test::Unit::TestCase
|
|
3
|
-
|
|
4
|
-
def test_content_type_restriction
|
|
5
|
-
assert_raise(ArgumentError, "requires known content type") { Axlsx::Override.new :ContentType=>"asdf" }
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def test_to_xml
|
|
9
|
-
type = Axlsx::Override.new :PartName=>"somechart.xml", :ContentType=>Axlsx::CHART_CT
|
|
10
|
-
doc = Nokogiri::XML(type.to_xml_string)
|
|
11
|
-
assert_equal(doc.xpath("Override[@ContentType='#{Axlsx::CHART_CT}']").size, 1)
|
|
12
|
-
assert_equal(doc.xpath("Override[@PartName='somechart.xml']").size, 1)
|
|
13
|
-
end
|
|
14
|
-
end
|
data/test/doc_props/tc_app.rb
DELETED
|
@@ -1,43 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,42 +0,0 @@
|
|
|
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 +0,0 @@
|
|
|
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 +0,0 @@
|
|
|
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
DELETED
|
@@ -1,8 +0,0 @@
|
|
|
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
|
data/test/drawing/tc_axis.rb
DELETED
|
@@ -1,112 +0,0 @@
|
|
|
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,86 +0,0 @@
|
|
|
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
|
-
def test_gap_width
|
|
36
|
-
assert_raise(ArgumentError, "require valid gap width") { @chart.gap_width = -1 }
|
|
37
|
-
assert_raise(ArgumentError, "require valid gap width") { @chart.gap_width = 501 }
|
|
38
|
-
assert_nothing_raised("allow valid gapWidth") { @chart.gap_width = 200 }
|
|
39
|
-
assert_equal(@chart.gap_width, 200, 'gap width is incorrect')
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def test_gap_depth
|
|
43
|
-
assert_raise(ArgumentError, "require valid gap_depth") { @chart.gap_depth = -1 }
|
|
44
|
-
assert_raise(ArgumentError, "require valid gap_depth") { @chart.gap_depth = 501 }
|
|
45
|
-
assert_nothing_raised("allow valid gap_depth") { @chart.gap_depth = 200 }
|
|
46
|
-
assert_equal(@chart.gap_depth, 200, 'gap depth is incorrect')
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def test_shape
|
|
50
|
-
assert_raise(ArgumentError, "require valid shape") { @chart.shape = :star }
|
|
51
|
-
assert_nothing_raised("allow valid shape") { @chart.shape = :cone }
|
|
52
|
-
assert(@chart.shape == :cone)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def test_to_xml_string
|
|
56
|
-
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
|
57
|
-
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
58
|
-
errors = []
|
|
59
|
-
schema.validate(doc).each do |error|
|
|
60
|
-
errors.push error
|
|
61
|
-
puts error.message
|
|
62
|
-
end
|
|
63
|
-
assert(errors.empty?, "error free validation")
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def test_to_xml_string_has_axes_in_correct_order
|
|
67
|
-
str = @chart.to_xml_string
|
|
68
|
-
cat_axis_position = str.index(@chart.axes[:cat_axis].id.to_s)
|
|
69
|
-
val_axis_position = str.index(@chart.axes[:val_axis].id.to_s)
|
|
70
|
-
assert(cat_axis_position < val_axis_position, "cat_axis must occur earlier than val_axis in the XML")
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
def test_to_xml_string_has_gap_depth
|
|
74
|
-
gap_depth_value = rand(0..500)
|
|
75
|
-
@chart.gap_depth = gap_depth_value
|
|
76
|
-
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
77
|
-
assert_equal(doc.xpath("//c:bar3DChart/c:gapDepth").first.attribute('val').value, gap_depth_value.to_s)
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def test_to_xml_string_has_gap_width
|
|
81
|
-
gap_width_value = rand(0..500)
|
|
82
|
-
@chart.gap_width = gap_width_value
|
|
83
|
-
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
84
|
-
assert_equal(doc.xpath("//c:bar3DChart/c:gapWidth").first.attribute('val').value, gap_width_value.to_s)
|
|
85
|
-
end
|
|
86
|
-
end
|
|
@@ -1,86 +0,0 @@
|
|
|
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
|
-
def test_gap_width
|
|
36
|
-
assert_raise(ArgumentError, "require valid gap width") { @chart.gap_width = -1 }
|
|
37
|
-
assert_raise(ArgumentError, "require valid gap width") { @chart.gap_width = 501 }
|
|
38
|
-
assert_nothing_raised("allow valid gap width") { @chart.gap_width = 200 }
|
|
39
|
-
assert_equal(@chart.gap_width, 200, 'gap width is incorrect')
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def test_overlap
|
|
43
|
-
assert_raise(ArgumentError, "require valid overlap") { @chart.overlap = -101 }
|
|
44
|
-
assert_raise(ArgumentError, "require valid overlap") { @chart.overlap = 101 }
|
|
45
|
-
assert_nothing_raised("allow valid overlap") { @chart.overlap = 100 }
|
|
46
|
-
assert_equal(@chart.overlap, 100, 'overlap is incorrect')
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
def test_shape
|
|
50
|
-
assert_raise(ArgumentError, "require valid shape") { @chart.shape = :star }
|
|
51
|
-
assert_nothing_raised("allow valid shape") { @chart.shape = :cone }
|
|
52
|
-
assert(@chart.shape == :cone)
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
def test_to_xml_string
|
|
56
|
-
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
|
57
|
-
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
58
|
-
errors = []
|
|
59
|
-
schema.validate(doc).each do |error|
|
|
60
|
-
errors.push error
|
|
61
|
-
puts error.message
|
|
62
|
-
end
|
|
63
|
-
assert(errors.empty?, "error free validation")
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def test_to_xml_string_has_axes_in_correct_order
|
|
67
|
-
str = @chart.to_xml_string
|
|
68
|
-
cat_axis_position = str.index(@chart.axes[:cat_axis].id.to_s)
|
|
69
|
-
val_axis_position = str.index(@chart.axes[:val_axis].id.to_s)
|
|
70
|
-
assert(cat_axis_position < val_axis_position, "cat_axis must occur earlier than val_axis in the XML")
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
def test_to_xml_string_has_gap_width
|
|
74
|
-
gap_width_value = rand(0..500)
|
|
75
|
-
@chart.gap_width = gap_width_value
|
|
76
|
-
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
77
|
-
assert_equal(doc.xpath("//c:barChart/c:gapWidth").first.attribute('val').value, gap_width_value.to_s)
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def test_to_xml_string_has_overlap
|
|
81
|
-
overlap_value = rand(-100..100)
|
|
82
|
-
@chart.overlap = overlap_value
|
|
83
|
-
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
84
|
-
assert_equal(doc.xpath("//c:barChart/c:overlap").first.attribute('val').value, overlap_value.to_s)
|
|
85
|
-
end
|
|
86
|
-
end
|
|
@@ -1,46 +0,0 @@
|
|
|
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(
|
|
10
|
-
data: [0, 1, 2],
|
|
11
|
-
labels: ['zero', 'one', 'two'],
|
|
12
|
-
title: 'bob',
|
|
13
|
-
colors: ['FF0000', '00FF00', '0000FF'],
|
|
14
|
-
shape: :cone,
|
|
15
|
-
series_color: '5A5A5A'
|
|
16
|
-
)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def test_initialize
|
|
20
|
-
assert_equal(@series.title.text, "bob", "series title has been applied")
|
|
21
|
-
assert_equal(@series.data.class, Axlsx::NumDataSource, "data option applied")
|
|
22
|
-
assert_equal(@series.shape, :cone, "series shape has been applied")
|
|
23
|
-
assert_equal(@series.series_color, '5A5A5A', 'series color has been applied')
|
|
24
|
-
assert(@series.data.is_a?(Axlsx::NumDataSource))
|
|
25
|
-
assert(@series.labels.is_a?(Axlsx::AxDataSource))
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
def test_colors
|
|
29
|
-
assert_equal(@series.colors.size, 3)
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
def test_shape
|
|
33
|
-
assert_raise(ArgumentError, "require valid shape") { @series.shape = :teardropt }
|
|
34
|
-
assert_nothing_raised("allow valid shape") { @series.shape = :box }
|
|
35
|
-
assert(@series.shape == :box)
|
|
36
|
-
end
|
|
37
|
-
|
|
38
|
-
def test_to_xml_string
|
|
39
|
-
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
40
|
-
@series.colors.each_with_index do |color, index|
|
|
41
|
-
assert_equal(doc.xpath("//c:dPt/c:idx[@val='#{index}']").size,1)
|
|
42
|
-
assert_equal(doc.xpath("//c:dPt/c:spPr/a:solidFill/a:srgbClr[@val='#{@series.colors[index]}']").size,1)
|
|
43
|
-
end
|
|
44
|
-
assert_equal(doc.xpath('//c:spPr[not(ancestor::c:dPt)]/a:solidFill/a:srgbClr').first.get_attribute('val'), '5A5A5A', 'series color has been applied')
|
|
45
|
-
end
|
|
46
|
-
end
|
|
@@ -1,44 +0,0 @@
|
|
|
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
|
|
@@ -1,21 +0,0 @@
|
|
|
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
|
data/test/drawing/tc_cat_axis.rb
DELETED
|
@@ -1,31 +0,0 @@
|
|
|
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
|