caxlsx 3.1.1 → 3.3.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/CHANGELOG.md +43 -1
- data/README.md +4 -11
- data/lib/axlsx/content_type/abstract_content_type.rb +1 -1
- data/lib/axlsx/doc_props/app.rb +1 -1
- data/lib/axlsx/drawing/chart.rb +25 -2
- data/lib/axlsx/drawing/d_lbls.rb +3 -2
- data/lib/axlsx/drawing/scatter_series.rb +31 -0
- data/lib/axlsx/drawing/title.rb +11 -1
- data/lib/axlsx/drawing/view_3D.rb +1 -1
- data/lib/axlsx/package.rb +15 -5
- data/lib/axlsx/rels/relationship.rb +1 -1
- data/lib/axlsx/stylesheet/border.rb +2 -0
- data/lib/axlsx/stylesheet/font.rb +1 -1
- data/lib/axlsx/stylesheet/styles.rb +139 -24
- data/lib/axlsx/util/constants.rb +16 -1
- data/lib/axlsx/util/serialized_attributes.rb +2 -2
- data/lib/axlsx/util/storage.rb +9 -9
- data/lib/axlsx/version.rb +1 -1
- data/lib/axlsx/workbook/workbook.rb +55 -0
- data/lib/axlsx/workbook/worksheet/border_creator.rb +76 -0
- data/lib/axlsx/workbook/worksheet/cell.rb +29 -2
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +1 -1
- data/lib/axlsx/workbook/worksheet/col.rb +4 -4
- data/lib/axlsx/workbook/worksheet/data_validation.rb +26 -5
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +55 -14
- data/lib/axlsx/workbook/worksheet/rich_text_run.rb +1 -1
- data/lib/axlsx/workbook/worksheet/worksheet.rb +68 -7
- data/lib/axlsx.rb +43 -10
- metadata +6 -253
- 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 -56
- 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 -261
- 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 -314
- 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 -160
- 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 -453
- 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 -143
- 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 -601
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
data/test/drawing/tc_num_val.rb
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
require 'tc_helper.rb'
|
2
|
-
|
3
|
-
class TestNumVal < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
@num_val = Axlsx::NumVal.new :v => 1
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_initialize
|
10
|
-
assert_equal(@num_val.format_code, "General")
|
11
|
-
assert_equal(@num_val.v, "1")
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_format_code
|
15
|
-
assert_raise(ArgumentError) {@num_val.format_code = 7}
|
16
|
-
assert_nothing_raised {@num_val.format_code = 'foo_bar'}
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_to_xml_string
|
20
|
-
str = '<?xml version="1.0" encoding="UTF-8"?>'
|
21
|
-
str << '<c:chartSpace xmlns:c="' << Axlsx::XML_NS_C << '">'
|
22
|
-
str << @num_val.to_xml_string(0)
|
23
|
-
doc = Nokogiri::XML(str)
|
24
|
-
# lets see if this works?
|
25
|
-
assert_equal(doc.xpath("//c:pt/c:v[text()='1']").size, 1)
|
26
|
-
|
27
|
-
end
|
28
|
-
|
29
|
-
end
|
@@ -1,66 +0,0 @@
|
|
1
|
-
require 'tc_helper.rb'
|
2
|
-
|
3
|
-
class TestOneCellAnchor < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
@p = Axlsx::Package.new
|
7
|
-
@ws = @p.workbook.add_worksheet
|
8
|
-
@test_img = File.dirname(__FILE__) + "/../fixtures/image1.jpeg"
|
9
|
-
@image = @ws.add_image :image_src => @test_img
|
10
|
-
@anchor = @image.anchor
|
11
|
-
end
|
12
|
-
|
13
|
-
def teardown
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_initialization
|
17
|
-
assert(@anchor.from.col == 0)
|
18
|
-
assert(@anchor.from.row == 0)
|
19
|
-
assert(@anchor.width == 0)
|
20
|
-
assert(@anchor.height == 0)
|
21
|
-
end
|
22
|
-
|
23
|
-
def test_from
|
24
|
-
assert(@anchor.from.is_a?(Axlsx::Marker))
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_object
|
28
|
-
assert(@anchor.object.is_a?(Axlsx::Pic))
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_index
|
32
|
-
assert_equal(@anchor.index, @anchor.drawing.anchors.index(@anchor))
|
33
|
-
end
|
34
|
-
|
35
|
-
def test_width
|
36
|
-
assert_raise(ArgumentError) { @anchor.width = "a" }
|
37
|
-
assert_nothing_raised { @anchor.width = 600 }
|
38
|
-
assert_equal(@anchor.width, 600)
|
39
|
-
end
|
40
|
-
|
41
|
-
def test_height
|
42
|
-
assert_raise(ArgumentError) { @anchor.height = "a" }
|
43
|
-
assert_nothing_raised { @anchor.height = 400 }
|
44
|
-
assert_equal(400, @anchor.height)
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_ext
|
48
|
-
ext = @anchor.send(:ext)
|
49
|
-
assert_equal(ext[:cx], (@anchor.width * 914400 / 96))
|
50
|
-
assert_equal(ext[:cy], (@anchor.height * 914400 / 96))
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_options
|
54
|
-
assert_raise(ArgumentError, 'invalid start_at') { @ws.add_image :image_src=>@test_img, :start_at=>[1] }
|
55
|
-
i = @ws.add_image :image_src=>@test_img, :start_at => [1,2], :width=>100, :height=>200, :name=>"someimage", :descr=>"a neat image"
|
56
|
-
|
57
|
-
assert_equal("a neat image", i.descr)
|
58
|
-
assert_equal("someimage", i.name)
|
59
|
-
assert_equal(200, i.height)
|
60
|
-
assert_equal(100, i.width)
|
61
|
-
assert_equal(1, i.anchor.from.col)
|
62
|
-
assert_equal(2, i.anchor.from.row)
|
63
|
-
assert_equal(@test_img, i.image_src)
|
64
|
-
end
|
65
|
-
|
66
|
-
end
|
data/test/drawing/tc_pic.rb
DELETED
@@ -1,103 +0,0 @@
|
|
1
|
-
require 'tc_helper.rb'
|
2
|
-
|
3
|
-
class TestPic < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
@p = Axlsx::Package.new
|
7
|
-
ws = @p.workbook.add_worksheet
|
8
|
-
@test_img = @test_img_jpg = File.dirname(__FILE__) + "/../fixtures/image1.jpeg"
|
9
|
-
@test_img_png = File.dirname(__FILE__) + "/../fixtures/image1.png"
|
10
|
-
@test_img_gif = File.dirname(__FILE__) + "/../fixtures/image1.gif"
|
11
|
-
@test_img_fake = File.dirname(__FILE__) + "/../fixtures/image1_fake.jpg"
|
12
|
-
@image = ws.add_image :image_src => @test_img, :hyperlink => 'https://github.com/randym', :tooltip => "What's up doc?", :opacity => 5
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_initialization
|
16
|
-
assert_equal(@p.workbook.images.first, @image)
|
17
|
-
assert_equal(@image.file_name, 'image1.jpeg')
|
18
|
-
assert_equal(@image.image_src, @test_img)
|
19
|
-
end
|
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
|
40
|
-
|
41
|
-
def test_hyperlink
|
42
|
-
assert_equal(@image.hyperlink.href, "https://github.com/randym")
|
43
|
-
@image.hyperlink = "http://axlsx.blogspot.com"
|
44
|
-
assert_equal(@image.hyperlink.href, "http://axlsx.blogspot.com")
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_name
|
48
|
-
assert_raise(ArgumentError) { @image.name = 49 }
|
49
|
-
assert_nothing_raised { @image.name = "unknown" }
|
50
|
-
assert_equal(@image.name, "unknown")
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_start_at
|
54
|
-
assert_raise(ArgumentError) { @image.start_at "a", 1 }
|
55
|
-
assert_nothing_raised { @image.start_at 6, 7 }
|
56
|
-
assert_equal(@image.anchor.from.col, 6)
|
57
|
-
assert_equal(@image.anchor.from.row, 7)
|
58
|
-
end
|
59
|
-
|
60
|
-
def test_width
|
61
|
-
assert_raise(ArgumentError) { @image.width = "a" }
|
62
|
-
assert_nothing_raised { @image.width = 600 }
|
63
|
-
assert_equal(@image.width, 600)
|
64
|
-
end
|
65
|
-
|
66
|
-
def test_height
|
67
|
-
assert_raise(ArgumentError) { @image.height = "a" }
|
68
|
-
assert_nothing_raised { @image.height = 600 }
|
69
|
-
assert_equal(600, @image.height)
|
70
|
-
end
|
71
|
-
|
72
|
-
def test_image_src
|
73
|
-
assert_raise(ArgumentError) { @image.image_src = __FILE__ }
|
74
|
-
assert_raise(ArgumentError) { @image.image_src = @test_img_fake }
|
75
|
-
assert_nothing_raised { @image.image_src = @test_img_gif }
|
76
|
-
assert_nothing_raised { @image.image_src = @test_img_png }
|
77
|
-
assert_nothing_raised { @image.image_src = @test_img_jpg }
|
78
|
-
assert_equal(@image.image_src, @test_img_jpg)
|
79
|
-
end
|
80
|
-
|
81
|
-
def test_descr
|
82
|
-
assert_raise(ArgumentError) { @image.descr = 49 }
|
83
|
-
assert_nothing_raised { @image.descr = "test" }
|
84
|
-
assert_equal(@image.descr, "test")
|
85
|
-
end
|
86
|
-
|
87
|
-
def test_to_xml
|
88
|
-
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
89
|
-
doc = Nokogiri::XML(@image.anchor.drawing.to_xml_string)
|
90
|
-
errors = []
|
91
|
-
schema.validate(doc).each do |error|
|
92
|
-
errors.push error
|
93
|
-
puts error.message
|
94
|
-
end
|
95
|
-
assert(errors.empty?, "error free validation")
|
96
|
-
end
|
97
|
-
|
98
|
-
def test_to_xml_has_correct_r_id
|
99
|
-
r_id = @image.anchor.drawing.relationships.for(@image).Id
|
100
|
-
doc = Nokogiri::XML(@image.anchor.drawing.to_xml_string)
|
101
|
-
assert_equal r_id, doc.xpath("//a:blip").first["r:embed"]
|
102
|
-
end
|
103
|
-
end
|
@@ -1,72 +0,0 @@
|
|
1
|
-
require 'tc_helper.rb'
|
2
|
-
|
3
|
-
class TestPictureLocking < Test::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
@item = Axlsx::PictureLocking.new
|
6
|
-
end
|
7
|
-
def teardown
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_initialiation
|
11
|
-
assert_equal(@item.instance_values.size, 1)
|
12
|
-
assert_equal(@item.noChangeAspect, true)
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_noGrp
|
16
|
-
assert_raise(ArgumentError) { @item.noGrp = -1 }
|
17
|
-
assert_nothing_raised { @item.noGrp = false }
|
18
|
-
assert_equal(@item.noGrp, false )
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_noRot
|
22
|
-
assert_raise(ArgumentError) { @item.noRot = -1 }
|
23
|
-
assert_nothing_raised { @item.noRot = false }
|
24
|
-
assert_equal(@item.noRot, false )
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_noChangeAspect
|
28
|
-
assert_raise(ArgumentError) { @item.noChangeAspect = -1 }
|
29
|
-
assert_nothing_raised { @item.noChangeAspect = false }
|
30
|
-
assert_equal(@item.noChangeAspect, false )
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_noMove
|
34
|
-
assert_raise(ArgumentError) { @item.noMove = -1 }
|
35
|
-
assert_nothing_raised { @item.noMove = false }
|
36
|
-
assert_equal(@item.noMove, false )
|
37
|
-
end
|
38
|
-
|
39
|
-
def test_noResize
|
40
|
-
assert_raise(ArgumentError) { @item.noResize = -1 }
|
41
|
-
assert_nothing_raised { @item.noResize = false }
|
42
|
-
assert_equal(@item.noResize, false )
|
43
|
-
end
|
44
|
-
|
45
|
-
def test_noEditPoints
|
46
|
-
assert_raise(ArgumentError) { @item.noEditPoints = -1 }
|
47
|
-
assert_nothing_raised { @item.noEditPoints = false }
|
48
|
-
assert_equal(@item.noEditPoints, false )
|
49
|
-
end
|
50
|
-
|
51
|
-
def test_noAdjustHandles
|
52
|
-
assert_raise(ArgumentError) { @item.noAdjustHandles = -1 }
|
53
|
-
assert_nothing_raised { @item.noAdjustHandles = false }
|
54
|
-
assert_equal(@item.noAdjustHandles, false )
|
55
|
-
end
|
56
|
-
|
57
|
-
def test_noChangeArrowheads
|
58
|
-
assert_raise(ArgumentError) { @item.noChangeArrowheads = -1 }
|
59
|
-
assert_nothing_raised { @item.noChangeArrowheads = false }
|
60
|
-
assert_equal(@item.noChangeArrowheads, false )
|
61
|
-
end
|
62
|
-
|
63
|
-
def test_noChangeShapeType
|
64
|
-
assert_raise(ArgumentError) { @item.noChangeShapeType = -1 }
|
65
|
-
assert_nothing_raised { @item.noChangeShapeType = false }
|
66
|
-
assert_equal(@item.noChangeShapeType, false )
|
67
|
-
end
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'tc_helper.rb'
|
2
|
-
|
3
|
-
class TestPie3DChart < 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::Pie3DChart, :title => "fishery"
|
10
|
-
end
|
11
|
-
|
12
|
-
def teardown
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_initialization
|
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
|
-
assert_equal(@chart.series_type, Axlsx::PieSeries, "series type incorrect")
|
19
|
-
end
|
20
|
-
|
21
|
-
def test_to_xml
|
22
|
-
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
23
|
-
doc = Nokogiri::XML(@chart.to_xml_string)
|
24
|
-
errors = schema.validate(doc).map {|error| puts error.message; error }
|
25
|
-
assert(errors.empty?, "error free validation")
|
26
|
-
end
|
27
|
-
|
28
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'tc_helper.rb'
|
2
|
-
|
3
|
-
class TestPieSeries < 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::Pie3DChart, :title => "fishery"
|
9
|
-
@series = chart.add_series :data=>[0,1,2], :labels=>["zero", "one", "two"], :title=>"bob", :colors => ["FF0000", "00FF00", "0000FF"]
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_initialize
|
13
|
-
assert_equal(@series.title.text, "bob", "series title has been applied")
|
14
|
-
assert_equal(@series.labels.class, Axlsx::AxDataSource)
|
15
|
-
assert_equal(@series.data.class, Axlsx::NumDataSource)
|
16
|
-
assert_equal(@series.explosion, nil, "series shape has been applied")
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_explosion
|
20
|
-
assert_raise(ArgumentError, "require valid explosion") { @series.explosion = :lots }
|
21
|
-
assert_nothing_raised("allow valid explosion") { @series.explosion = 20 }
|
22
|
-
assert(@series.explosion == 20)
|
23
|
-
# issue 58 - explosion caused to_xml_string to fail - now tested
|
24
|
-
assert_nothing_raised("allow to_xml_string") { @series.to_xml_string }
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_to_xml_string
|
28
|
-
doc = Nokogiri::XML(@series.to_xml_string)
|
29
|
-
assert(doc.xpath("//srgbClr[@val='#{@series.colors[0]}']"))
|
30
|
-
end
|
31
|
-
#TODO test unique serialization parts
|
32
|
-
|
33
|
-
end
|
data/test/drawing/tc_scaling.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
require 'tc_helper.rb'
|
2
|
-
|
3
|
-
class TestScaling < Test::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
@scaling = Axlsx::Scaling.new
|
6
|
-
end
|
7
|
-
|
8
|
-
def teardown
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_initialization
|
12
|
-
assert(@scaling.orientation == :minMax)
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_logBase
|
16
|
-
assert_raise(ArgumentError) { @scaling.logBase = 1}
|
17
|
-
assert_nothing_raised {@scaling.logBase = 10}
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_orientation
|
21
|
-
assert_raise(ArgumentError) { @scaling.orientation = "1"}
|
22
|
-
assert_nothing_raised {@scaling.orientation = :maxMin}
|
23
|
-
end
|
24
|
-
|
25
|
-
|
26
|
-
def test_max
|
27
|
-
assert_raise(ArgumentError) { @scaling.max = 1}
|
28
|
-
assert_nothing_raised {@scaling.max = 10.5}
|
29
|
-
end
|
30
|
-
|
31
|
-
def test_min
|
32
|
-
assert_raise(ArgumentError) { @scaling.min = 1}
|
33
|
-
assert_nothing_raised {@scaling.min = 10.5}
|
34
|
-
end
|
35
|
-
|
36
|
-
end
|
@@ -1,48 +0,0 @@
|
|
1
|
-
require 'tc_helper.rb'
|
2
|
-
|
3
|
-
class TestScatterChart < 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 ["Second", 5, 2, 14, 9]
|
11
|
-
sheet.add_row ["", 5, 10, 15, 20]
|
12
|
-
sheet.add_chart(Axlsx::ScatterChart, :title => "example 7: Scatter Chart") do |chart|
|
13
|
-
chart.start_at 0, 4
|
14
|
-
chart.end_at 10, 19
|
15
|
-
chart.add_series :xData => sheet["B1:E1"], :yData => sheet["B2:E2"], :title => sheet["A1"]
|
16
|
-
chart.add_series :xData => sheet["B3:E3"], :yData => sheet["B4:E4"], :title => sheet["A3"]
|
17
|
-
@chart = chart
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def teardown
|
23
|
-
end
|
24
|
-
|
25
|
-
def test_scatter_style
|
26
|
-
@chart.scatterStyle = :marker
|
27
|
-
assert(@chart.scatterStyle == :marker)
|
28
|
-
assert_raise(ArgumentError) { @chart.scatterStyle = :buckshot }
|
29
|
-
end
|
30
|
-
def test_initialization
|
31
|
-
assert_equal(@chart.scatterStyle, :lineMarker, "scatterStyle defualt incorrect")
|
32
|
-
assert_equal(@chart.series_type, Axlsx::ScatterSeries, "series type incorrect")
|
33
|
-
assert(@chart.xValAxis.is_a?(Axlsx::ValAxis), "independant value axis not created")
|
34
|
-
assert(@chart.yValAxis.is_a?(Axlsx::ValAxis), "dependant value axis not created")
|
35
|
-
end
|
36
|
-
|
37
|
-
def test_to_xml_string
|
38
|
-
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
39
|
-
doc = Nokogiri::XML(@chart.to_xml_string)
|
40
|
-
errors = []
|
41
|
-
schema.validate(doc).each do |error|
|
42
|
-
errors.push error
|
43
|
-
puts error.message
|
44
|
-
end
|
45
|
-
assert(errors.empty?, "error free validation")
|
46
|
-
end
|
47
|
-
|
48
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
require 'tc_helper.rb'
|
2
|
-
|
3
|
-
class TestScatterSeries < 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::ScatterChart, :title => "Scatter Chart"
|
9
|
-
@series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9], :title=>"exponents", :color => 'FF0000', :smooth => true
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_initialize
|
13
|
-
assert_equal(@series.title.text, "exponents", "series title has been applied")
|
14
|
-
end
|
15
|
-
|
16
|
-
def test_smoothed_chart_default_smoothing
|
17
|
-
@chart = @ws.add_chart Axlsx::ScatterChart, :title => "Smooth Chart", :scatter_style => :smoothMarker
|
18
|
-
@series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9], :title=>"smoothed exponents"
|
19
|
-
assert(@series.smooth, "series is smooth by default on smooth charts")
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_unsmoothed_chart_default_smoothing
|
23
|
-
@chart = @ws.add_chart Axlsx::ScatterChart, :title => "Unsmooth Chart", :scatter_style => :line
|
24
|
-
@series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9], :title=>"unsmoothed exponents"
|
25
|
-
assert(!@series.smooth, "series is not smooth by default on non-smooth charts")
|
26
|
-
end
|
27
|
-
|
28
|
-
def test_explicit_smoothing
|
29
|
-
@chart = @ws.add_chart Axlsx::ScatterChart, :title => "Unsmooth Chart, Smooth Series", :scatter_style => :line
|
30
|
-
@series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9], :title=>"smoothed exponents", :smooth => true
|
31
|
-
assert(@series.smooth, "series is smooth when overriding chart default")
|
32
|
-
end
|
33
|
-
|
34
|
-
def test_explicit_unsmoothing
|
35
|
-
@chart = @ws.add_chart Axlsx::ScatterChart, :title => "Smooth Chart, Unsmooth Series", :scatter_style => :smoothMarker
|
36
|
-
@series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9], :title=>"unsmoothed exponents", :smooth => false
|
37
|
-
assert(!@series.smooth, "series is not smooth when overriding chart default")
|
38
|
-
end
|
39
|
-
|
40
|
-
def test_ln_width
|
41
|
-
@chart = @ws.add_chart Axlsx::ScatterChart, :title => "ln width", :scatter_style => :line
|
42
|
-
@series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9], :title=>"ln_width"
|
43
|
-
@series.ln_width = 12700
|
44
|
-
assert_equal(@series.ln_width, 12700, 'line width assigment is allowed')
|
45
|
-
end
|
46
|
-
|
47
|
-
def test_to_xml_string
|
48
|
-
@chart.scatter_style = :line
|
49
|
-
@series.ln_width = 12700
|
50
|
-
doc = Nokogiri::XML(@chart.to_xml_string)
|
51
|
-
assert_equal(12700, @series.ln_width)
|
52
|
-
assert_equal(doc.xpath("//a:srgbClr[@val='#{@series.color}']").size,4)
|
53
|
-
assert_equal(doc.xpath("//a:ln[@w='#{@series.ln_width}']").length, 1)
|
54
|
-
end
|
55
|
-
|
56
|
-
end
|
data/test/drawing/tc_ser_axis.rb
DELETED
@@ -1,31 +0,0 @@
|
|
1
|
-
require 'tc_helper.rb'
|
2
|
-
|
3
|
-
class TestSerAxis < Test::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
@axis = Axlsx::SerAxis.new
|
6
|
-
end
|
7
|
-
|
8
|
-
def teardown
|
9
|
-
end
|
10
|
-
|
11
|
-
def test_options
|
12
|
-
a = Axlsx::SerAxis.new(:tick_lbl_skip => 9, :tick_mark_skip => 7)
|
13
|
-
assert_equal(a.tick_lbl_skip, 9)
|
14
|
-
assert_equal(a.tick_mark_skip, 7)
|
15
|
-
end
|
16
|
-
|
17
|
-
|
18
|
-
def test_tick_lbl_skip
|
19
|
-
assert_raise(ArgumentError, "requires valid tick_lbl_skip") { @axis.tick_lbl_skip = -1 }
|
20
|
-
assert_nothing_raised("accepts valid tick_lbl_skip") { @axis.tick_lbl_skip = 1 }
|
21
|
-
assert_equal(@axis.tick_lbl_skip, 1)
|
22
|
-
end
|
23
|
-
|
24
|
-
|
25
|
-
def test_tick_mark_skip
|
26
|
-
assert_raise(ArgumentError, "requires valid tick_mark_skip") { @axis.tick_mark_skip = :my_eyes }
|
27
|
-
assert_nothing_raised("accepts valid tick_mark_skip") { @axis.tick_mark_skip = 2 }
|
28
|
-
assert_equal(@axis.tick_mark_skip, 2)
|
29
|
-
end
|
30
|
-
|
31
|
-
end
|
data/test/drawing/tc_series.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
require 'tc_helper.rb'
|
2
|
-
|
3
|
-
class TestSeries < 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::Chart, :title => "fishery"
|
9
|
-
@series = chart.add_series :title=>"bob"
|
10
|
-
end
|
11
|
-
|
12
|
-
def test_initialize
|
13
|
-
assert_equal(@series.title.text, "bob", "series title has been applied")
|
14
|
-
assert_equal(@series.order, @series.index, "order is index by default")
|
15
|
-
assert_equal(@series.index, @series.chart.series.index(@series), "index is applied")
|
16
|
-
end
|
17
|
-
|
18
|
-
def test_order
|
19
|
-
@series.order = 2
|
20
|
-
assert_equal(@series.order, 2)
|
21
|
-
end
|
22
|
-
|
23
|
-
end
|
@@ -1,54 +0,0 @@
|
|
1
|
-
require 'tc_helper.rb'
|
2
|
-
|
3
|
-
class TestSeriesTitle < Test::Unit::TestCase
|
4
|
-
def setup
|
5
|
-
@p = Axlsx::Package.new
|
6
|
-
ws = @p.workbook.add_worksheet
|
7
|
-
@row = ws.add_row ["one", 1, Time.now]
|
8
|
-
@title = Axlsx::SeriesTitle.new
|
9
|
-
@chart = ws.add_chart Axlsx::Bar3DChart
|
10
|
-
end
|
11
|
-
|
12
|
-
def teardown
|
13
|
-
end
|
14
|
-
|
15
|
-
def test_initialization
|
16
|
-
assert(@title.text == "")
|
17
|
-
assert(@title.cell == nil)
|
18
|
-
end
|
19
|
-
|
20
|
-
def test_text
|
21
|
-
assert_raise(ArgumentError, "text must be a string") { @title.text = 123 }
|
22
|
-
@title.cell = @row.cells.first
|
23
|
-
@title.text = "bob"
|
24
|
-
assert(@title.cell == nil, "setting title with text clears the cell")
|
25
|
-
end
|
26
|
-
|
27
|
-
def test_cell
|
28
|
-
assert_raise(ArgumentError, "cell must be a Cell") { @title.cell = "123" }
|
29
|
-
@title.cell = @row.cells.first
|
30
|
-
assert(@title.text == "one")
|
31
|
-
end
|
32
|
-
|
33
|
-
def test_to_xml_string_for_special_characters
|
34
|
-
@chart.add_series(title: @title, data: [3, 7], labels: ['A', 'B'])
|
35
|
-
|
36
|
-
@title.text = "&><'\""
|
37
|
-
|
38
|
-
doc = Nokogiri::XML(@chart.to_xml_string)
|
39
|
-
errors = doc.errors
|
40
|
-
assert(errors.empty?, "invalid xml: #{errors.map(&:to_s).join(', ')}")
|
41
|
-
end
|
42
|
-
|
43
|
-
def test_to_xml_string_for_special_characters_in_cell
|
44
|
-
@chart.add_series(title: @title, data: [3, 7], labels: ['A', 'B'])
|
45
|
-
|
46
|
-
cell = @row.cells.first
|
47
|
-
cell.value = "&><'\""
|
48
|
-
@title.cell = cell
|
49
|
-
|
50
|
-
doc = Nokogiri::XML(@chart.to_xml_string)
|
51
|
-
errors = doc.errors
|
52
|
-
assert(errors.empty?, "invalid xml: #{errors.map(&:to_s).join(', ')}")
|
53
|
-
end
|
54
|
-
end
|
data/test/drawing/tc_str_data.rb
DELETED
@@ -1,18 +0,0 @@
|
|
1
|
-
require 'tc_helper.rb'
|
2
|
-
|
3
|
-
class TestStrData < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
@str_data = Axlsx::StrData.new :data => ["1", "2", "3"]
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_to_xml_string_strLit
|
10
|
-
str = '<?xml version="1.0" encoding="UTF-8"?>'
|
11
|
-
str << '<c:chartSpace xmlns:c="' << Axlsx::XML_NS_C << '">'
|
12
|
-
str << @str_data.to_xml_string
|
13
|
-
doc = Nokogiri::XML(str)
|
14
|
-
assert_equal(doc.xpath("//c:strLit/c:ptCount[@val=3]").size, 1)
|
15
|
-
assert_equal(doc.xpath("//c:strLit/c:pt/c:v[text()='1']").size, 1)
|
16
|
-
end
|
17
|
-
|
18
|
-
end
|
data/test/drawing/tc_str_val.rb
DELETED
@@ -1,30 +0,0 @@
|
|
1
|
-
require 'tc_helper.rb'
|
2
|
-
|
3
|
-
class TestStrVal < Test::Unit::TestCase
|
4
|
-
|
5
|
-
def setup
|
6
|
-
@str_val = Axlsx::StrVal.new :v => "1"
|
7
|
-
@str_val_with_special_characters = Axlsx::StrVal.new :v => "a & b <c>"
|
8
|
-
end
|
9
|
-
|
10
|
-
def test_initialize
|
11
|
-
assert_equal(@str_val.v, "1")
|
12
|
-
end
|
13
|
-
|
14
|
-
def test_to_xml_string
|
15
|
-
str = '<?xml version="1.0" encoding="UTF-8"?>'
|
16
|
-
str << '<c:chartSpace xmlns:c="' << Axlsx::XML_NS_C << '">'
|
17
|
-
str << @str_val.to_xml_string(0)
|
18
|
-
doc = Nokogiri::XML(str)
|
19
|
-
assert_equal(doc.xpath("//c:pt/c:v[text()='1']").size, 1)
|
20
|
-
end
|
21
|
-
|
22
|
-
def test_to_xml_string_special_characters
|
23
|
-
str = '<?xml version="1.0" encoding="UTF-8"?>'
|
24
|
-
str << '<c:chartSpace xmlns:c="' << Axlsx::XML_NS_C << '">'
|
25
|
-
str << @str_val_with_special_characters.to_xml_string(0)
|
26
|
-
doc = Nokogiri::XML(str)
|
27
|
-
assert_equal(doc.xpath("//c:pt/c:v[text()='a & b <c>']").size, 1)
|
28
|
-
end
|
29
|
-
|
30
|
-
end
|