axlsx 1.1.4 → 1.3.1
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.
- data/.yardopts +6 -2
- data/CHANGELOG.md +72 -0
- data/README.md +114 -31
- data/Rakefile +11 -3
- data/examples/auto_filter.rb +16 -0
- data/examples/auto_filter.xlsx +0 -0
- data/examples/basic_charts.rb +58 -0
- data/examples/chart_colors.rb +17 -2
- data/examples/data_validation.rb +50 -0
- data/examples/example.rb +171 -60
- data/examples/example.xlsx +0 -0
- data/examples/example_streamed.xlsx +0 -0
- data/examples/extractive.pdf +0 -0
- data/examples/extractive.rb +3 -0
- data/examples/extractive.xlsx +0 -0
- data/examples/hyperlinks.rb +23 -0
- data/examples/hyperlinks.xlsx +0 -0
- data/examples/no-use_autowidth.xlsx +0 -0
- data/examples/page_setup.rb +11 -0
- data/examples/page_setup.xlsx +0 -0
- data/examples/scraping_html.rb +91 -0
- data/examples/shared_strings_example.xlsx +0 -0
- data/examples/sheet_protection.rb +10 -0
- data/examples/sheet_view.rb +34 -0
- data/examples/skydrive/axlsx.csv +1 -0
- data/examples/skydrive/axlsx.xlsx +0 -0
- data/examples/skydrive/real_example.rb +8 -8
- data/examples/sprk2012/Screen Shot 2012-09-11 at 10.42.06 PM.png +0 -0
- data/examples/sprk2012/Screen Shot 2012-09-11 at 11.07.48 PM.png +0 -0
- data/examples/sprk2012/Screen Shot 2012-09-11 at 8.31.50 PM.png +0 -0
- data/examples/sprk2012/Screen Shot 2012-09-11 at 9.23.27 PM.png +0 -0
- data/examples/sprk2012/Screen Shot 2012-09-11 at 9.32.06 PM.png +0 -0
- data/examples/sprk2012/Screen Shot 2012-09-11 at 9.33.35 PM.png +0 -0
- data/examples/sprk2012/Screen Shot 2012-09-11 at 9.46.44 PM.png +0 -0
- data/examples/sprk2012/Screen Shot 2012-09-12 at 5.07.23 PM.png +0 -0
- data/examples/sprk2012/basics.rb +11 -0
- data/examples/sprk2012/basics.xlsx +0 -0
- data/examples/sprk2012/gravatar.jpeg +0 -0
- data/examples/sprk2012/hair_club.jpg +0 -0
- data/examples/sprk2012/images.rb +9 -0
- data/examples/sprk2012/images.xlsx +0 -0
- data/examples/sprk2012/line_chart.rb +56 -0
- data/examples/sprk2012/line_chart.xlsx +0 -0
- data/examples/sprk2012/sprk2012.key +0 -0
- data/examples/sprk2012/styles.rb +20 -0
- data/examples/sprk2012/styles.xlsx +0 -0
- data/examples/styles.rb +62 -0
- data/examples/styles.xlsx +0 -0
- data/examples/two_cell_anchor_image.rb +11 -0
- data/lib/axlsx/content_type/content_type.rb +2 -0
- data/lib/axlsx/content_type/default.rb +30 -15
- data/lib/axlsx/content_type/override.rb +29 -14
- data/lib/axlsx/doc_props/app.rb +161 -104
- data/lib/axlsx/doc_props/core.rb +9 -5
- data/lib/axlsx/drawing/ax_data_source.rb +7 -6
- data/lib/axlsx/drawing/axis.rb +82 -36
- data/lib/axlsx/drawing/bar_3D_chart.rb +49 -45
- data/lib/axlsx/drawing/bar_series.rb +2 -1
- data/lib/axlsx/drawing/cat_axis.rb +43 -39
- data/lib/axlsx/drawing/chart.rb +65 -54
- data/lib/axlsx/drawing/d_lbls.rb +100 -0
- data/lib/axlsx/drawing/drawing.rb +20 -8
- data/lib/axlsx/drawing/graphic_frame.rb +2 -1
- data/lib/axlsx/drawing/line_3D_chart.rb +3 -10
- data/lib/axlsx/drawing/num_data.rb +2 -2
- data/lib/axlsx/drawing/num_data_source.rb +4 -1
- data/lib/axlsx/drawing/pic.rb +44 -4
- data/lib/axlsx/drawing/pie_3D_chart.rb +10 -7
- data/lib/axlsx/drawing/scatter_chart.rb +2 -8
- data/lib/axlsx/drawing/title.rb +21 -9
- data/lib/axlsx/drawing/two_cell_anchor.rb +46 -9
- data/lib/axlsx/drawing/view_3D.rb +42 -32
- data/lib/axlsx/drawing/vml_drawing.rb +42 -0
- data/lib/axlsx/drawing/vml_shape.rb +125 -0
- data/lib/axlsx/package.rb +43 -16
- data/lib/axlsx/rels/relationship.rb +3 -3
- data/lib/axlsx/rels/relationships.rb +1 -11
- data/lib/axlsx/stylesheet/gradient_fill.rb +1 -1
- data/lib/axlsx/stylesheet/styles.rb +11 -2
- data/lib/axlsx/stylesheet/table_style.rb +3 -3
- data/lib/axlsx/util/constants.rb +131 -2
- data/lib/axlsx/util/simple_typed_list.rb +18 -22
- data/lib/axlsx/util/validators.rb +100 -9
- data/lib/axlsx/version.rb +2 -7
- data/lib/axlsx/workbook/defined_name.rb +174 -0
- data/lib/axlsx/workbook/defined_names.rb +21 -0
- data/lib/axlsx/workbook/workbook.rb +70 -13
- data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -0
- data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +102 -0
- data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +253 -0
- data/lib/axlsx/workbook/worksheet/cell.rb +41 -8
- data/lib/axlsx/workbook/worksheet/col.rb +15 -0
- data/lib/axlsx/workbook/worksheet/cols.rb +20 -0
- data/lib/axlsx/workbook/worksheet/comment.rb +101 -0
- data/lib/axlsx/workbook/worksheet/comments.rb +85 -0
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -0
- data/lib/axlsx/workbook/worksheet/data_bar.rb +1 -1
- data/lib/axlsx/workbook/worksheet/data_validation.rb +245 -0
- data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -0
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +1 -1
- data/lib/axlsx/workbook/worksheet/dimension.rb +65 -0
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +35 -0
- data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +47 -0
- data/lib/axlsx/workbook/worksheet/page_setup.rb +241 -0
- data/lib/axlsx/workbook/worksheet/pane.rb +144 -0
- data/lib/axlsx/workbook/worksheet/print_options.rb +63 -0
- data/lib/axlsx/workbook/worksheet/protected_range.rb +46 -0
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +34 -0
- data/lib/axlsx/workbook/worksheet/row.rb +36 -20
- data/lib/axlsx/workbook/worksheet/selection.rb +111 -0
- data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +49 -0
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +25 -0
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +107 -0
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +224 -0
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +379 -0
- data/lib/axlsx/workbook/worksheet/table.rb +10 -3
- data/lib/axlsx/workbook/worksheet/table_style_info.rb +68 -0
- data/lib/axlsx/workbook/worksheet/tables.rb +31 -0
- data/lib/axlsx/workbook/worksheet/worksheet.rb +414 -254
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +57 -0
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +64 -0
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +101 -0
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -0
- data/lib/axlsx.rb +38 -16
- data/test/content_type/tc_content_type.rb +1 -6
- data/test/doc_props/tc_app.rb +31 -1
- data/test/doc_props/tc_core.rb +3 -1
- data/test/drawing/tc_axis.rb +38 -3
- data/test/drawing/tc_bar_3D_chart.rb +12 -12
- data/test/drawing/tc_bar_series.rb +1 -2
- data/test/drawing/tc_cat_axis.rb +3 -3
- data/test/drawing/tc_chart.rb +29 -9
- data/test/drawing/tc_d_lbls.rb +47 -0
- data/test/drawing/tc_drawing.rb +11 -5
- data/test/drawing/tc_hyperlink.rb +4 -5
- data/test/drawing/tc_line_series.rb +7 -3
- data/test/drawing/tc_num_data.rb +5 -1
- data/test/drawing/tc_pic.rb +22 -2
- data/test/drawing/tc_pie_3D_chart.rb +4 -8
- data/test/drawing/tc_pie_series.rb +7 -2
- data/test/drawing/tc_scatter_chart.rb +6 -1
- data/test/drawing/tc_scatter_series.rb +1 -1
- data/test/drawing/tc_series.rb +1 -1
- data/test/drawing/tc_title.rb +16 -0
- data/test/drawing/tc_two_cell_anchor.rb +1 -2
- data/test/drawing/tc_view_3D.rb +18 -18
- data/test/drawing/tc_vml_drawing.rb +25 -0
- data/test/drawing/tc_vml_shape.rb +100 -0
- data/test/rels/tc_relationship.rb +1 -0
- data/test/stylesheet/tc_gradient_fill.rb +8 -0
- data/test/stylesheet/tc_pattern_fill.rb +7 -1
- data/test/stylesheet/tc_styles.rb +16 -4
- data/test/stylesheet/tc_table_style.rb +8 -0
- data/test/stylesheet/tc_table_style_element.rb +10 -1
- data/test/tc_helper.rb +1 -0
- data/test/tc_package.rb +94 -17
- data/test/util/tc_simple_typed_list.rb +13 -0
- data/test/util/tc_validators.rb +101 -8
- data/test/workbook/tc_defined_name.rb +41 -0
- data/test/workbook/tc_workbook.rb +5 -3
- 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_cell.rb +53 -7
- data/test/workbook/worksheet/tc_col.rb +9 -0
- data/test/workbook/worksheet/tc_comment.rb +57 -0
- data/test/workbook/worksheet/tc_comments.rb +57 -0
- data/test/workbook/worksheet/tc_conditional_formatting.rb +44 -0
- data/test/workbook/worksheet/tc_data_bar.rb +1 -1
- data/test/workbook/worksheet/tc_data_validation.rb +265 -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 +94 -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 +32 -14
- data/test/workbook/worksheet/tc_selection.rb +94 -0
- data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -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/{table/tc_table.rb → tc_table.rb} +9 -12
- data/test/workbook/worksheet/tc_table_style_info.rb +53 -0
- data/test/workbook/worksheet/tc_worksheet.rb +155 -51
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +64 -0
- metadata +194 -81
- data/examples/#extractive.csv# +0 -0
- data/examples/#extractive.rb# +0 -45
- data/examples/chart_colors.rb~ +0 -0
- data/examples/chart_colors.xlsx +0 -0
- data/examples/colored_series_data.xlsx +0 -0
- data/examples/conditional_formatting/getting_barred.xlsx +0 -0
- data/examples/example.csv +0 -1000
- data/examples/extractive.csv +0 -1
- data/examples/extractive.csv~ +0 -1
- data/examples/extractive.rb~ +0 -3
- data/examples/stack.rb +0 -21
- data/examples/stack.rb~ +0 -27
- data/examples/stack.xlsx +0 -0
- data/examples/~$chart_colors.xlsx +0 -0
- data/examples/~$extractive.xlsx +0 -0
- data/lib/axlsx/drawing/ax_data_source.rb~ +0 -55
- data/lib/axlsx/drawing/data_source.rb~ +0 -51
- data/lib/axlsx/drawing/hlink_click.rb~ +0 -0
- data/lib/axlsx/drawing/hyperlink.rb~ +0 -64
- data/lib/axlsx/drawing/num_data.rb~ +0 -51
- data/lib/axlsx/drawing/num_data_source.rb~ +0 -54
- data/lib/axlsx/drawing/num_val.rb~ +0 -40
- data/lib/axlsx/drawing/picture_locking.rb~ +0 -36
- data/lib/axlsx/drawing/ref.rb~ +0 -41
- data/lib/axlsx/drawing/str_data.rb~ +0 -58
- data/lib/axlsx/drawing/str_val.rb~ +0 -35
- data/lib/axlsx/util/cbf.rb +0 -333
- data/lib/axlsx/util/cfb.rb~ +0 -201
- data/lib/axlsx/util/font_tables.rb~ +0 -0
- data/lib/axlsx/util/ms_off_crypto.rb +0 -189
- data/lib/axlsx/util/ms_off_crypto.rb~ +0 -3
- data/lib/axlsx/util/ms_offcrypto.rb~ +0 -0
- data/lib/axlsx/util/parser.rb~ +0 -6
- data/lib/axlsx/util/storage.rb~ +0 -0
- data/lib/axlsx/workbook/shared_strings_table.rb~ +0 -69
- data/lib/axlsx/workbook/worksheet/cfvo.rb~ +0 -0
- data/lib/axlsx/workbook/worksheet/col.rb~ +0 -0
- data/lib/axlsx/workbook/worksheet/color_scale.rb~ +0 -46
- data/lib/axlsx/workbook/worksheet/data_bar.rb~ +0 -0
- data/lib/axlsx/workbook/worksheet/icon_set.rb~ +0 -95
- data/lib/axlsx/workbook/worksheet/shared_strings_table.rb~ +0 -0
- data/lib/axlsx/workbook/worksheet/table.rb~ +0 -97
- data/lib/schema/dc.xsd~ +0 -118
- data/lib/schema/dcterms.xsd~ +0 -331
- data/lib/schema/opc-coreProperties.xsd~ +0 -50
- data/test/drawing/tc_data_source.rb~ +0 -30
- data/test/drawing/tc_num_data.rb~ +0 -35
- data/test/drawing/tc_num_val.rb~ +0 -29
- data/test/drawing/tc_str_data.rb~ +0 -30
- data/test/drawing/tc_str_val.rb~ +0 -26
- data/test/workbook/worksheet/table/tc_table.rb~ +0 -72
- data/test/workbook/worksheet/tc_cfvo.rb~ +0 -20
- data/test/workbook/worksheet/tc_col.rb~ +0 -10
- data/test/workbook/worksheet/tc_color_scale.rb~ +0 -0
- data/test/workbook/worksheet/tc_data_bar.rb~ +0 -0
- data/test/workbook/worksheet/tc_icon_set.rb~ +0 -0
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
require 'tc_helper'
|
|
2
|
+
|
|
3
|
+
class TestDLbls < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
@d_lbls = Axlsx::DLbls.new(Axlsx::Pie3DChart)
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def test_initialization
|
|
10
|
+
assert_equal(:bestFit, @d_lbls.d_lbl_pos)
|
|
11
|
+
Axlsx::DLbls::BOOLEAN_ATTRIBUTES.each do |attr|
|
|
12
|
+
assert_equal(false, @d_lbls.send(attr))
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def test_initialization_with_optoins
|
|
17
|
+
options_hash = Hash[*[Axlsx::DLbls::BOOLEAN_ATTRIBUTES.map { |name| [name, true] }] ]
|
|
18
|
+
d_lbls = Axlsx::DLbls.new(Axlsx::Pie3DChart, options_hash.merge( { :d_lbl_pos => :t }))
|
|
19
|
+
Axlsx::DLbls::BOOLEAN_ATTRIBUTES.each do |attr|
|
|
20
|
+
assert_equal(true, d_lbls.send(attr), "boolean attributes set by options")
|
|
21
|
+
end
|
|
22
|
+
assert_equal(:t, d_lbls.d_lbl_pos, "d_lbl_pos set by options")
|
|
23
|
+
end
|
|
24
|
+
def test_d_lbl_pos
|
|
25
|
+
assert_raise(ArgumentError, 'invlaid label positions are rejected') { @d_lbls.d_lbl_pos = :upside_down }
|
|
26
|
+
assert_nothing_raised('accepts valid label position') { @d_lbls.d_lbl_pos = :ctr }
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
def test_boolean_attributes
|
|
30
|
+
Axlsx::DLbls::BOOLEAN_ATTRIBUTES.each do |attr|
|
|
31
|
+
assert_raise(ArgumentError, "rejects non boolean value for #{attr}") { @d_lbls.send("#{attr}=", :foo) }
|
|
32
|
+
assert_nothing_raised("accepts boolean value for #{attr}") { @d_lbls.send("#{attr}=", true) }
|
|
33
|
+
assert_nothing_raised("accepts boolean value for #{attr}") { @d_lbls.send("#{attr}=", false) }
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def test_to_xml_string
|
|
38
|
+
str = '<?xml version="1.0" encoding="UTF-8"?>'
|
|
39
|
+
str << '<c:chartSpace xmlns:c="' << Axlsx::XML_NS_C << '" xmlns:a="' << Axlsx::XML_NS_A << '" xmlns:r="' << Axlsx::XML_NS_R << '">'
|
|
40
|
+
@d_lbls.to_xml_string(str)
|
|
41
|
+
str << '</c:chartSpace>'
|
|
42
|
+
doc = Nokogiri::XML(str)
|
|
43
|
+
@d_lbls.instance_values.each do |name, value|
|
|
44
|
+
assert(doc.xpath("//c:#{Axlsx::camel(name, false)}[@val='#{value}']"), "#{name} is properly serialized")
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
data/test/drawing/tc_drawing.rb
CHANGED
|
@@ -9,8 +9,6 @@ class TestDrawing < Test::Unit::TestCase
|
|
|
9
9
|
|
|
10
10
|
def test_initialization
|
|
11
11
|
assert(@ws.workbook.drawings.empty?)
|
|
12
|
-
assert_equal(@ws.drawing, @ws.workbook.drawings.last, "drawing is added to workbook")
|
|
13
|
-
assert(@ws.drawing.anchors.is_a?(Axlsx::SimpleTypedList) && @ws.drawing.anchors.empty?, "anchor list is created and empty")
|
|
14
12
|
end
|
|
15
13
|
|
|
16
14
|
def test_add_chart
|
|
@@ -32,9 +30,13 @@ class TestDrawing < Test::Unit::TestCase
|
|
|
32
30
|
assert_equal(600, image.width)
|
|
33
31
|
assert_equal(400, image.height)
|
|
34
32
|
end
|
|
35
|
-
|
|
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
|
|
36
39
|
def test_charts
|
|
37
|
-
assert(@ws.drawing.charts.empty?)
|
|
38
40
|
chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"bob", :start_at=>[0,0], :end_at=>[1,1])
|
|
39
41
|
assert_equal(@ws.drawing.charts.last, chart, "add chart is returned")
|
|
40
42
|
chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"nancy", :start_at=>[1,5], :end_at=>[5,10])
|
|
@@ -42,23 +44,26 @@ class TestDrawing < Test::Unit::TestCase
|
|
|
42
44
|
end
|
|
43
45
|
|
|
44
46
|
def test_pn
|
|
47
|
+
@ws.add_chart(Axlsx::Pie3DChart)
|
|
45
48
|
assert_equal(@ws.drawing.pn, "drawings/drawing1.xml")
|
|
46
49
|
end
|
|
47
50
|
|
|
48
51
|
def test_rels_pn
|
|
52
|
+
@ws.add_chart(Axlsx::Pie3DChart)
|
|
49
53
|
assert_equal(@ws.drawing.rels_pn, "drawings/_rels/drawing1.xml.rels")
|
|
50
54
|
end
|
|
51
55
|
|
|
52
56
|
def test_rId
|
|
57
|
+
@ws.add_chart(Axlsx::Pie3DChart)
|
|
53
58
|
assert_equal(@ws.drawing.rId, "rId1")
|
|
54
59
|
end
|
|
55
60
|
|
|
56
61
|
def test_index
|
|
62
|
+
@ws.add_chart(Axlsx::Pie3DChart)
|
|
57
63
|
assert_equal(@ws.drawing.index, @ws.workbook.drawings.index(@ws.drawing))
|
|
58
64
|
end
|
|
59
65
|
|
|
60
66
|
def test_relationships
|
|
61
|
-
assert(@ws.drawing.relationships.empty?)
|
|
62
67
|
chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"bob", :start_at=>[0,0], :end_at=>[1,1])
|
|
63
68
|
assert_equal(@ws.drawing.relationships.size, 1, "adding a chart adds a relationship")
|
|
64
69
|
chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"nancy", :start_at=>[1,5], :end_at=>[5,10])
|
|
@@ -67,6 +72,7 @@ class TestDrawing < Test::Unit::TestCase
|
|
|
67
72
|
|
|
68
73
|
def test_to_xml
|
|
69
74
|
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
|
75
|
+
@ws.add_chart(Axlsx::Pie3DChart)
|
|
70
76
|
doc = Nokogiri::XML(@ws.drawing.to_xml_string)
|
|
71
77
|
errors = []
|
|
72
78
|
schema.validate(doc).each do |error|
|
|
@@ -19,11 +19,6 @@ class TestHyperlink < Test::Unit::TestCase
|
|
|
19
19
|
assert_equal(@hyperlink.href, "http://axlsx.blogspot.com")
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
def test_invalidUrl
|
|
23
|
-
assert_nothing_raised { @hyperlink.invalidUrl = "http://axlsx.blogspot.com" }
|
|
24
|
-
assert_equal(@hyperlink.invalidUrl, "http://axlsx.blogspot.com")
|
|
25
|
-
end
|
|
26
|
-
|
|
27
22
|
def test_tgtFrame
|
|
28
23
|
assert_nothing_raised { @hyperlink.tgtFrame = "http://axlsx.blogspot.com" }
|
|
29
24
|
assert_equal(@hyperlink.tgtFrame, "http://axlsx.blogspot.com")
|
|
@@ -66,4 +61,8 @@ class TestHyperlink < Test::Unit::TestCase
|
|
|
66
61
|
assert_equal(@hyperlink.history, false )
|
|
67
62
|
end
|
|
68
63
|
|
|
64
|
+
def test_to_xml_string
|
|
65
|
+
doc = Nokogiri::XML(@p.workbook.worksheets.first.drawing.to_xml_string)
|
|
66
|
+
assert(doc.xpath("//a:hlinkClick"))
|
|
67
|
+
end
|
|
69
68
|
end
|
|
@@ -5,8 +5,8 @@ class TestLineSeries < Test::Unit::TestCase
|
|
|
5
5
|
def setup
|
|
6
6
|
p = Axlsx::Package.new
|
|
7
7
|
@ws = p.workbook.add_worksheet :name=>"hmmm"
|
|
8
|
-
chart = @ws.
|
|
9
|
-
@series = chart.add_series :data=>[0,1,2], :labels=>["zero", "one", "two"], :title=>"bob"
|
|
8
|
+
chart = @ws.add_chart Axlsx::Line3DChart, :title => "fishery"
|
|
9
|
+
@series = chart.add_series :data=>[0,1,2], :labels=>["zero", "one", "two"], :title=>"bob", :color => "#FF0000"
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def test_initialize
|
|
@@ -15,6 +15,10 @@ class TestLineSeries < Test::Unit::TestCase
|
|
|
15
15
|
assert_equal(@series.data.class, Axlsx::NumDataSource)
|
|
16
16
|
|
|
17
17
|
end
|
|
18
|
-
|
|
18
|
+
|
|
19
|
+
def test_to_xml_string
|
|
20
|
+
doc = Nokogiri::XML(@series.to_xml_string)
|
|
21
|
+
assert(doc.xpath("//srgbClr[@val='#{@series.color}']"))
|
|
22
|
+
end
|
|
19
23
|
#TODO serialization testing
|
|
20
24
|
end
|
data/test/drawing/tc_num_data.rb
CHANGED
|
@@ -9,7 +9,11 @@ class TestNumData < Test::Unit::TestCase
|
|
|
9
9
|
def test_initialize
|
|
10
10
|
assert_equal(@num_data.format_code, "General")
|
|
11
11
|
end
|
|
12
|
-
|
|
12
|
+
|
|
13
|
+
def test_formula_based_cell
|
|
14
|
+
|
|
15
|
+
end
|
|
16
|
+
|
|
13
17
|
def test_format_code
|
|
14
18
|
assert_raise(ArgumentError) {@num_data.format_code = 7}
|
|
15
19
|
assert_nothing_raised {@num_data.format_code = 'foo_bar'}
|
data/test/drawing/tc_pic.rb
CHANGED
|
@@ -6,7 +6,7 @@ class TestPic < Test::Unit::TestCase
|
|
|
6
6
|
@p = Axlsx::Package.new
|
|
7
7
|
ws = @p.workbook.add_worksheet
|
|
8
8
|
@test_img = File.dirname(__FILE__) + "/../../examples/image1.jpeg"
|
|
9
|
-
@image = ws.add_image :image_src => @test_img
|
|
9
|
+
@image = ws.add_image :image_src => @test_img, :hyperlink => 'https://github.com/randym', :tooltip => "What's up doc?"
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def teardown
|
|
@@ -14,11 +14,31 @@ class TestPic < Test::Unit::TestCase
|
|
|
14
14
|
|
|
15
15
|
def test_initialization
|
|
16
16
|
assert_equal(@p.workbook.images.first, @image)
|
|
17
|
+
assert_equal(@image.file_name, 'image1.jpeg')
|
|
17
18
|
assert_equal(@image.image_src, @test_img)
|
|
18
19
|
end
|
|
19
20
|
|
|
21
|
+
def test_anchor_swapping
|
|
22
|
+
#swap from one cell to two cell when end_at is specified
|
|
23
|
+
assert(@image.anchor.is_a?(Axlsx::OneCellAnchor))
|
|
24
|
+
start_at = @image.anchor.from
|
|
25
|
+
@image.end_at 10,5
|
|
26
|
+
assert(@image.anchor.is_a?(Axlsx::TwoCellAnchor))
|
|
27
|
+
assert_equal(start_at.col, @image.anchor.from.col)
|
|
28
|
+
assert_equal(start_at.row, @image.anchor.from.row)
|
|
29
|
+
assert_equal(10,@image.anchor.to.col)
|
|
30
|
+
assert_equal(5, @image.anchor.to.row)
|
|
31
|
+
|
|
32
|
+
#swap from two cell to one cell when width or height are specified
|
|
33
|
+
@image.width = 200
|
|
34
|
+
assert(@image.anchor.is_a?(Axlsx::OneCellAnchor))
|
|
35
|
+
assert_equal(start_at.col, @image.anchor.from.col)
|
|
36
|
+
assert_equal(start_at.row, @image.anchor.from.row)
|
|
37
|
+
assert_equal(200, @image.width)
|
|
38
|
+
|
|
39
|
+
end
|
|
20
40
|
def test_hyperlink
|
|
21
|
-
assert_equal(@image.hyperlink,
|
|
41
|
+
assert_equal(@image.hyperlink.href, "https://github.com/randym")
|
|
22
42
|
@image.hyperlink = "http://axlsx.blogspot.com"
|
|
23
43
|
assert_equal(@image.hyperlink.href, "http://axlsx.blogspot.com")
|
|
24
44
|
end
|
|
@@ -6,26 +6,22 @@ class TestPie3DChart < Test::Unit::TestCase
|
|
|
6
6
|
p = Axlsx::Package.new
|
|
7
7
|
ws = p.workbook.add_worksheet
|
|
8
8
|
@row = ws.add_row ["one", 1, Time.now]
|
|
9
|
-
@chart = ws.
|
|
9
|
+
@chart = ws.add_chart Axlsx::Pie3DChart, :title => "fishery"
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def teardown
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def test_initialization
|
|
16
|
-
assert_equal(@chart.
|
|
17
|
-
assert_equal(@chart.
|
|
16
|
+
assert_equal(@chart.view_3D.rot_x, 30, "view 3d default rot_x incorrect")
|
|
17
|
+
assert_equal(@chart.view_3D.perspective, 30, "view_3d default perspective incorrect")
|
|
18
18
|
assert_equal(@chart.series_type, Axlsx::PieSeries, "series type incorrect")
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
def test_to_xml
|
|
22
22
|
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
|
23
23
|
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
24
|
-
errors =
|
|
25
|
-
schema.validate(doc).each do |error|
|
|
26
|
-
errors.push error
|
|
27
|
-
puts error.message
|
|
28
|
-
end
|
|
24
|
+
errors = schema.validate(doc).map {|error| puts error.message; error }
|
|
29
25
|
assert(errors.empty?, "error free validation")
|
|
30
26
|
end
|
|
31
27
|
|
|
@@ -5,8 +5,8 @@ class TestPieSeries < Test::Unit::TestCase
|
|
|
5
5
|
def setup
|
|
6
6
|
p = Axlsx::Package.new
|
|
7
7
|
@ws = p.workbook.add_worksheet :name=>"hmmm"
|
|
8
|
-
chart = @ws.
|
|
9
|
-
@series = chart.add_series :data=>[0,1,2], :labels=>["zero", "one", "two"], :title=>"bob"
|
|
8
|
+
chart = @ws.add_chart Axlsx::Pie3DChart, :title => "fishery"
|
|
9
|
+
@series = chart.add_series :data=>[0,1,2], :labels=>["zero", "one", "two"], :title=>"bob", :colors => ["FF0000", "00FF00", "0000FF"]
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def test_initialize
|
|
@@ -22,6 +22,11 @@ class TestPieSeries < Test::Unit::TestCase
|
|
|
22
22
|
assert(@series.explosion == 20)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
+
def test_to_xml_string
|
|
26
|
+
doc = Nokogiri::XML(@series.to_xml_string)
|
|
27
|
+
assert(doc.xpath("//srgbClr[@val='#{@series.colors[0]}']"))
|
|
28
|
+
|
|
29
|
+
end
|
|
25
30
|
#TODO test unique serialization parts
|
|
26
31
|
|
|
27
32
|
end
|
|
@@ -4,7 +4,7 @@ class TestScatterChart < Test::Unit::TestCase
|
|
|
4
4
|
def setup
|
|
5
5
|
@p = Axlsx::Package.new
|
|
6
6
|
@chart = nil
|
|
7
|
-
|
|
7
|
+
@p.workbook.add_worksheet do |sheet|
|
|
8
8
|
sheet.add_row ["First", 1, 5, 7, 9]
|
|
9
9
|
sheet.add_row ["", 1, 25, 49, 81]
|
|
10
10
|
sheet.add_row ["Second", 5, 2, 14, 9]
|
|
@@ -22,6 +22,11 @@ class TestScatterChart < Test::Unit::TestCase
|
|
|
22
22
|
def teardown
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
+
def test_scatter_style
|
|
26
|
+
@chart.scatterStyle = :marker
|
|
27
|
+
assert(@chart.scatterStyle == :marker)
|
|
28
|
+
assert_raise(ArgumentError) { @chart.scatterStyle = :buckshot }
|
|
29
|
+
end
|
|
25
30
|
def test_initialization
|
|
26
31
|
assert_equal(@chart.scatterStyle, :lineMarker, "scatterStyle defualt incorrect")
|
|
27
32
|
assert_equal(@chart.series_type, Axlsx::ScatterSeries, "series type incorrect")
|
|
@@ -5,7 +5,7 @@ class TestScatterSeries < Test::Unit::TestCase
|
|
|
5
5
|
def setup
|
|
6
6
|
p = Axlsx::Package.new
|
|
7
7
|
@ws = p.workbook.add_worksheet :name=>"hmmm"
|
|
8
|
-
@chart = @ws.
|
|
8
|
+
@chart = @ws.add_chart Axlsx::ScatterChart, :title => "Scatter Chart"
|
|
9
9
|
@series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9], :title=>"exponents", :color => 'FF0000'
|
|
10
10
|
end
|
|
11
11
|
|
data/test/drawing/tc_series.rb
CHANGED
|
@@ -5,7 +5,7 @@ class TestSeries < Test::Unit::TestCase
|
|
|
5
5
|
def setup
|
|
6
6
|
p = Axlsx::Package.new
|
|
7
7
|
@ws = p.workbook.add_worksheet :name=>"hmmm"
|
|
8
|
-
chart = @ws.
|
|
8
|
+
chart = @ws.add_chart Axlsx::Chart, :title => "fishery"
|
|
9
9
|
@series = chart.add_series :title=>"bob"
|
|
10
10
|
end
|
|
11
11
|
|
data/test/drawing/tc_title.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../"
|
|
2
|
+
|
|
1
3
|
require 'tc_helper.rb'
|
|
2
4
|
|
|
3
5
|
class TestTitle < Test::Unit::TestCase
|
|
@@ -30,4 +32,18 @@ class TestTitle < Test::Unit::TestCase
|
|
|
30
32
|
assert(@title.text == "one")
|
|
31
33
|
end
|
|
32
34
|
|
|
35
|
+
def test_to_xml_string_text
|
|
36
|
+
@chart.title.text = 'foo'
|
|
37
|
+
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
38
|
+
assert_equal(1, doc.xpath('//c:rich').size)
|
|
39
|
+
assert_equal(1, doc.xpath("//a:t[text()='foo']").size)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def test_to_xml_string_cell
|
|
43
|
+
@chart.title.cell = @row.cells.first
|
|
44
|
+
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
45
|
+
assert_equal(1, doc.xpath('//c:strCache').size)
|
|
46
|
+
assert_equal(1, doc.xpath('//c:v[text()="one"]').size)
|
|
47
|
+
end
|
|
48
|
+
|
|
33
49
|
end
|
|
@@ -5,8 +5,7 @@ class TestTwoCellAnchor < Test::Unit::TestCase
|
|
|
5
5
|
def setup
|
|
6
6
|
p = Axlsx::Package.new
|
|
7
7
|
@ws = p.workbook.add_worksheet
|
|
8
|
-
|
|
9
|
-
title = Axlsx::Title.new
|
|
8
|
+
@ws.add_row ["one", 1, Time.now]
|
|
10
9
|
chart = @ws.add_chart Axlsx::Bar3DChart
|
|
11
10
|
@anchor = chart.graphic_frame.anchor
|
|
12
11
|
end
|
data/test/drawing/tc_view_3D.rb
CHANGED
|
@@ -9,33 +9,33 @@ class TestView3D < Test::Unit::TestCase
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def test_options
|
|
12
|
-
v = Axlsx::View3D.new :
|
|
13
|
-
assert_equal(v.
|
|
14
|
-
assert_equal(v.
|
|
15
|
-
assert_equal(v.
|
|
16
|
-
assert_equal(v.
|
|
17
|
-
assert_equal(v.
|
|
12
|
+
v = Axlsx::View3D.new :rot_x => 10, :rot_y => 5, :h_percent => "30%", :depth_percent => "45%", :r_ang_ax => false, :perspective => 10
|
|
13
|
+
assert_equal(v.rot_x, 10)
|
|
14
|
+
assert_equal(v.rot_y, 5)
|
|
15
|
+
assert_equal(v.h_percent, "30%")
|
|
16
|
+
assert_equal(v.depth_percent, "45%")
|
|
17
|
+
assert_equal(v.r_ang_ax, false)
|
|
18
18
|
assert_equal(v.perspective, 10)
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
def
|
|
22
|
-
assert_raise(ArgumentError) {@view.
|
|
23
|
-
assert_nothing_raised {@view.
|
|
21
|
+
def test_rot_x
|
|
22
|
+
assert_raise(ArgumentError) {@view.rot_x = "bob"}
|
|
23
|
+
assert_nothing_raised {@view.rot_x = -90}
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
def
|
|
27
|
-
assert_raise(ArgumentError) {@view.
|
|
28
|
-
assert_nothing_raised {@view.
|
|
26
|
+
def test_rot_y
|
|
27
|
+
assert_raise(ArgumentError) {@view.rot_y = "bob"}
|
|
28
|
+
assert_nothing_raised {@view.rot_y = 90}
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
def
|
|
32
|
-
assert_raise(ArgumentError) {@view.
|
|
33
|
-
assert_nothing_raised {@view.
|
|
31
|
+
def test_h_percent
|
|
32
|
+
assert_raise(ArgumentError) {@view.h_percent = "bob"}
|
|
33
|
+
assert_nothing_raised {@view.h_percent = "500%"}
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
def
|
|
37
|
-
assert_raise(ArgumentError) {@view.
|
|
38
|
-
assert_nothing_raised {@view.
|
|
36
|
+
def test_depth_percent
|
|
37
|
+
assert_raise(ArgumentError) {@view.depth_percent = "bob"}
|
|
38
|
+
assert_nothing_raised {@view.depth_percent = "20%"}
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestVmlDrawing < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
p = Axlsx::Package.new
|
|
7
|
+
wb = p.workbook
|
|
8
|
+
@ws = wb.add_worksheet
|
|
9
|
+
@ws.add_comment :ref => 'A1', :text => 'penut machine', :author => 'crank'
|
|
10
|
+
@ws.add_comment :ref => 'C3', :text => 'rust bucket', :author => 'PO'
|
|
11
|
+
@vml_drawing = @ws.comments.vml_drawing
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_initialize
|
|
15
|
+
assert_raise(ArgumentError) { Axlsx::VmlDrawing.new }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_to_xml_string
|
|
19
|
+
str = @vml_drawing.to_xml_string()
|
|
20
|
+
doc = Nokogiri::XML(str)
|
|
21
|
+
assert_equal(doc.xpath("//v:shape").size, 2)
|
|
22
|
+
assert(doc.xpath("//o:idmap[@o:data='#{@ws.index+1}']"))
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestVmlShape < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
p = Axlsx::Package.new
|
|
7
|
+
wb = p.workbook
|
|
8
|
+
@ws = wb.add_worksheet
|
|
9
|
+
@ws.add_comment :ref => 'A1', :text => 'penut machine', :author => 'crank'
|
|
10
|
+
@ws.add_comment :ref => 'C3', :text => 'rust bucket', :author => 'PO'
|
|
11
|
+
@comments = @ws.comments
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_initialize
|
|
15
|
+
assert_raise(ArgumentError) { Axlsx::VmlDrawing.new }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_row
|
|
19
|
+
shape = @comments.first.vml_shape
|
|
20
|
+
assert_equal(shape.row, 0)
|
|
21
|
+
shape = @comments.last.vml_shape
|
|
22
|
+
assert_equal(shape.row, 2)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_column
|
|
26
|
+
shape = @comments.first.vml_shape
|
|
27
|
+
assert_equal(shape.column, 0)
|
|
28
|
+
shape = @comments.last.vml_shape
|
|
29
|
+
assert_equal(shape.column, 2)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_left_column
|
|
33
|
+
shape = @comments.first.vml_shape
|
|
34
|
+
shape.left_column = 3
|
|
35
|
+
assert(shape.left_column == 3)
|
|
36
|
+
assert_raise(ArgumentError) { shape.left_column = [] }
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_left_offset
|
|
40
|
+
shape = @comments.first.vml_shape
|
|
41
|
+
shape.left_offset = 3
|
|
42
|
+
assert(shape.left_offset == 3)
|
|
43
|
+
assert_raise(ArgumentError) { shape.left_offset = [] }
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_right_column
|
|
47
|
+
shape = @comments.first.vml_shape
|
|
48
|
+
shape.right_column = 3
|
|
49
|
+
assert(shape.right_column == 3)
|
|
50
|
+
assert_raise(ArgumentError) { shape.right_column = [] }
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_right_offset
|
|
54
|
+
shape = @comments.first.vml_shape
|
|
55
|
+
shape.right_offset = 3
|
|
56
|
+
assert(shape.right_offset == 3)
|
|
57
|
+
assert_raise(ArgumentError) { shape.right_offset = [] }
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def test_top_offset
|
|
61
|
+
shape = @comments.first.vml_shape
|
|
62
|
+
shape.top_offset = 3
|
|
63
|
+
assert(shape.top_offset == 3)
|
|
64
|
+
assert_raise(ArgumentError) { shape.top_offset = [] }
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def test_bottom_offset
|
|
68
|
+
shape = @comments.first.vml_shape
|
|
69
|
+
shape.bottom_offset = 3
|
|
70
|
+
assert(shape.bottom_offset == 3)
|
|
71
|
+
assert_raise(ArgumentError) { shape.bottom_offset = [] }
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_bottom_row
|
|
75
|
+
shape = @comments.first.vml_shape
|
|
76
|
+
shape.bottom_row = 3
|
|
77
|
+
assert(shape.bottom_row == 3)
|
|
78
|
+
assert_raise(ArgumentError) { shape.bottom_row = [] }
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def test_top_row
|
|
82
|
+
shape = @comments.first.vml_shape
|
|
83
|
+
shape.top_row = 3
|
|
84
|
+
assert(shape.top_row == 3)
|
|
85
|
+
assert_raise(ArgumentError) { shape.top_row = [] }
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def test_to_xml_string
|
|
89
|
+
str = @comments.vml_drawing.to_xml_string()
|
|
90
|
+
doc = Nokogiri::XML(str)
|
|
91
|
+
assert_equal(doc.xpath("//v:shape").size, 2)
|
|
92
|
+
@comments.each do |comment|
|
|
93
|
+
shape = comment.vml_shape
|
|
94
|
+
assert(doc.xpath("//v:shape/x:ClientData/x:Row[text()='#{shape.row}']").size == 1)
|
|
95
|
+
assert(doc.xpath("//v:shape/x:ClientData/x:Column[text()='#{shape.column}']").size == 1)
|
|
96
|
+
assert(doc.xpath("//v:shape/x:ClientData/x:Anchor[text()='#{shape.left_column}, #{shape.left_offset}, #{shape.top_row}, #{shape.top_offset}, #{shape.right_column}, #{shape.right_offset}, #{shape.bottom_row}, #{shape.bottom_offset}']").size == 1)
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
end
|
|
@@ -10,6 +10,7 @@ class TestRelationships < Test::Unit::TestCase
|
|
|
10
10
|
def test_type
|
|
11
11
|
assert_raise(ArgumentError) { Axlsx::Relationship.new 'type', 'target' }
|
|
12
12
|
assert_nothing_raised { Axlsx::Relationship.new Axlsx::WORKSHEET_R, 'target' }
|
|
13
|
+
assert_nothing_raised { Axlsx::Relationship.new Axlsx::COMMENT_R, 'target' }
|
|
13
14
|
end
|
|
14
15
|
|
|
15
16
|
def test_target_mode
|
|
@@ -61,4 +61,12 @@ class TestGradientFill < Test::Unit::TestCase
|
|
|
61
61
|
assert(@item.stop.size == 1)
|
|
62
62
|
assert(@item.stop.last.is_a?(Axlsx::GradientStop))
|
|
63
63
|
end
|
|
64
|
+
|
|
65
|
+
def test_to_xml_string
|
|
66
|
+
@item.stop << Axlsx::GradientStop.new(Axlsx::Color.new(:rgb => "000000"), 0.5)
|
|
67
|
+
@item.stop << Axlsx::GradientStop.new(Axlsx::Color.new(:rgb => "FFFFFF"), 0.5)
|
|
68
|
+
@item.type = :path
|
|
69
|
+
doc = Nokogiri::XML(@item.to_xml_string)
|
|
70
|
+
assert(doc.xpath("//color[@rgb='FF000000']"))
|
|
71
|
+
end
|
|
64
72
|
end
|
|
@@ -33,5 +33,11 @@ class TestPatternFill < Test::Unit::TestCase
|
|
|
33
33
|
assert_nothing_raised { @item.patternType = :lightUp }
|
|
34
34
|
assert_equal(@item.patternType, :lightUp)
|
|
35
35
|
end
|
|
36
|
-
|
|
36
|
+
|
|
37
|
+
def test_to_xml_string
|
|
38
|
+
@item = Axlsx::PatternFill.new :bgColor => Axlsx::Color.new(:rgb => "FF0000"), :fgColor => Axlsx::Color.new(:rgb=>"00FF00")
|
|
39
|
+
doc = Nokogiri::XML(@item.to_xml_string)
|
|
40
|
+
assert(doc.xpath('//color[@rgb="FFFF0000"]'))
|
|
41
|
+
assert(doc.xpath('//color[@rgb="FF00FF00"]'))
|
|
42
|
+
end
|
|
37
43
|
end
|
|
@@ -19,7 +19,7 @@ class TestStyles < Test::Unit::TestCase
|
|
|
19
19
|
end
|
|
20
20
|
def test_add_style_border_hash
|
|
21
21
|
border_count = @styles.borders.size
|
|
22
|
-
|
|
22
|
+
@styles.add_style :border => {:style => :thin, :color => "FFFF0000"}
|
|
23
23
|
assert_equal(@styles.borders.size, border_count + 1)
|
|
24
24
|
assert_equal(@styles.borders.last.prs.last.color.rgb, "FFFF0000")
|
|
25
25
|
assert_raise(ArgumentError) { @styles.add_style :border => {:color => "FFFF0000"} }
|
|
@@ -27,7 +27,7 @@ class TestStyles < Test::Unit::TestCase
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def test_add_style_border_edges
|
|
30
|
-
|
|
30
|
+
@styles.add_style :border => { :style => :thin, :color => "0000FFFF", :edges => [:top, :bottom] }
|
|
31
31
|
parts = @styles.borders.last.prs
|
|
32
32
|
parts.each { |pr| assert_equal(pr.color.rgb, "0000FFFF", "Style is applied to #{pr.name} properly") }
|
|
33
33
|
assert((parts.map { |pr| pr.name.to_s }.sort && ['bottom', 'top']).size == 2, "specify two edges, and you get two border prs")
|
|
@@ -44,7 +44,6 @@ class TestStyles < Test::Unit::TestCase
|
|
|
44
44
|
def test_parse_num_fmt
|
|
45
45
|
f_code = {:format_code => "YYYY/MM"}
|
|
46
46
|
num_fmt = {:num_fmt => 5}
|
|
47
|
-
both = { :format_code => "#000", :num_fmt => 0 }
|
|
48
47
|
assert_equal(@styles.parse_num_fmt_options, nil, 'noop if neither :format_code or :num_fmt exist')
|
|
49
48
|
max = @styles.numFmts.map{ |nf| nf.numFmtId }.max
|
|
50
49
|
@styles.parse_num_fmt_options(f_code)
|
|
@@ -106,6 +105,19 @@ class TestStyles < Test::Unit::TestCase
|
|
|
106
105
|
assert(@styles.parse_alignment_options(:alignment => {}).is_a?(Axlsx::CellAlignment))
|
|
107
106
|
end
|
|
108
107
|
|
|
108
|
+
def test_parse_font_using_defaults
|
|
109
|
+
original = @styles.fonts.first
|
|
110
|
+
@styles.add_style :b => 1, :sz => 99
|
|
111
|
+
created = @styles.fonts.last
|
|
112
|
+
original_attributes = original.instance_values
|
|
113
|
+
assert_equal(1, created.b)
|
|
114
|
+
assert_equal(99, created.sz)
|
|
115
|
+
copied = original_attributes.reject{ |key, value| %w(b sz).include? key }
|
|
116
|
+
copied.each do |key, value|
|
|
117
|
+
assert_equal(created.instance_values[key], value)
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
109
121
|
def test_parse_font_options
|
|
110
122
|
options = {
|
|
111
123
|
:fg_color => "FF050505",
|
|
@@ -181,7 +193,7 @@ class TestStyles < Test::Unit::TestCase
|
|
|
181
193
|
|
|
182
194
|
def test_basic_add_style_dxf
|
|
183
195
|
border_count = @styles.borders.size
|
|
184
|
-
|
|
196
|
+
@styles.add_style :border => {:style => :thin, :color => "FFFF0000"}, :type => :dxf
|
|
185
197
|
assert_equal(@styles.borders.size, border_count, "styles borders not affected")
|
|
186
198
|
assert_equal(@styles.dxfs.last.border.prs.last.color.rgb, "FFFF0000")
|
|
187
199
|
assert_raise(ArgumentError) { @styles.add_style :border => {:color => "FFFF0000"}, :type => :dxf }
|
|
@@ -13,6 +13,10 @@ class TestTableStyle < Test::Unit::TestCase
|
|
|
13
13
|
assert_equal(@item.name, "fisher")
|
|
14
14
|
assert_equal(@item.pivot, nil)
|
|
15
15
|
assert_equal(@item.table, nil)
|
|
16
|
+
ts = Axlsx::TableStyle.new 'price', :pivot => true, :table => true
|
|
17
|
+
assert_equal(ts.name, 'price')
|
|
18
|
+
assert_equal(ts.pivot, true)
|
|
19
|
+
assert_equal(ts.table, true)
|
|
16
20
|
end
|
|
17
21
|
|
|
18
22
|
def test_name
|
|
@@ -33,4 +37,8 @@ class TestTableStyle < Test::Unit::TestCase
|
|
|
33
37
|
assert_equal(@item.table, true)
|
|
34
38
|
end
|
|
35
39
|
|
|
40
|
+
def test_to_xml_string
|
|
41
|
+
doc = Nokogiri::XML(@item.to_xml_string)
|
|
42
|
+
assert(doc.xpath("//tableStyle[@name='#{@item.name}']"))
|
|
43
|
+
end
|
|
36
44
|
end
|
|
@@ -13,6 +13,10 @@ class TestTableStyleElement < Test::Unit::TestCase
|
|
|
13
13
|
assert_equal(@item.type, nil)
|
|
14
14
|
assert_equal(@item.size, nil)
|
|
15
15
|
assert_equal(@item.dxfId, nil)
|
|
16
|
+
options = { :type => :headerRow, :size => 10, :dxfId => 1 }
|
|
17
|
+
|
|
18
|
+
tse = Axlsx::TableStyleElement.new options
|
|
19
|
+
options.each { |key, value| assert_equal(tse.send(key.to_sym), value) }
|
|
16
20
|
end
|
|
17
21
|
|
|
18
22
|
def test_type
|
|
@@ -32,5 +36,10 @@ class TestTableStyleElement < Test::Unit::TestCase
|
|
|
32
36
|
assert_nothing_raised { @item.dxfId = 7 }
|
|
33
37
|
assert_equal(@item.dxfId, 7)
|
|
34
38
|
end
|
|
35
|
-
|
|
39
|
+
|
|
40
|
+
def test_to_xml_string
|
|
41
|
+
doc = Nokogiri::XML(@item.to_xml_string)
|
|
42
|
+
@item.type = :headerRow
|
|
43
|
+
assert(doc.xpath("//tableStyleElement[@type='#{@item.type.to_s}']"))
|
|
44
|
+
end
|
|
36
45
|
end
|
data/test/tc_helper.rb
CHANGED