axlsx 2.1.0.pre → 3.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +5 -0
  3. data/README.md +17 -20
  4. data/Rakefile +0 -1
  5. data/examples/conditional_formatting/example_conditional_formatting.rb +15 -0
  6. data/examples/example.rb +31 -1
  7. data/lib/axlsx.rb +9 -4
  8. data/lib/axlsx/drawing/area_chart.rb +99 -0
  9. data/lib/axlsx/drawing/area_series.rb +110 -0
  10. data/lib/axlsx/drawing/bar_chart.rb +143 -0
  11. data/lib/axlsx/drawing/chart.rb +8 -1
  12. data/lib/axlsx/drawing/d_lbls.rb +3 -3
  13. data/lib/axlsx/drawing/drawing.rb +3 -0
  14. data/lib/axlsx/drawing/line_series.rb +18 -1
  15. data/lib/axlsx/drawing/num_val.rb +3 -1
  16. data/lib/axlsx/drawing/one_cell_anchor.rb +2 -1
  17. data/lib/axlsx/drawing/pic.rb +24 -17
  18. data/lib/axlsx/drawing/scaling.rb +2 -2
  19. data/lib/axlsx/drawing/scatter_series.rb +16 -2
  20. data/lib/axlsx/drawing/str_val.rb +3 -1
  21. data/lib/axlsx/drawing/title.rb +19 -1
  22. data/lib/axlsx/drawing/two_cell_anchor.rb +6 -1
  23. data/lib/axlsx/drawing/view_3D.rb +2 -2
  24. data/lib/axlsx/package.rb +7 -16
  25. data/lib/axlsx/rels/relationships.rb +5 -2
  26. data/lib/axlsx/stylesheet/num_fmt.rb +9 -0
  27. data/lib/axlsx/stylesheet/styles.rb +1 -1
  28. data/lib/axlsx/util/constants.rb +8 -5
  29. data/lib/axlsx/util/mime_type_utils.rb +11 -0
  30. data/lib/axlsx/util/simple_typed_list.rb +1 -1
  31. data/lib/axlsx/util/validators.rb +14 -9
  32. data/lib/axlsx/version.rb +1 -1
  33. data/lib/axlsx/workbook/workbook.rb +19 -1
  34. data/lib/axlsx/workbook/workbook_view.rb +5 -3
  35. data/lib/axlsx/workbook/worksheet/cell.rb +26 -19
  36. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +15 -5
  37. data/lib/axlsx/workbook/worksheet/cfvos.rb +3 -0
  38. data/lib/axlsx/workbook/worksheet/cols.rb +5 -2
  39. data/lib/axlsx/workbook/worksheet/merged_cells.rb +2 -0
  40. data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -0
  41. data/lib/axlsx/workbook/worksheet/pivot_table.rb +36 -13
  42. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +4 -1
  43. data/lib/axlsx/workbook/worksheet/rich_text.rb +23 -3
  44. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +28 -32
  45. data/lib/axlsx/workbook/worksheet/row.rb +7 -0
  46. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +21 -3
  47. data/lib/axlsx/workbook/worksheet/tables.rb +3 -0
  48. data/lib/axlsx/workbook/worksheet/worksheet.rb +8 -51
  49. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +10 -10
  50. data/test/axlsx.qcachegrind +2226 -0
  51. data/test/drawing/tc_area_chart.rb +39 -0
  52. data/test/drawing/tc_area_series.rb +71 -0
  53. data/test/drawing/tc_bar_chart.rb +71 -0
  54. data/test/drawing/tc_chart.rb +23 -10
  55. data/test/drawing/tc_drawing.rb +2 -2
  56. data/test/drawing/tc_line_series.rb +38 -5
  57. data/test/drawing/tc_pic.rb +11 -19
  58. data/test/drawing/tc_scatter_series.rb +16 -5
  59. data/test/drawing/tc_str_val.rb +9 -0
  60. data/test/drawing/tc_title.rb +5 -0
  61. data/test/stylesheet/tc_styles.rb +2 -2
  62. data/test/tc_axlsx.rb +31 -0
  63. data/test/tc_helper.rb +3 -1
  64. data/test/tc_package.rb +12 -0
  65. data/test/util/tc_mime_type_utils.rb +13 -0
  66. data/test/util/tc_simple_typed_list.rb +1 -1
  67. data/test/util/tc_validators.rb +34 -10
  68. data/test/workbook/tc_shared_strings_table.rb +16 -1
  69. data/test/workbook/tc_workbook.rb +22 -1
  70. data/test/workbook/worksheet/tc_cell.rb +53 -11
  71. data/test/workbook/worksheet/tc_outline_pr.rb +19 -0
  72. data/test/workbook/worksheet/tc_pivot_table.rb +21 -6
  73. data/test/workbook/worksheet/tc_rich_text_run.rb +11 -11
  74. data/test/workbook/worksheet/tc_row.rb +5 -0
  75. data/test/workbook/worksheet/tc_sheet_pr.rb +26 -4
  76. data/test/workbook/worksheet/tc_table.rb +2 -3
  77. data/test/workbook/worksheet/tc_worksheet.rb +53 -38
  78. metadata +72 -20
  79. data/examples/IMAGE1UP.JPEG +0 -0
  80. data/lib/axlsx/util/string.rb +0 -7
@@ -0,0 +1,39 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestAreaChart < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @p = Axlsx::Package.new
7
+ ws = @p.workbook.add_worksheet
8
+ @row = ws.add_row ["one", 1, Time.now]
9
+ @chart = ws.add_chart Axlsx::AreaChart, :title => "fishery"
10
+ end
11
+
12
+ def teardown
13
+ end
14
+
15
+ def test_initialization
16
+ assert_equal(@chart.grouping, :standard, "grouping defualt incorrect")
17
+ assert_equal(@chart.series_type, Axlsx::AreaSeries, "series type incorrect")
18
+ assert(@chart.cat_axis.is_a?(Axlsx::CatAxis), "category axis not created")
19
+ assert(@chart.val_axis.is_a?(Axlsx::ValAxis), "value access not created")
20
+ end
21
+
22
+ def test_grouping
23
+ assert_raise(ArgumentError, "require valid grouping") { @chart.grouping = :inverted }
24
+ assert_nothing_raised("allow valid grouping") { @chart.grouping = :stacked }
25
+ assert(@chart.grouping == :stacked)
26
+ end
27
+
28
+ def test_to_xml
29
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
30
+ doc = Nokogiri::XML(@chart.to_xml_string)
31
+ errors = []
32
+ schema.validate(doc).each do |error|
33
+ errors.push error
34
+ puts error.message
35
+ end
36
+ assert(errors.empty?, "error free validation")
37
+ end
38
+
39
+ end
@@ -0,0 +1,71 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestAreaSeries < Test::Unit::TestCase
4
+
5
+ def setup
6
+ p = Axlsx::Package.new
7
+ @ws = p.workbook.add_worksheet :name=>"hmmm"
8
+ chart = @ws.add_chart Axlsx::AreaChart, :title => "fishery"
9
+ @series = chart.add_series(
10
+ :data => [0,1,2],
11
+ :labels => ["zero", "one", "two"],
12
+ :title => "bob",
13
+ :color => "#FF0000",
14
+ :show_marker => true,
15
+ :smooth => true
16
+ )
17
+ end
18
+
19
+ def test_initialize
20
+ assert_equal(@series.title.text, "bob", "series title has been applied")
21
+ assert_equal(@series.labels.class, Axlsx::AxDataSource)
22
+ assert_equal(@series.data.class, Axlsx::NumDataSource)
23
+ end
24
+
25
+ def test_show_marker
26
+ assert_equal(true, @series.show_marker)
27
+ @series.show_marker = false
28
+ assert_equal(false, @series.show_marker)
29
+ end
30
+
31
+ def test_smooth
32
+ assert_equal(true, @series.smooth)
33
+ @series.smooth = false
34
+ assert_equal(false, @series.smooth)
35
+ end
36
+
37
+ def test_marker_symbol
38
+ assert_equal(:default, @series.marker_symbol)
39
+ @series.marker_symbol = :circle
40
+ assert_equal(:circle, @series.marker_symbol)
41
+ end
42
+
43
+ def test_to_xml_string
44
+ doc = Nokogiri::XML(wrap_with_namespaces(@series))
45
+ assert(doc.xpath("//srgbClr[@val='#{@series.color}']"))
46
+ assert_equal(xpath_with_namespaces(doc, "//c:marker").size, 0)
47
+ assert(doc.xpath("//smooth"))
48
+
49
+ @series.marker_symbol = :diamond
50
+ doc = Nokogiri::XML(wrap_with_namespaces(@series))
51
+ assert_equal(xpath_with_namespaces(doc, "//c:marker/c:symbol[@val='diamond']").size, 1)
52
+
53
+ @series.show_marker = false
54
+ doc = Nokogiri::XML(wrap_with_namespaces(@series))
55
+ assert_equal(xpath_with_namespaces(doc, "//c:marker/c:symbol[@val='none']").size, 1)
56
+ end
57
+
58
+ def wrap_with_namespaces(series)
59
+ '<c:chartSpace xmlns:c="' <<
60
+ Axlsx::XML_NS_C <<
61
+ '" xmlns:a="' <<
62
+ Axlsx::XML_NS_A <<
63
+ '">' <<
64
+ series.to_xml_string <<
65
+ '</c:chartSpace>'
66
+ end
67
+
68
+ def xpath_with_namespaces(doc, xpath)
69
+ doc.xpath(xpath, "a" => Axlsx::XML_NS_A, "c" => Axlsx::XML_NS_C)
70
+ end
71
+ end
@@ -0,0 +1,71 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestBarChart < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @p = Axlsx::Package.new
7
+ ws = @p.workbook.add_worksheet
8
+ @row = ws.add_row ["one", 1, Time.now]
9
+ @chart = ws.add_chart Axlsx::BarChart, :title => "fishery"
10
+ end
11
+
12
+ def teardown
13
+ end
14
+
15
+ def test_initialization
16
+ assert_equal(@chart.grouping, :clustered, "grouping defualt incorrect")
17
+ assert_equal(@chart.series_type, Axlsx::BarSeries, "series type incorrect")
18
+ assert_equal(@chart.bar_dir, :bar, " bar direction incorrect")
19
+ assert(@chart.cat_axis.is_a?(Axlsx::CatAxis), "category axis not created")
20
+ assert(@chart.val_axis.is_a?(Axlsx::ValAxis), "value access not created")
21
+ end
22
+
23
+ def test_bar_direction
24
+ assert_raise(ArgumentError, "require valid bar direction") { @chart.bar_dir = :left }
25
+ assert_nothing_raised("allow valid bar direction") { @chart.bar_dir = :col }
26
+ assert(@chart.bar_dir == :col)
27
+ end
28
+
29
+ def test_grouping
30
+ assert_raise(ArgumentError, "require valid grouping") { @chart.grouping = :inverted }
31
+ assert_nothing_raised("allow valid grouping") { @chart.grouping = :standard }
32
+ assert(@chart.grouping == :standard)
33
+ end
34
+
35
+
36
+ def test_gapWidth
37
+ assert_raise(ArgumentError, "require valid gap width") { @chart.gap_width = 200 }
38
+ assert_nothing_raised("allow valid gapWidth") { @chart.gap_width = "200%" }
39
+ assert(@chart.gap_width == "200%")
40
+ end
41
+
42
+ def test_gapDepth
43
+ assert_raise(ArgumentError, "require valid gap_depth") { @chart.gap_depth = 200 }
44
+ assert_nothing_raised("allow valid gap_depth") { @chart.gap_depth = "200%" }
45
+ assert(@chart.gap_depth == "200%")
46
+ end
47
+
48
+ def test_shape
49
+ assert_raise(ArgumentError, "require valid shape") { @chart.shape = :star }
50
+ assert_nothing_raised("allow valid shape") { @chart.shape = :cone }
51
+ assert(@chart.shape == :cone)
52
+ end
53
+
54
+ def test_to_xml_string
55
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
56
+ doc = Nokogiri::XML(@chart.to_xml_string)
57
+ errors = []
58
+ schema.validate(doc).each do |error|
59
+ errors.push error
60
+ puts error.message
61
+ end
62
+ assert(errors.empty?, "error free validation")
63
+ end
64
+
65
+ def test_to_xml_string_has_axes_in_correct_order
66
+ str = @chart.to_xml_string
67
+ cat_axis_position = str.index(@chart.axes[:cat_axis].id.to_s)
68
+ val_axis_position = str.index(@chart.axes[:val_axis].id.to_s)
69
+ assert(cat_axis_position < val_axis_position, "cat_axis must occur earlier than val_axis in the XML")
70
+ end
71
+ end
@@ -6,7 +6,7 @@ class TestChart < 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.add_chart Axlsx::Bar3DChart, :title => "fishery"
9
+ @chart = ws.add_chart Axlsx::Bar3DChart, :title => "fishery", :bg_color => "000000"
10
10
  end
11
11
 
12
12
  def teardown
@@ -27,17 +27,30 @@ class TestChart < Test::Unit::TestCase
27
27
  assert_equal(@chart.title.cell, @row.cells.first)
28
28
  end
29
29
 
30
+ def test_style
31
+ assert_raise(ArgumentError) { @chart.style = 49 }
32
+ assert_nothing_raised { @chart.style = 2 }
33
+ assert_equal(@chart.style, 2)
34
+ end
35
+
30
36
  def test_to_from_marker_access
31
37
  assert(@chart.to.is_a?(Axlsx::Marker))
32
38
  assert(@chart.from.is_a?(Axlsx::Marker))
33
39
  end
34
40
 
35
- def test_style
36
- assert_raise(ArgumentError) { @chart.style = 49 }
37
- assert_nothing_raised { @chart.style = 2 }
38
- assert_equal(@chart.style, 2)
41
+ def test_bg_color
42
+ assert_raise(ArgumentError) { @chart.bg_color = 2 }
43
+ assert_nothing_raised { @chart.bg_color = "FFFFFF" }
44
+ assert_equal(@chart.bg_color, "FFFFFF")
45
+
39
46
  end
40
-
47
+
48
+ def test_title_size
49
+ assert_raise(ArgumentError) { @chart.title_size = 2 }
50
+ assert_nothing_raised { @chart.title_size = "100" }
51
+ assert_equal(@chart.title.text_size, "100")
52
+ end
53
+
41
54
  def test_vary_colors
42
55
  assert_equal(true, @chart.vary_colors)
43
56
  assert_raise(ArgumentError) { @chart.vary_colors = 7 }
@@ -63,7 +76,7 @@ class TestChart < Test::Unit::TestCase
63
76
  @chart.start_at [5,6]
64
77
  assert_equal(@chart.graphic_frame.anchor.from.col, 5)
65
78
  assert_equal(@chart.graphic_frame.anchor.from.row, 6)
66
-
79
+
67
80
  end
68
81
 
69
82
  def test_end_at
@@ -76,7 +89,7 @@ class TestChart < Test::Unit::TestCase
76
89
  @chart.end_at [10,11]
77
90
  assert_equal(@chart.graphic_frame.anchor.to.col, 10)
78
91
  assert_equal(@chart.graphic_frame.anchor.to.row, 11)
79
-
92
+
80
93
  end
81
94
 
82
95
  def test_add_series
@@ -88,13 +101,13 @@ class TestChart < Test::Unit::TestCase
88
101
  def test_pn
89
102
  assert_equal(@chart.pn, "charts/chart1.xml")
90
103
  end
91
-
104
+
92
105
  def test_d_lbls
93
106
  assert_equal(nil, @chart.instance_values[:d_lbls])
94
107
  @chart.d_lbls.d_lbl_pos = :t
95
108
  assert(@chart.d_lbls.is_a?(Axlsx::DLbls), 'DLbls instantiated on access')
96
109
  end
97
-
110
+
98
111
  def test_to_xml_string
99
112
  schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
100
113
  doc = Nokogiri::XML(@chart.to_xml_string)
@@ -59,9 +59,9 @@ class TestDrawing < Test::Unit::TestCase
59
59
  end
60
60
 
61
61
  def test_relationships
62
- chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"bob", :start_at=>[0,0], :end_at=>[1,1])
62
+ @ws.add_chart(Axlsx::Pie3DChart, :title=>"bob", :start_at=>[0,0], :end_at=>[1,1])
63
63
  assert_equal(@ws.drawing.relationships.size, 1, "adding a chart adds a relationship")
64
- chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"nancy", :start_at=>[1,5], :end_at=>[5,10])
64
+ @ws.add_chart(Axlsx::Pie3DChart, :title=>"nancy", :start_at=>[1,5], :end_at=>[5,10])
65
65
  assert_equal(@ws.drawing.relationships.size, 2, "adding a chart adds a relationship")
66
66
  end
67
67
 
@@ -6,14 +6,20 @@ class TestLineSeries < Test::Unit::TestCase
6
6
  p = Axlsx::Package.new
7
7
  @ws = p.workbook.add_worksheet :name=>"hmmm"
8
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", :show_marker => true, :smooth => true
9
+ @series = chart.add_series(
10
+ :data => [0,1,2],
11
+ :labels => ["zero", "one", "two"],
12
+ :title => "bob",
13
+ :color => "#FF0000",
14
+ :show_marker => true,
15
+ :smooth => true
16
+ )
10
17
  end
11
18
 
12
19
  def test_initialize
13
20
  assert_equal(@series.title.text, "bob", "series title has been applied")
14
21
  assert_equal(@series.labels.class, Axlsx::AxDataSource)
15
22
  assert_equal(@series.data.class, Axlsx::NumDataSource)
16
-
17
23
  end
18
24
 
19
25
  def test_show_marker
@@ -28,11 +34,38 @@ class TestLineSeries < Test::Unit::TestCase
28
34
  assert_equal(false, @series.smooth)
29
35
  end
30
36
 
37
+ def test_marker_symbol
38
+ assert_equal(:default, @series.marker_symbol)
39
+ @series.marker_symbol = :circle
40
+ assert_equal(:circle, @series.marker_symbol)
41
+ end
42
+
31
43
  def test_to_xml_string
32
- doc = Nokogiri::XML(@series.to_xml_string)
44
+ doc = Nokogiri::XML(wrap_with_namespaces(@series))
33
45
  assert(doc.xpath("//srgbClr[@val='#{@series.color}']"))
34
- assert(doc.xpath("//marker"))
46
+ assert_equal(xpath_with_namespaces(doc, "//c:marker").size, 0)
35
47
  assert(doc.xpath("//smooth"))
48
+
49
+ @series.marker_symbol = :diamond
50
+ doc = Nokogiri::XML(wrap_with_namespaces(@series))
51
+ assert_equal(xpath_with_namespaces(doc, "//c:marker/c:symbol[@val='diamond']").size, 1)
52
+
53
+ @series.show_marker = false
54
+ doc = Nokogiri::XML(wrap_with_namespaces(@series))
55
+ assert_equal(xpath_with_namespaces(doc, "//c:marker/c:symbol[@val='none']").size, 1)
56
+ end
57
+
58
+ def wrap_with_namespaces(series)
59
+ '<c:chartSpace xmlns:c="' <<
60
+ Axlsx::XML_NS_C <<
61
+ '" xmlns:a="' <<
62
+ Axlsx::XML_NS_A <<
63
+ '">' <<
64
+ series.to_xml_string <<
65
+ '</c:chartSpace>'
66
+ end
67
+
68
+ def xpath_with_namespaces(doc, xpath)
69
+ doc.xpath(xpath, "a" => Axlsx::XML_NS_A, "c" => Axlsx::XML_NS_C)
36
70
  end
37
- #TODO serialization testing
38
71
  end
@@ -5,12 +5,11 @@ class TestPic < Test::Unit::TestCase
5
5
  def setup
6
6
  @p = Axlsx::Package.new
7
7
  ws = @p.workbook.add_worksheet
8
- @test_img = File.dirname(__FILE__) + "/../../examples/image1.jpeg"
9
- @test_img_up = File.dirname(__FILE__) + "/../../examples/IMAGE1UP.JPEG"
10
- @image = ws.add_image :image_src => @test_img, :hyperlink => 'https://github.com/randym', :tooltip => "What's up doc?"
11
- end
12
-
13
- def teardown
8
+ @test_img = @test_img_jpg = File.dirname(__FILE__) + "/../../examples/image1.jpeg"
9
+ @test_img_png = File.dirname(__FILE__) + "/../../examples/image1.png"
10
+ @test_img_gif = File.dirname(__FILE__) + "/../../examples/image1.gif"
11
+ @test_img_fake = File.dirname(__FILE__) + "/../../examples/image1_fake.jpg"
12
+ @image = ws.add_image :image_src => @test_img, :hyperlink => 'https://github.com/randym', :tooltip => "What's up doc?", :opacity => 5
14
13
  end
15
14
 
16
15
  def test_initialization
@@ -38,6 +37,7 @@ class TestPic < Test::Unit::TestCase
38
37
  assert_equal(200, @image.width)
39
38
 
40
39
  end
40
+
41
41
  def test_hyperlink
42
42
  assert_equal(@image.hyperlink.href, "https://github.com/randym")
43
43
  @image.hyperlink = "http://axlsx.blogspot.com"
@@ -70,19 +70,12 @@ class TestPic < Test::Unit::TestCase
70
70
  end
71
71
 
72
72
  def test_image_src
73
- assert_raise(ArgumentError) { @image.image_src = 49 }
74
- assert_raise(ArgumentError) { @image.image_src = 'Unknown' }
75
73
  assert_raise(ArgumentError) { @image.image_src = __FILE__ }
76
- assert_nothing_raised { @image.image_src = @test_img }
77
- assert_equal(@image.image_src, @test_img)
78
- end
79
-
80
- def test_image_src_downcase
81
- assert_nothing_raised { @image.image_src = @test_img_up }
82
- ct = @p.send(:content_types).detect do |t|
83
- t.respond_to?(:extension) && t.extension.downcase == @image.extname.downcase
84
- end
85
- assert_equal("image/jpeg", ct.content_type)
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)
86
79
  end
87
80
 
88
81
  def test_descr
@@ -107,5 +100,4 @@ class TestPic < Test::Unit::TestCase
107
100
  doc = Nokogiri::XML(@image.anchor.drawing.to_xml_string)
108
101
  assert_equal r_id, doc.xpath("//a:blip").first["r:embed"]
109
102
  end
110
-
111
103
  end
@@ -18,28 +18,39 @@ class TestScatterSeries < Test::Unit::TestCase
18
18
  @series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9], :title=>"smoothed exponents"
19
19
  assert(@series.smooth, "series is smooth by default on smooth charts")
20
20
  end
21
-
21
+
22
22
  def test_unsmoothed_chart_default_smoothing
23
23
  @chart = @ws.add_chart Axlsx::ScatterChart, :title => "Unsmooth Chart", :scatter_style => :line
24
24
  @series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9], :title=>"unsmoothed exponents"
25
25
  assert(!@series.smooth, "series is not smooth by default on non-smooth charts")
26
26
  end
27
-
27
+
28
28
  def test_explicit_smoothing
29
29
  @chart = @ws.add_chart Axlsx::ScatterChart, :title => "Unsmooth Chart, Smooth Series", :scatter_style => :line
30
30
  @series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9], :title=>"smoothed exponents", :smooth => true
31
31
  assert(@series.smooth, "series is smooth when overriding chart default")
32
- end
33
-
32
+ end
33
+
34
34
  def test_explicit_unsmoothing
35
35
  @chart = @ws.add_chart Axlsx::ScatterChart, :title => "Smooth Chart, Unsmooth Series", :scatter_style => :smoothMarker
36
36
  @series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9], :title=>"unsmoothed exponents", :smooth => false
37
37
  assert(!@series.smooth, "series is not smooth when overriding chart default")
38
- end
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
39
46
 
40
47
  def test_to_xml_string
48
+ @chart.scatter_style = :line
49
+ @series.ln_width = 12700
41
50
  doc = Nokogiri::XML(@chart.to_xml_string)
51
+ assert_equal(12700, @series.ln_width)
42
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)
43
54
  end
44
55
 
45
56
  end
@@ -4,6 +4,7 @@ class TestStrVal < Test::Unit::TestCase
4
4
 
5
5
  def setup
6
6
  @str_val = Axlsx::StrVal.new :v => "1"
7
+ @str_val_with_special_characters = Axlsx::StrVal.new :v => "a & b <c>"
7
8
  end
8
9
 
9
10
  def test_initialize
@@ -18,4 +19,12 @@ class TestStrVal < Test::Unit::TestCase
18
19
  assert_equal(doc.xpath("//c:pt/c:v[text()='1']").size, 1)
19
20
  end
20
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
+
21
30
  end