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.
Files changed (154) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +43 -1
  3. data/README.md +4 -11
  4. data/lib/axlsx/content_type/abstract_content_type.rb +1 -1
  5. data/lib/axlsx/doc_props/app.rb +1 -1
  6. data/lib/axlsx/drawing/chart.rb +25 -2
  7. data/lib/axlsx/drawing/d_lbls.rb +3 -2
  8. data/lib/axlsx/drawing/scatter_series.rb +31 -0
  9. data/lib/axlsx/drawing/title.rb +11 -1
  10. data/lib/axlsx/drawing/view_3D.rb +1 -1
  11. data/lib/axlsx/package.rb +15 -5
  12. data/lib/axlsx/rels/relationship.rb +1 -1
  13. data/lib/axlsx/stylesheet/border.rb +2 -0
  14. data/lib/axlsx/stylesheet/font.rb +1 -1
  15. data/lib/axlsx/stylesheet/styles.rb +139 -24
  16. data/lib/axlsx/util/constants.rb +16 -1
  17. data/lib/axlsx/util/serialized_attributes.rb +2 -2
  18. data/lib/axlsx/util/storage.rb +9 -9
  19. data/lib/axlsx/version.rb +1 -1
  20. data/lib/axlsx/workbook/workbook.rb +55 -0
  21. data/lib/axlsx/workbook/worksheet/border_creator.rb +76 -0
  22. data/lib/axlsx/workbook/worksheet/cell.rb +29 -2
  23. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +1 -1
  24. data/lib/axlsx/workbook/worksheet/col.rb +4 -4
  25. data/lib/axlsx/workbook/worksheet/data_validation.rb +26 -5
  26. data/lib/axlsx/workbook/worksheet/pivot_table.rb +55 -14
  27. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +1 -1
  28. data/lib/axlsx/workbook/worksheet/worksheet.rb +68 -7
  29. data/lib/axlsx.rb +43 -10
  30. metadata +6 -253
  31. data/test/benchmark.rb +0 -72
  32. data/test/content_type/tc_content_type.rb +0 -76
  33. data/test/content_type/tc_default.rb +0 -16
  34. data/test/content_type/tc_override.rb +0 -14
  35. data/test/doc_props/tc_app.rb +0 -43
  36. data/test/doc_props/tc_core.rb +0 -42
  37. data/test/drawing/tc_area_chart.rb +0 -39
  38. data/test/drawing/tc_area_series.rb +0 -71
  39. data/test/drawing/tc_axes.rb +0 -8
  40. data/test/drawing/tc_axis.rb +0 -112
  41. data/test/drawing/tc_bar_3D_chart.rb +0 -86
  42. data/test/drawing/tc_bar_chart.rb +0 -86
  43. data/test/drawing/tc_bar_series.rb +0 -46
  44. data/test/drawing/tc_bubble_chart.rb +0 -44
  45. data/test/drawing/tc_bubble_series.rb +0 -21
  46. data/test/drawing/tc_cat_axis.rb +0 -31
  47. data/test/drawing/tc_cat_axis_data.rb +0 -27
  48. data/test/drawing/tc_chart.rb +0 -123
  49. data/test/drawing/tc_d_lbls.rb +0 -57
  50. data/test/drawing/tc_data_source.rb +0 -23
  51. data/test/drawing/tc_drawing.rb +0 -80
  52. data/test/drawing/tc_graphic_frame.rb +0 -27
  53. data/test/drawing/tc_hyperlink.rb +0 -64
  54. data/test/drawing/tc_line_3d_chart.rb +0 -47
  55. data/test/drawing/tc_line_chart.rb +0 -39
  56. data/test/drawing/tc_line_series.rb +0 -71
  57. data/test/drawing/tc_marker.rb +0 -44
  58. data/test/drawing/tc_named_axis_data.rb +0 -27
  59. data/test/drawing/tc_num_data.rb +0 -31
  60. data/test/drawing/tc_num_val.rb +0 -29
  61. data/test/drawing/tc_one_cell_anchor.rb +0 -66
  62. data/test/drawing/tc_pic.rb +0 -103
  63. data/test/drawing/tc_picture_locking.rb +0 -72
  64. data/test/drawing/tc_pie_3D_chart.rb +0 -28
  65. data/test/drawing/tc_pie_series.rb +0 -33
  66. data/test/drawing/tc_scaling.rb +0 -36
  67. data/test/drawing/tc_scatter_chart.rb +0 -48
  68. data/test/drawing/tc_scatter_series.rb +0 -56
  69. data/test/drawing/tc_ser_axis.rb +0 -31
  70. data/test/drawing/tc_series.rb +0 -23
  71. data/test/drawing/tc_series_title.rb +0 -54
  72. data/test/drawing/tc_str_data.rb +0 -18
  73. data/test/drawing/tc_str_val.rb +0 -30
  74. data/test/drawing/tc_title.rb +0 -70
  75. data/test/drawing/tc_two_cell_anchor.rb +0 -36
  76. data/test/drawing/tc_val_axis.rb +0 -24
  77. data/test/drawing/tc_view_3D.rb +0 -54
  78. data/test/drawing/tc_vml_drawing.rb +0 -25
  79. data/test/drawing/tc_vml_shape.rb +0 -106
  80. data/test/fixtures/image1.gif +0 -0
  81. data/test/fixtures/image1.jpeg +0 -0
  82. data/test/fixtures/image1.jpg +0 -0
  83. data/test/fixtures/image1.png +0 -0
  84. data/test/fixtures/image1_fake.jpg +0 -0
  85. data/test/profile.rb +0 -24
  86. data/test/rels/tc_relationship.rb +0 -52
  87. data/test/rels/tc_relationships.rb +0 -37
  88. data/test/stylesheet/tc_border.rb +0 -37
  89. data/test/stylesheet/tc_border_pr.rb +0 -32
  90. data/test/stylesheet/tc_cell_alignment.rb +0 -81
  91. data/test/stylesheet/tc_cell_protection.rb +0 -29
  92. data/test/stylesheet/tc_cell_style.rb +0 -57
  93. data/test/stylesheet/tc_color.rb +0 -43
  94. data/test/stylesheet/tc_dxf.rb +0 -81
  95. data/test/stylesheet/tc_fill.rb +0 -18
  96. data/test/stylesheet/tc_font.rb +0 -133
  97. data/test/stylesheet/tc_gradient_fill.rb +0 -72
  98. data/test/stylesheet/tc_gradient_stop.rb +0 -31
  99. data/test/stylesheet/tc_num_fmt.rb +0 -30
  100. data/test/stylesheet/tc_pattern_fill.rb +0 -43
  101. data/test/stylesheet/tc_styles.rb +0 -261
  102. data/test/stylesheet/tc_table_style.rb +0 -44
  103. data/test/stylesheet/tc_table_style_element.rb +0 -45
  104. data/test/stylesheet/tc_table_styles.rb +0 -29
  105. data/test/stylesheet/tc_xf.rb +0 -120
  106. data/test/tc_axlsx.rb +0 -109
  107. data/test/tc_helper.rb +0 -10
  108. data/test/tc_package.rb +0 -314
  109. data/test/util/tc_mime_type_utils.rb +0 -13
  110. data/test/util/tc_serialized_attributes.rb +0 -19
  111. data/test/util/tc_simple_typed_list.rb +0 -77
  112. data/test/util/tc_validators.rb +0 -210
  113. data/test/workbook/tc_defined_name.rb +0 -49
  114. data/test/workbook/tc_shared_strings_table.rb +0 -59
  115. data/test/workbook/tc_workbook.rb +0 -160
  116. data/test/workbook/tc_workbook_view.rb +0 -50
  117. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
  118. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
  119. data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
  120. data/test/workbook/worksheet/tc_break.rb +0 -49
  121. data/test/workbook/worksheet/tc_cell.rb +0 -453
  122. data/test/workbook/worksheet/tc_cfvo.rb +0 -31
  123. data/test/workbook/worksheet/tc_col.rb +0 -93
  124. data/test/workbook/worksheet/tc_color_scale.rb +0 -58
  125. data/test/workbook/worksheet/tc_comment.rb +0 -72
  126. data/test/workbook/worksheet/tc_comments.rb +0 -57
  127. data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
  128. data/test/workbook/worksheet/tc_data_bar.rb +0 -46
  129. data/test/workbook/worksheet/tc_data_validation.rb +0 -265
  130. data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
  131. data/test/workbook/worksheet/tc_header_footer.rb +0 -151
  132. data/test/workbook/worksheet/tc_icon_set.rb +0 -45
  133. data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
  134. data/test/workbook/worksheet/tc_page_margins.rb +0 -97
  135. data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
  136. data/test/workbook/worksheet/tc_page_setup.rb +0 -143
  137. data/test/workbook/worksheet/tc_pane.rb +0 -54
  138. data/test/workbook/worksheet/tc_pivot_table.rb +0 -143
  139. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
  140. data/test/workbook/worksheet/tc_print_options.rb +0 -72
  141. data/test/workbook/worksheet/tc_protected_range.rb +0 -17
  142. data/test/workbook/worksheet/tc_rich_text.rb +0 -44
  143. data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
  144. data/test/workbook/worksheet/tc_row.rb +0 -160
  145. data/test/workbook/worksheet/tc_selection.rb +0 -55
  146. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
  147. data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
  148. data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
  149. data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
  150. data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
  151. data/test/workbook/worksheet/tc_table.rb +0 -77
  152. data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
  153. data/test/workbook/worksheet/tc_worksheet.rb +0 -601
  154. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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