caxlsx 3.0.4 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.yardopts +9 -9
- data/.yardopts_guide +18 -18
- data/CHANGELOG.md +354 -334
- data/LICENSE +21 -21
- data/README.md +168 -170
- data/Rakefile +29 -29
- data/examples/generate.rb +15 -15
- data/lib/axlsx/content_type/abstract_content_type.rb +32 -32
- data/lib/axlsx/content_type/content_type.rb +26 -26
- data/lib/axlsx/content_type/default.rb +25 -25
- data/lib/axlsx/content_type/override.rb +25 -25
- data/lib/axlsx/doc_props/app.rb +235 -235
- data/lib/axlsx/doc_props/core.rb +39 -39
- data/lib/axlsx/drawing/area_chart.rb +99 -99
- data/lib/axlsx/drawing/area_series.rb +110 -110
- data/lib/axlsx/drawing/ax_data_source.rb +26 -26
- data/lib/axlsx/drawing/axes.rb +61 -61
- data/lib/axlsx/drawing/axis.rb +190 -190
- data/lib/axlsx/drawing/bar_3D_chart.rb +148 -151
- data/lib/axlsx/drawing/bar_chart.rb +138 -143
- data/lib/axlsx/drawing/bar_series.rb +97 -80
- data/lib/axlsx/drawing/bubble_chart.rb +59 -59
- data/lib/axlsx/drawing/bubble_series.rb +63 -63
- data/lib/axlsx/drawing/cat_axis.rb +85 -85
- data/lib/axlsx/drawing/chart.rb +276 -276
- data/lib/axlsx/drawing/d_lbls.rb +90 -90
- data/lib/axlsx/drawing/drawing.rb +167 -167
- data/lib/axlsx/drawing/graphic_frame.rb +54 -54
- data/lib/axlsx/drawing/hyperlink.rb +100 -100
- data/lib/axlsx/drawing/line_3D_chart.rb +68 -68
- data/lib/axlsx/drawing/line_chart.rb +99 -99
- data/lib/axlsx/drawing/line_series.rb +110 -110
- data/lib/axlsx/drawing/marker.rb +84 -84
- data/lib/axlsx/drawing/num_data.rb +52 -52
- data/lib/axlsx/drawing/num_data_source.rb +62 -62
- data/lib/axlsx/drawing/num_val.rb +34 -34
- data/lib/axlsx/drawing/one_cell_anchor.rb +99 -99
- data/lib/axlsx/drawing/pic.rb +211 -211
- data/lib/axlsx/drawing/picture_locking.rb +42 -42
- data/lib/axlsx/drawing/pie_3D_chart.rb +47 -47
- data/lib/axlsx/drawing/pie_series.rb +74 -74
- data/lib/axlsx/drawing/scaling.rb +60 -60
- data/lib/axlsx/drawing/scatter_chart.rb +74 -74
- data/lib/axlsx/drawing/scatter_series.rb +129 -98
- data/lib/axlsx/drawing/ser_axis.rb +45 -45
- data/lib/axlsx/drawing/series.rb +69 -69
- data/lib/axlsx/drawing/series_title.rb +25 -25
- data/lib/axlsx/drawing/str_data.rb +42 -42
- data/lib/axlsx/drawing/str_val.rb +34 -34
- data/lib/axlsx/drawing/title.rb +97 -97
- data/lib/axlsx/drawing/two_cell_anchor.rb +97 -97
- data/lib/axlsx/drawing/val_axis.rb +37 -37
- data/lib/axlsx/drawing/view_3D.rb +115 -115
- data/lib/axlsx/drawing/vml_drawing.rb +42 -42
- data/lib/axlsx/drawing/vml_shape.rb +66 -66
- data/lib/axlsx/package.rb +388 -363
- data/lib/axlsx/rels/relationship.rb +130 -130
- data/lib/axlsx/rels/relationships.rb +32 -32
- data/lib/axlsx/stylesheet/border.rb +73 -71
- data/lib/axlsx/stylesheet/border_pr.rb +71 -71
- data/lib/axlsx/stylesheet/cell_alignment.rb +132 -132
- data/lib/axlsx/stylesheet/cell_protection.rb +41 -41
- data/lib/axlsx/stylesheet/cell_style.rb +72 -72
- data/lib/axlsx/stylesheet/color.rb +76 -76
- data/lib/axlsx/stylesheet/dxf.rb +79 -79
- data/lib/axlsx/stylesheet/fill.rb +35 -35
- data/lib/axlsx/stylesheet/font.rb +156 -156
- data/lib/axlsx/stylesheet/gradient_fill.rb +103 -103
- data/lib/axlsx/stylesheet/gradient_stop.rb +37 -37
- data/lib/axlsx/stylesheet/num_fmt.rb +86 -86
- data/lib/axlsx/stylesheet/pattern_fill.rb +73 -73
- data/lib/axlsx/stylesheet/styles.rb +494 -420
- data/lib/axlsx/stylesheet/table_style.rb +54 -54
- data/lib/axlsx/stylesheet/table_style_element.rb +77 -77
- data/lib/axlsx/stylesheet/table_styles.rb +46 -46
- data/lib/axlsx/stylesheet/xf.rb +147 -147
- data/lib/axlsx/util/accessors.rb +64 -64
- data/lib/axlsx/util/constants.rb +410 -401
- data/lib/axlsx/util/mime_type_utils.rb +11 -11
- data/lib/axlsx/util/options_parser.rb +16 -16
- data/lib/axlsx/util/serialized_attributes.rb +89 -89
- data/lib/axlsx/util/simple_typed_list.rb +179 -179
- data/lib/axlsx/util/storage.rb +146 -146
- data/lib/axlsx/util/validators.rb +312 -312
- data/lib/axlsx/util/zip_command.rb +73 -73
- data/lib/axlsx/version.rb +5 -5
- data/lib/axlsx/workbook/defined_name.rb +128 -128
- data/lib/axlsx/workbook/defined_names.rb +21 -21
- data/lib/axlsx/workbook/shared_strings_table.rb +77 -77
- data/lib/axlsx/workbook/workbook.rb +395 -370
- data/lib/axlsx/workbook/workbook_view.rb +80 -80
- data/lib/axlsx/workbook/workbook_views.rb +22 -22
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -77
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -244
- data/lib/axlsx/workbook/worksheet/break.rb +35 -35
- data/lib/axlsx/workbook/worksheet/cell.rb +506 -505
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
- data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
- data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -18
- data/lib/axlsx/workbook/worksheet/col.rb +145 -145
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
- data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
- data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
- data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
- data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
- data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
- data/lib/axlsx/workbook/worksheet/data_validation.rb +246 -246
- data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
- data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
- data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
- data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
- data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
- data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
- data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
- data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +296 -289
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
- data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
- data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
- data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
- data/lib/axlsx/workbook/worksheet/row.rb +164 -162
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
- data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
- data/lib/axlsx/workbook/worksheet/table.rb +102 -102
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
- data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
- data/lib/axlsx/workbook/worksheet/worksheet.rb +786 -764
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
- data/lib/axlsx.rb +185 -170
- data/lib/caxlsx.rb +2 -2
- data/lib/schema/dc.xsd +118 -118
- data/lib/schema/dcmitype.xsd +51 -51
- data/lib/schema/dcterms.xsd +331 -331
- data/lib/schema/dml-chartDrawing.xsd +146 -146
- data/lib/schema/dml-compatibility.xsd +14 -14
- data/lib/schema/dml-lockedCanvas.xsd +11 -11
- data/lib/schema/dml-main.xsd +3048 -3048
- data/lib/schema/dml-picture.xsd +23 -23
- data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
- data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
- data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
- data/lib/schema/shared-bibliography.xsd +144 -144
- data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
- data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
- data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
- data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
- data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
- data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
- data/lib/schema/shared-relationshipReference.xsd +25 -25
- data/lib/schema/vml-main.xsd +569 -569
- data/lib/schema/vml-officeDrawing.xsd +509 -509
- data/lib/schema/vml-presentationDrawing.xsd +12 -12
- data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
- data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
- data/lib/schema/xml.xsd +116 -116
- data/test/benchmark.rb +72 -72
- data/test/content_type/tc_content_type.rb +76 -76
- data/test/content_type/tc_default.rb +16 -16
- data/test/content_type/tc_override.rb +14 -14
- data/test/doc_props/tc_app.rb +43 -43
- data/test/doc_props/tc_core.rb +42 -42
- data/test/drawing/tc_area_chart.rb +39 -39
- data/test/drawing/tc_area_series.rb +71 -71
- data/test/drawing/tc_axes.rb +7 -7
- data/test/drawing/tc_axis.rb +112 -112
- data/test/drawing/tc_bar_3D_chart.rb +86 -71
- data/test/drawing/tc_bar_chart.rb +86 -71
- data/test/drawing/tc_bar_series.rb +46 -37
- data/test/drawing/tc_bubble_chart.rb +44 -44
- data/test/drawing/tc_bubble_series.rb +21 -21
- data/test/drawing/tc_cat_axis.rb +31 -31
- data/test/drawing/tc_cat_axis_data.rb +27 -27
- data/test/drawing/tc_chart.rb +123 -123
- data/test/drawing/tc_d_lbls.rb +57 -57
- data/test/drawing/tc_data_source.rb +23 -23
- data/test/drawing/tc_drawing.rb +80 -80
- data/test/drawing/tc_graphic_frame.rb +27 -27
- data/test/drawing/tc_hyperlink.rb +64 -64
- data/test/drawing/tc_line_3d_chart.rb +47 -47
- data/test/drawing/tc_line_chart.rb +39 -39
- data/test/drawing/tc_line_series.rb +71 -71
- data/test/drawing/tc_marker.rb +44 -44
- data/test/drawing/tc_named_axis_data.rb +27 -27
- data/test/drawing/tc_num_data.rb +31 -31
- data/test/drawing/tc_num_val.rb +29 -29
- data/test/drawing/tc_one_cell_anchor.rb +66 -66
- data/test/drawing/tc_pic.rb +103 -103
- data/test/drawing/tc_picture_locking.rb +72 -72
- data/test/drawing/tc_pie_3D_chart.rb +28 -28
- data/test/drawing/tc_pie_series.rb +33 -33
- data/test/drawing/tc_scaling.rb +36 -36
- data/test/drawing/tc_scatter_chart.rb +48 -48
- data/test/drawing/tc_scatter_series.rb +74 -56
- data/test/drawing/tc_ser_axis.rb +31 -31
- data/test/drawing/tc_series.rb +23 -23
- data/test/drawing/tc_series_title.rb +54 -54
- data/test/drawing/tc_str_data.rb +18 -18
- data/test/drawing/tc_str_val.rb +30 -30
- data/test/drawing/tc_title.rb +70 -70
- data/test/drawing/tc_two_cell_anchor.rb +36 -36
- data/test/drawing/tc_val_axis.rb +24 -24
- data/test/drawing/tc_view_3D.rb +54 -54
- data/test/drawing/tc_vml_drawing.rb +25 -25
- data/test/drawing/tc_vml_shape.rb +106 -106
- data/test/profile.rb +24 -24
- data/test/rels/tc_relationship.rb +52 -52
- data/test/rels/tc_relationships.rb +37 -37
- data/test/stylesheet/tc_border.rb +37 -37
- data/test/stylesheet/tc_border_pr.rb +32 -32
- data/test/stylesheet/tc_cell_alignment.rb +81 -81
- data/test/stylesheet/tc_cell_protection.rb +29 -29
- data/test/stylesheet/tc_cell_style.rb +57 -57
- data/test/stylesheet/tc_color.rb +43 -43
- data/test/stylesheet/tc_dxf.rb +81 -81
- data/test/stylesheet/tc_fill.rb +18 -18
- data/test/stylesheet/tc_font.rb +133 -133
- data/test/stylesheet/tc_gradient_fill.rb +72 -72
- data/test/stylesheet/tc_gradient_stop.rb +31 -31
- data/test/stylesheet/tc_num_fmt.rb +30 -30
- data/test/stylesheet/tc_pattern_fill.rb +43 -43
- data/test/stylesheet/tc_styles.rb +309 -261
- data/test/stylesheet/tc_table_style.rb +44 -44
- data/test/stylesheet/tc_table_style_element.rb +45 -45
- data/test/stylesheet/tc_table_styles.rb +29 -29
- data/test/stylesheet/tc_xf.rb +120 -120
- data/test/tc_axlsx.rb +109 -109
- data/test/tc_helper.rb +10 -12
- data/test/tc_package.rb +317 -264
- data/test/util/tc_mime_type_utils.rb +13 -13
- data/test/util/tc_serialized_attributes.rb +19 -19
- data/test/util/tc_simple_typed_list.rb +77 -77
- data/test/util/tc_validators.rb +210 -210
- data/test/workbook/tc_defined_name.rb +49 -49
- data/test/workbook/tc_shared_strings_table.rb +59 -59
- data/test/workbook/tc_workbook.rb +165 -160
- data/test/workbook/tc_workbook_view.rb +50 -50
- data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -38
- data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -76
- data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -50
- data/test/workbook/worksheet/tc_break.rb +49 -49
- data/test/workbook/worksheet/tc_cell.rb +465 -453
- data/test/workbook/worksheet/tc_cfvo.rb +31 -31
- data/test/workbook/worksheet/tc_col.rb +93 -93
- data/test/workbook/worksheet/tc_color_scale.rb +58 -58
- data/test/workbook/worksheet/tc_comment.rb +72 -72
- data/test/workbook/worksheet/tc_comments.rb +57 -57
- data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -224
- data/test/workbook/worksheet/tc_data_bar.rb +46 -46
- data/test/workbook/worksheet/tc_data_validation.rb +265 -265
- data/test/workbook/worksheet/tc_date_time_converter.rb +124 -124
- data/test/workbook/worksheet/tc_header_footer.rb +151 -151
- data/test/workbook/worksheet/tc_icon_set.rb +45 -45
- data/test/workbook/worksheet/tc_outline_pr.rb +19 -19
- data/test/workbook/worksheet/tc_page_margins.rb +97 -97
- data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -15
- data/test/workbook/worksheet/tc_page_setup.rb +143 -143
- data/test/workbook/worksheet/tc_pane.rb +54 -54
- data/test/workbook/worksheet/tc_pivot_table.rb +180 -135
- data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +62 -54
- data/test/workbook/worksheet/tc_print_options.rb +72 -72
- data/test/workbook/worksheet/tc_protected_range.rb +17 -17
- data/test/workbook/worksheet/tc_rich_text.rb +44 -44
- data/test/workbook/worksheet/tc_rich_text_run.rb +173 -173
- data/test/workbook/worksheet/tc_row.rb +160 -139
- data/test/workbook/worksheet/tc_selection.rb +55 -55
- data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -18
- data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -88
- data/test/workbook/worksheet/tc_sheet_pr.rb +49 -49
- data/test/workbook/worksheet/tc_sheet_protection.rb +117 -117
- data/test/workbook/worksheet/tc_sheet_view.rb +214 -214
- data/test/workbook/worksheet/tc_table.rb +77 -67
- data/test/workbook/worksheet/tc_table_style_info.rb +53 -53
- data/test/workbook/worksheet/tc_worksheet.rb +632 -601
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -55
- metadata +11 -11
|
@@ -1,31 +1,31 @@
|
|
|
1
|
-
require 'tc_helper.rb'
|
|
2
|
-
|
|
3
|
-
class TestCfvo < Test::Unit::TestCase
|
|
4
|
-
def setup
|
|
5
|
-
@cfvo = Axlsx::Cfvo.new(:val => "0", :type => :min)
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def test_val
|
|
9
|
-
assert_nothing_raised { @cfvo.val = "abc" }
|
|
10
|
-
assert_equal(@cfvo.val, "abc")
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def test_type
|
|
14
|
-
assert_raise(ArgumentError) { @cfvo.type = :invalid_type }
|
|
15
|
-
assert_nothing_raised { @cfvo.type = :max }
|
|
16
|
-
assert_equal(@cfvo.type, :max)
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
def test_gte
|
|
20
|
-
assert_raise(ArgumentError) { @cfvo.gte = :bob }
|
|
21
|
-
assert_equal(@cfvo.gte, true)
|
|
22
|
-
assert_nothing_raised { @cfvo.gte = false }
|
|
23
|
-
assert_equal(@cfvo.gte, false)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def test_to_xml_string
|
|
27
|
-
doc = Nokogiri::XML.parse(@cfvo.to_xml_string)
|
|
28
|
-
assert doc.xpath(".//cfvo[@type='min'][@val=0][@gte=true]")
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
end
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestCfvo < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@cfvo = Axlsx::Cfvo.new(:val => "0", :type => :min)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def test_val
|
|
9
|
+
assert_nothing_raised { @cfvo.val = "abc" }
|
|
10
|
+
assert_equal(@cfvo.val, "abc")
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def test_type
|
|
14
|
+
assert_raise(ArgumentError) { @cfvo.type = :invalid_type }
|
|
15
|
+
assert_nothing_raised { @cfvo.type = :max }
|
|
16
|
+
assert_equal(@cfvo.type, :max)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
def test_gte
|
|
20
|
+
assert_raise(ArgumentError) { @cfvo.gte = :bob }
|
|
21
|
+
assert_equal(@cfvo.gte, true)
|
|
22
|
+
assert_nothing_raised { @cfvo.gte = false }
|
|
23
|
+
assert_equal(@cfvo.gte, false)
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_to_xml_string
|
|
27
|
+
doc = Nokogiri::XML.parse(@cfvo.to_xml_string)
|
|
28
|
+
assert doc.xpath(".//cfvo[@type='min'][@val=0][@gte=true]")
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
end
|
|
@@ -1,93 +1,93 @@
|
|
|
1
|
-
require 'tc_helper.rb'
|
|
2
|
-
|
|
3
|
-
class TestCol < Test::Unit::TestCase
|
|
4
|
-
|
|
5
|
-
def setup
|
|
6
|
-
@col = Axlsx::Col.new 1, 1
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def test_initialize
|
|
10
|
-
options = { :width => 12, :collapsed => true, :hidden => true, :outline_level => 1, :phonetic => true, :style => 1}
|
|
11
|
-
|
|
12
|
-
col = Axlsx::Col.new 0, 0, options
|
|
13
|
-
options.each{ |key, value| assert_equal(col.send(key.to_sym), value) }
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def test_min_max_required
|
|
17
|
-
assert_raise(ArgumentError, 'min and max must be specified when creating a new column') { Axlsx::Col.new }
|
|
18
|
-
assert_raise(ArgumentError, 'min and max must be specified when creating a new column') { Axlsx::Col.new nil, nil }
|
|
19
|
-
assert_nothing_raised { Axlsx::Col.new 1, 1 }
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def test_bestFit
|
|
23
|
-
assert_equal(@col.bestFit, nil)
|
|
24
|
-
assert_raise(NoMethodError, 'bestFit is read only') { @col.bestFit = 'bob' }
|
|
25
|
-
@col.width = 1.999
|
|
26
|
-
assert_equal(@col.bestFit, true, 'bestFit should be true when width has been set')
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def test_collapsed
|
|
30
|
-
assert_equal(@col.collapsed, nil)
|
|
31
|
-
assert_raise(ArgumentError, 'collapsed must be boolean(ish)') { @col.collapsed = 'bob' }
|
|
32
|
-
assert_nothing_raised('collapsed must be boolean(ish)') { @col.collapsed = true }
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
def test_customWidth
|
|
36
|
-
assert_equal(@col.customWidth, nil)
|
|
37
|
-
@col.width = 3
|
|
38
|
-
assert_raise(NoMethodError, 'customWidth is read only') { @col.customWidth = 3 }
|
|
39
|
-
assert_equal(@col.customWidth, true, 'customWidth is true when width is set')
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def test_widthUnderLimit
|
|
43
|
-
@col.width = 3
|
|
44
|
-
assert_equal(@col.width, 3, 'width is set to exact value')
|
|
45
|
-
end
|
|
46
|
-
|
|
47
|
-
def test_widthOverLimit
|
|
48
|
-
@col.width = 31337
|
|
49
|
-
assert_equal(@col.width, 255, 'width is set to maximum allowed value')
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def test_widthSetToNil
|
|
53
|
-
@col.width = nil
|
|
54
|
-
assert_equal(@col.width, nil, 'width is set to unspecified value')
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
def test_hidden
|
|
58
|
-
assert_equal(@col.hidden, nil)
|
|
59
|
-
assert_raise(ArgumentError, 'hidden must be boolean(ish)') { @col.hidden = 'bob' }
|
|
60
|
-
assert_nothing_raised(ArgumentError, 'hidden must be boolean(ish)') { @col.hidden = true }
|
|
61
|
-
end
|
|
62
|
-
|
|
63
|
-
def test_outlineLevel
|
|
64
|
-
assert_equal(@col.outlineLevel, nil)
|
|
65
|
-
assert_raise(ArgumentError, 'outline level cannot be negative') { @col.outlineLevel = -1 }
|
|
66
|
-
assert_raise(ArgumentError, 'outline level cannot be greater than 7') { @col.outlineLevel = 8 }
|
|
67
|
-
assert_nothing_raised('can set outlineLevel') { @col.outlineLevel = 1 }
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def test_phonetic
|
|
71
|
-
assert_equal(@col.phonetic, nil)
|
|
72
|
-
assert_raise(ArgumentError, 'phonetic must be boolean(ish)') { @col.phonetic = 'bob' }
|
|
73
|
-
assert_nothing_raised(ArgumentError, 'phonetic must be boolean(ish)') { @col.phonetic = true }
|
|
74
|
-
end
|
|
75
|
-
|
|
76
|
-
def test_to_xml_string
|
|
77
|
-
@col.width = 100
|
|
78
|
-
doc = Nokogiri::XML(@col.to_xml_string)
|
|
79
|
-
assert_equal(1, doc.xpath("//col [@bestFit='#{@col.best_fit ? 1 : 0}']").size)
|
|
80
|
-
assert_equal(1, doc.xpath("//col [@max=#{@col.max}]").size)
|
|
81
|
-
assert_equal(1, doc.xpath("//col [@min=#{@col.min}]").size)
|
|
82
|
-
assert_equal(1, doc.xpath("//col [@width=#{@col.width}]").size)
|
|
83
|
-
assert_equal(1, doc.xpath("//col [@customWidth='#{@col.custom_width ? 1 : 0}']").size)
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def test_style
|
|
87
|
-
assert_equal(@col.style, nil)
|
|
88
|
-
@col.style = 1
|
|
89
|
-
assert_equal(@col.style, 1)
|
|
90
|
-
#TODO check that the style specified is actually in the styles xfs collection
|
|
91
|
-
end
|
|
92
|
-
|
|
93
|
-
end
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestCol < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@col = Axlsx::Col.new 1, 1
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_initialize
|
|
10
|
+
options = { :width => 12, :collapsed => true, :hidden => true, :outline_level => 1, :phonetic => true, :style => 1}
|
|
11
|
+
|
|
12
|
+
col = Axlsx::Col.new 0, 0, options
|
|
13
|
+
options.each{ |key, value| assert_equal(col.send(key.to_sym), value) }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_min_max_required
|
|
17
|
+
assert_raise(ArgumentError, 'min and max must be specified when creating a new column') { Axlsx::Col.new }
|
|
18
|
+
assert_raise(ArgumentError, 'min and max must be specified when creating a new column') { Axlsx::Col.new nil, nil }
|
|
19
|
+
assert_nothing_raised { Axlsx::Col.new 1, 1 }
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def test_bestFit
|
|
23
|
+
assert_equal(@col.bestFit, nil)
|
|
24
|
+
assert_raise(NoMethodError, 'bestFit is read only') { @col.bestFit = 'bob' }
|
|
25
|
+
@col.width = 1.999
|
|
26
|
+
assert_equal(@col.bestFit, true, 'bestFit should be true when width has been set')
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_collapsed
|
|
30
|
+
assert_equal(@col.collapsed, nil)
|
|
31
|
+
assert_raise(ArgumentError, 'collapsed must be boolean(ish)') { @col.collapsed = 'bob' }
|
|
32
|
+
assert_nothing_raised('collapsed must be boolean(ish)') { @col.collapsed = true }
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def test_customWidth
|
|
36
|
+
assert_equal(@col.customWidth, nil)
|
|
37
|
+
@col.width = 3
|
|
38
|
+
assert_raise(NoMethodError, 'customWidth is read only') { @col.customWidth = 3 }
|
|
39
|
+
assert_equal(@col.customWidth, true, 'customWidth is true when width is set')
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def test_widthUnderLimit
|
|
43
|
+
@col.width = 3
|
|
44
|
+
assert_equal(@col.width, 3, 'width is set to exact value')
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def test_widthOverLimit
|
|
48
|
+
@col.width = 31337
|
|
49
|
+
assert_equal(@col.width, 255, 'width is set to maximum allowed value')
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def test_widthSetToNil
|
|
53
|
+
@col.width = nil
|
|
54
|
+
assert_equal(@col.width, nil, 'width is set to unspecified value')
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def test_hidden
|
|
58
|
+
assert_equal(@col.hidden, nil)
|
|
59
|
+
assert_raise(ArgumentError, 'hidden must be boolean(ish)') { @col.hidden = 'bob' }
|
|
60
|
+
assert_nothing_raised(ArgumentError, 'hidden must be boolean(ish)') { @col.hidden = true }
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_outlineLevel
|
|
64
|
+
assert_equal(@col.outlineLevel, nil)
|
|
65
|
+
assert_raise(ArgumentError, 'outline level cannot be negative') { @col.outlineLevel = -1 }
|
|
66
|
+
assert_raise(ArgumentError, 'outline level cannot be greater than 7') { @col.outlineLevel = 8 }
|
|
67
|
+
assert_nothing_raised('can set outlineLevel') { @col.outlineLevel = 1 }
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def test_phonetic
|
|
71
|
+
assert_equal(@col.phonetic, nil)
|
|
72
|
+
assert_raise(ArgumentError, 'phonetic must be boolean(ish)') { @col.phonetic = 'bob' }
|
|
73
|
+
assert_nothing_raised(ArgumentError, 'phonetic must be boolean(ish)') { @col.phonetic = true }
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def test_to_xml_string
|
|
77
|
+
@col.width = 100
|
|
78
|
+
doc = Nokogiri::XML(@col.to_xml_string)
|
|
79
|
+
assert_equal(1, doc.xpath("//col [@bestFit='#{@col.best_fit ? 1 : 0}']").size)
|
|
80
|
+
assert_equal(1, doc.xpath("//col [@max=#{@col.max}]").size)
|
|
81
|
+
assert_equal(1, doc.xpath("//col [@min=#{@col.min}]").size)
|
|
82
|
+
assert_equal(1, doc.xpath("//col [@width=#{@col.width}]").size)
|
|
83
|
+
assert_equal(1, doc.xpath("//col [@customWidth='#{@col.custom_width ? 1 : 0}']").size)
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def test_style
|
|
87
|
+
assert_equal(@col.style, nil)
|
|
88
|
+
@col.style = 1
|
|
89
|
+
assert_equal(@col.style, 1)
|
|
90
|
+
#TODO check that the style specified is actually in the styles xfs collection
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
end
|
|
@@ -1,58 +1,58 @@
|
|
|
1
|
-
require 'tc_helper.rb'
|
|
2
|
-
|
|
3
|
-
class TestColorScale < Test::Unit::TestCase
|
|
4
|
-
def setup
|
|
5
|
-
@color_scale = Axlsx::ColorScale.new
|
|
6
|
-
end
|
|
7
|
-
|
|
8
|
-
def test_three_tone
|
|
9
|
-
color_scale = Axlsx::ColorScale.three_tone
|
|
10
|
-
assert_equal 3, color_scale.value_objects.size
|
|
11
|
-
assert_equal 3, color_scale.colors.size
|
|
12
|
-
end
|
|
13
|
-
|
|
14
|
-
def test_two_tone
|
|
15
|
-
color_scale = Axlsx::ColorScale.two_tone
|
|
16
|
-
assert_equal 2, color_scale.value_objects.size
|
|
17
|
-
assert_equal 2, color_scale.colors.size
|
|
18
|
-
end
|
|
19
|
-
def test_default_cfvo
|
|
20
|
-
first = Axlsx::ColorScale.default_cfvos.first
|
|
21
|
-
second = Axlsx::ColorScale.default_cfvos.last
|
|
22
|
-
assert_equal 'FFFF7128', first[:color]
|
|
23
|
-
assert_equal :min,first[:type]
|
|
24
|
-
assert_equal 0, first[:val]
|
|
25
|
-
|
|
26
|
-
assert_equal 'FFFFEF9C', second[:color]
|
|
27
|
-
assert_equal :max, second[:type]
|
|
28
|
-
assert_equal 0, second[:val]
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def test_partial_default_cfvo_override
|
|
32
|
-
first_def = {:type => :percent, :val => "10.0", :color => 'FF00FF00'}
|
|
33
|
-
color_scale = Axlsx::ColorScale.new(first_def)
|
|
34
|
-
assert_equal color_scale.value_objects.first.val, first_def[:val]
|
|
35
|
-
assert_equal color_scale.value_objects.first.type, first_def[:type]
|
|
36
|
-
assert_equal color_scale.colors.first.rgb, first_def[:color]
|
|
37
|
-
end
|
|
38
|
-
|
|
39
|
-
def test_add
|
|
40
|
-
@color_scale.add :type => :max, :val => 5, :color => "FFDEDEDE"
|
|
41
|
-
assert_equal(@color_scale.value_objects.size,3)
|
|
42
|
-
assert_equal(@color_scale.colors.size,3)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
def test_delete_at
|
|
46
|
-
@color_scale.add :type => :max, :val => 5, :color => "FFDEDEDE"
|
|
47
|
-
assert_nothing_raised {@color_scale.delete_at 2}
|
|
48
|
-
assert_equal(@color_scale.value_objects.size,2)
|
|
49
|
-
assert_equal(@color_scale.colors.size,2)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def test_to_xml_string
|
|
53
|
-
doc = Nokogiri::XML.parse(@color_scale.to_xml_string)
|
|
54
|
-
assert_equal(doc.xpath(".//colorScale//cfvo").size, 2)
|
|
55
|
-
assert_equal(doc.xpath(".//colorScale//color").size, 2)
|
|
56
|
-
end
|
|
57
|
-
|
|
58
|
-
end
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestColorScale < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
@color_scale = Axlsx::ColorScale.new
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
def test_three_tone
|
|
9
|
+
color_scale = Axlsx::ColorScale.three_tone
|
|
10
|
+
assert_equal 3, color_scale.value_objects.size
|
|
11
|
+
assert_equal 3, color_scale.colors.size
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_two_tone
|
|
15
|
+
color_scale = Axlsx::ColorScale.two_tone
|
|
16
|
+
assert_equal 2, color_scale.value_objects.size
|
|
17
|
+
assert_equal 2, color_scale.colors.size
|
|
18
|
+
end
|
|
19
|
+
def test_default_cfvo
|
|
20
|
+
first = Axlsx::ColorScale.default_cfvos.first
|
|
21
|
+
second = Axlsx::ColorScale.default_cfvos.last
|
|
22
|
+
assert_equal 'FFFF7128', first[:color]
|
|
23
|
+
assert_equal :min,first[:type]
|
|
24
|
+
assert_equal 0, first[:val]
|
|
25
|
+
|
|
26
|
+
assert_equal 'FFFFEF9C', second[:color]
|
|
27
|
+
assert_equal :max, second[:type]
|
|
28
|
+
assert_equal 0, second[:val]
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_partial_default_cfvo_override
|
|
32
|
+
first_def = {:type => :percent, :val => "10.0", :color => 'FF00FF00'}
|
|
33
|
+
color_scale = Axlsx::ColorScale.new(first_def)
|
|
34
|
+
assert_equal color_scale.value_objects.first.val, first_def[:val]
|
|
35
|
+
assert_equal color_scale.value_objects.first.type, first_def[:type]
|
|
36
|
+
assert_equal color_scale.colors.first.rgb, first_def[:color]
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_add
|
|
40
|
+
@color_scale.add :type => :max, :val => 5, :color => "FFDEDEDE"
|
|
41
|
+
assert_equal(@color_scale.value_objects.size,3)
|
|
42
|
+
assert_equal(@color_scale.colors.size,3)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def test_delete_at
|
|
46
|
+
@color_scale.add :type => :max, :val => 5, :color => "FFDEDEDE"
|
|
47
|
+
assert_nothing_raised {@color_scale.delete_at 2}
|
|
48
|
+
assert_equal(@color_scale.value_objects.size,2)
|
|
49
|
+
assert_equal(@color_scale.colors.size,2)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def test_to_xml_string
|
|
53
|
+
doc = Nokogiri::XML.parse(@color_scale.to_xml_string)
|
|
54
|
+
assert_equal(doc.xpath(".//colorScale//cfvo").size, 2)
|
|
55
|
+
assert_equal(doc.xpath(".//colorScale//color").size, 2)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
end
|
|
@@ -1,72 +1,72 @@
|
|
|
1
|
-
require 'tc_helper.rb'
|
|
2
|
-
|
|
3
|
-
class TestComment < Test::Unit::TestCase
|
|
4
|
-
def setup
|
|
5
|
-
p = Axlsx::Package.new
|
|
6
|
-
wb = p.workbook
|
|
7
|
-
@ws = wb.add_worksheet
|
|
8
|
-
@c1 = @ws.add_comment :ref => 'A1', :text => 'text with special char <', :author => 'author with special char <', :visible => false
|
|
9
|
-
@c2 = @ws.add_comment :ref => 'C3', :text => 'rust bucket', :author => 'PO'
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def test_initailize
|
|
13
|
-
assert_raise(ArgumentError) { Axlsx::Comment.new }
|
|
14
|
-
end
|
|
15
|
-
|
|
16
|
-
def test_author
|
|
17
|
-
assert(@c1.author == 'author with special char <')
|
|
18
|
-
assert(@c2.author == 'PO')
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def test_text
|
|
22
|
-
assert(@c1.text == 'text with special char <')
|
|
23
|
-
assert(@c2.text == 'rust bucket')
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def test_author_index
|
|
27
|
-
assert_equal(@c1.author_index, 1)
|
|
28
|
-
assert_equal(@c2.author_index, 0)
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def test_visible
|
|
32
|
-
assert_equal(false, @c1.visible)
|
|
33
|
-
assert_equal(true, @c2.visible)
|
|
34
|
-
end
|
|
35
|
-
def test_ref
|
|
36
|
-
assert(@c1.ref == 'A1')
|
|
37
|
-
assert(@c2.ref == 'C3')
|
|
38
|
-
end
|
|
39
|
-
|
|
40
|
-
def test_vml_shape
|
|
41
|
-
pos = Axlsx::name_to_indices(@c1.ref)
|
|
42
|
-
assert(@c1.vml_shape.is_a?(Axlsx::VmlShape))
|
|
43
|
-
assert(@c1.vml_shape.column == pos[0])
|
|
44
|
-
assert(@c1.vml_shape.row == pos[1])
|
|
45
|
-
assert(@c1.vml_shape.row == pos[1])
|
|
46
|
-
assert_equal(pos[0], @c1.vml_shape.left_column)
|
|
47
|
-
assert(@c1.vml_shape.top_row == pos[1])
|
|
48
|
-
assert_equal(pos[0] + 2 , @c1.vml_shape.right_column)
|
|
49
|
-
assert(@c1.vml_shape.bottom_row == pos[1]+4)
|
|
50
|
-
end
|
|
51
|
-
|
|
52
|
-
def test_to_xml_string
|
|
53
|
-
doc = Nokogiri::XML(@c1.to_xml_string)
|
|
54
|
-
assert_equal(doc.xpath("//comment[@ref='#{@c1.ref}']").size, 1)
|
|
55
|
-
assert_equal(doc.xpath("//comment[@authorId='#{@c1.author_index.to_s}']").size, 1)
|
|
56
|
-
assert_equal(doc.xpath("//t[text()='#{@c1.author}:\n']").size, 1)
|
|
57
|
-
assert_equal(doc.xpath("//t[text()='#{@c1.text}']").size, 1)
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def test_comment_text_contain_author_and_text
|
|
61
|
-
comment = @ws.add_comment :ref => 'C4', :text => 'some text', :author => 'Bob'
|
|
62
|
-
doc = Nokogiri::XML(comment.to_xml_string)
|
|
63
|
-
assert_equal("Bob:\nsome text", doc.xpath("//comment/text").text)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
def test_comment_text_does_not_contain_stray_colon_if_author_blank
|
|
67
|
-
comment = @ws.add_comment :ref => 'C5', :text => 'some text', :author => ''
|
|
68
|
-
doc = Nokogiri::XML(comment.to_xml_string)
|
|
69
|
-
assert_equal("some text", doc.xpath("//comment/text").text)
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestComment < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
p = Axlsx::Package.new
|
|
6
|
+
wb = p.workbook
|
|
7
|
+
@ws = wb.add_worksheet
|
|
8
|
+
@c1 = @ws.add_comment :ref => 'A1', :text => 'text with special char <', :author => 'author with special char <', :visible => false
|
|
9
|
+
@c2 = @ws.add_comment :ref => 'C3', :text => 'rust bucket', :author => 'PO'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_initailize
|
|
13
|
+
assert_raise(ArgumentError) { Axlsx::Comment.new }
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_author
|
|
17
|
+
assert(@c1.author == 'author with special char <')
|
|
18
|
+
assert(@c2.author == 'PO')
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def test_text
|
|
22
|
+
assert(@c1.text == 'text with special char <')
|
|
23
|
+
assert(@c2.text == 'rust bucket')
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def test_author_index
|
|
27
|
+
assert_equal(@c1.author_index, 1)
|
|
28
|
+
assert_equal(@c2.author_index, 0)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def test_visible
|
|
32
|
+
assert_equal(false, @c1.visible)
|
|
33
|
+
assert_equal(true, @c2.visible)
|
|
34
|
+
end
|
|
35
|
+
def test_ref
|
|
36
|
+
assert(@c1.ref == 'A1')
|
|
37
|
+
assert(@c2.ref == 'C3')
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def test_vml_shape
|
|
41
|
+
pos = Axlsx::name_to_indices(@c1.ref)
|
|
42
|
+
assert(@c1.vml_shape.is_a?(Axlsx::VmlShape))
|
|
43
|
+
assert(@c1.vml_shape.column == pos[0])
|
|
44
|
+
assert(@c1.vml_shape.row == pos[1])
|
|
45
|
+
assert(@c1.vml_shape.row == pos[1])
|
|
46
|
+
assert_equal(pos[0], @c1.vml_shape.left_column)
|
|
47
|
+
assert(@c1.vml_shape.top_row == pos[1])
|
|
48
|
+
assert_equal(pos[0] + 2 , @c1.vml_shape.right_column)
|
|
49
|
+
assert(@c1.vml_shape.bottom_row == pos[1]+4)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def test_to_xml_string
|
|
53
|
+
doc = Nokogiri::XML(@c1.to_xml_string)
|
|
54
|
+
assert_equal(doc.xpath("//comment[@ref='#{@c1.ref}']").size, 1)
|
|
55
|
+
assert_equal(doc.xpath("//comment[@authorId='#{@c1.author_index.to_s}']").size, 1)
|
|
56
|
+
assert_equal(doc.xpath("//t[text()='#{@c1.author}:\n']").size, 1)
|
|
57
|
+
assert_equal(doc.xpath("//t[text()='#{@c1.text}']").size, 1)
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def test_comment_text_contain_author_and_text
|
|
61
|
+
comment = @ws.add_comment :ref => 'C4', :text => 'some text', :author => 'Bob'
|
|
62
|
+
doc = Nokogiri::XML(comment.to_xml_string)
|
|
63
|
+
assert_equal("Bob:\nsome text", doc.xpath("//comment/text").text)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
def test_comment_text_does_not_contain_stray_colon_if_author_blank
|
|
67
|
+
comment = @ws.add_comment :ref => 'C5', :text => 'some text', :author => ''
|
|
68
|
+
doc = Nokogiri::XML(comment.to_xml_string)
|
|
69
|
+
assert_equal("some text", doc.xpath("//comment/text").text)
|
|
70
|
+
end
|
|
71
|
+
end
|
|
72
|
+
|
|
@@ -1,57 +1,57 @@
|
|
|
1
|
-
require 'tc_helper.rb'
|
|
2
|
-
|
|
3
|
-
class TestComments < Test::Unit::TestCase
|
|
4
|
-
def setup
|
|
5
|
-
p = Axlsx::Package.new
|
|
6
|
-
wb = p.workbook
|
|
7
|
-
@ws = wb.add_worksheet
|
|
8
|
-
@c1 = @ws.add_comment :ref => 'A1', :text => 'penut machine', :author => 'crank'
|
|
9
|
-
@c2 = @ws.add_comment :ref => 'C3', :text => 'rust bucket', :author => 'PO'
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
def test_initialize
|
|
13
|
-
assert_raise(ArgumentError) { Axlsx::Comments.new }
|
|
14
|
-
assert(@ws.comments.vml_drawing.is_a?(Axlsx::VmlDrawing))
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def test_add_comment
|
|
18
|
-
assert_equal(@ws.comments.size, 2)
|
|
19
|
-
assert_raise(ArgumentError) { @ws.comments.add_comment() }
|
|
20
|
-
assert_raise(ArgumentError) { @ws.comments.add_comment(:text => 'Yes We Can', :ref => 'A1') }
|
|
21
|
-
assert_raise(ArgumentError) { @ws.comments.add_comment(:author => 'bob', :ref => 'A1') }
|
|
22
|
-
assert_raise(ArgumentError) { @ws.comments.add_comment(:author => 'bob', :text => 'Yes We Can')}
|
|
23
|
-
assert_nothing_raised { @ws.comments.add_comment(:author => 'bob', :text => 'Yes We Can', :ref => 'A1') }
|
|
24
|
-
assert_equal(@ws.comments.size, 3)
|
|
25
|
-
end
|
|
26
|
-
def test_authors
|
|
27
|
-
assert_equal(@ws.comments.authors.size, @ws.comments.size)
|
|
28
|
-
@ws.add_comment(:text => 'Yes We Can!', :author => 'bob', :ref => 'F1')
|
|
29
|
-
assert_equal(@ws.comments.authors.size, 3)
|
|
30
|
-
@ws.add_comment(:text => 'Yes We Can!', :author => 'bob', :ref => 'F1')
|
|
31
|
-
assert_equal(@ws.comments.authors.size, 3, 'only unique authors are returned')
|
|
32
|
-
end
|
|
33
|
-
def test_pn
|
|
34
|
-
assert_equal(@ws.comments.pn, Axlsx::COMMENT_PN % (@ws.index+1).to_s)
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def test_index
|
|
38
|
-
assert_equal(@ws.index, @ws.comments.index)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
def test_to_xml_string
|
|
42
|
-
doc = Nokogiri::XML(@ws.comments.to_xml_string)
|
|
43
|
-
schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
|
|
44
|
-
errors = []
|
|
45
|
-
schema.validate(doc).each do |error|
|
|
46
|
-
errors << error
|
|
47
|
-
end
|
|
48
|
-
assert_equal(0, errors.length)
|
|
49
|
-
|
|
50
|
-
# TODO figure out why these xpath expressions dont work!
|
|
51
|
-
# assert(doc.xpath("//comments"))
|
|
52
|
-
# assert_equal(doc.xpath("//xmlns:author").size, @ws.comments.authors.size)
|
|
53
|
-
# assert_equal(doc.xpath("//comment").size, @ws.comments.size)
|
|
54
|
-
end
|
|
55
|
-
end
|
|
56
|
-
|
|
57
|
-
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestComments < Test::Unit::TestCase
|
|
4
|
+
def setup
|
|
5
|
+
p = Axlsx::Package.new
|
|
6
|
+
wb = p.workbook
|
|
7
|
+
@ws = wb.add_worksheet
|
|
8
|
+
@c1 = @ws.add_comment :ref => 'A1', :text => 'penut machine', :author => 'crank'
|
|
9
|
+
@c2 = @ws.add_comment :ref => 'C3', :text => 'rust bucket', :author => 'PO'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def test_initialize
|
|
13
|
+
assert_raise(ArgumentError) { Axlsx::Comments.new }
|
|
14
|
+
assert(@ws.comments.vml_drawing.is_a?(Axlsx::VmlDrawing))
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def test_add_comment
|
|
18
|
+
assert_equal(@ws.comments.size, 2)
|
|
19
|
+
assert_raise(ArgumentError) { @ws.comments.add_comment() }
|
|
20
|
+
assert_raise(ArgumentError) { @ws.comments.add_comment(:text => 'Yes We Can', :ref => 'A1') }
|
|
21
|
+
assert_raise(ArgumentError) { @ws.comments.add_comment(:author => 'bob', :ref => 'A1') }
|
|
22
|
+
assert_raise(ArgumentError) { @ws.comments.add_comment(:author => 'bob', :text => 'Yes We Can')}
|
|
23
|
+
assert_nothing_raised { @ws.comments.add_comment(:author => 'bob', :text => 'Yes We Can', :ref => 'A1') }
|
|
24
|
+
assert_equal(@ws.comments.size, 3)
|
|
25
|
+
end
|
|
26
|
+
def test_authors
|
|
27
|
+
assert_equal(@ws.comments.authors.size, @ws.comments.size)
|
|
28
|
+
@ws.add_comment(:text => 'Yes We Can!', :author => 'bob', :ref => 'F1')
|
|
29
|
+
assert_equal(@ws.comments.authors.size, 3)
|
|
30
|
+
@ws.add_comment(:text => 'Yes We Can!', :author => 'bob', :ref => 'F1')
|
|
31
|
+
assert_equal(@ws.comments.authors.size, 3, 'only unique authors are returned')
|
|
32
|
+
end
|
|
33
|
+
def test_pn
|
|
34
|
+
assert_equal(@ws.comments.pn, Axlsx::COMMENT_PN % (@ws.index+1).to_s)
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_index
|
|
38
|
+
assert_equal(@ws.index, @ws.comments.index)
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def test_to_xml_string
|
|
42
|
+
doc = Nokogiri::XML(@ws.comments.to_xml_string)
|
|
43
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
|
|
44
|
+
errors = []
|
|
45
|
+
schema.validate(doc).each do |error|
|
|
46
|
+
errors << error
|
|
47
|
+
end
|
|
48
|
+
assert_equal(0, errors.length)
|
|
49
|
+
|
|
50
|
+
# TODO figure out why these xpath expressions dont work!
|
|
51
|
+
# assert(doc.xpath("//comments"))
|
|
52
|
+
# assert_equal(doc.xpath("//xmlns:author").size, @ws.comments.authors.size)
|
|
53
|
+
# assert_equal(doc.xpath("//comment").size, @ws.comments.size)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
|