axlsx 1.0.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.
- data/Rakefile +13 -0
- data/lib/axlsx.rb +38 -0
- data/lib/axlsx/content_type/content_type.rb +23 -0
- data/lib/axlsx/content_type/default.rb +32 -0
- data/lib/axlsx/content_type/override.rb +30 -0
- data/lib/axlsx/doc_props/app.rb +148 -0
- data/lib/axlsx/doc_props/core.rb +34 -0
- data/lib/axlsx/drawing/axis.rb +78 -0
- data/lib/axlsx/drawing/bar_3D_chart.rb +138 -0
- data/lib/axlsx/drawing/bar_series.rb +91 -0
- data/lib/axlsx/drawing/cat_axis.rb +58 -0
- data/lib/axlsx/drawing/chart.rb +120 -0
- data/lib/axlsx/drawing/drawing.rb +121 -0
- data/lib/axlsx/drawing/graphic_frame.rb +55 -0
- data/lib/axlsx/drawing/marker.rb +57 -0
- data/lib/axlsx/drawing/pie_3D_chart.rb +59 -0
- data/lib/axlsx/drawing/pie_series.rb +88 -0
- data/lib/axlsx/drawing/scaling.rb +53 -0
- data/lib/axlsx/drawing/series.rb +70 -0
- data/lib/axlsx/drawing/title.rb +69 -0
- data/lib/axlsx/drawing/two_cell_anchor.rb +88 -0
- data/lib/axlsx/drawing/val_axis.rb +34 -0
- data/lib/axlsx/drawing/view_3D.rb +72 -0
- data/lib/axlsx/package.rb +181 -0
- data/lib/axlsx/rels/relationship.rb +43 -0
- data/lib/axlsx/rels/relationships.rb +25 -0
- data/lib/axlsx/stylesheet/border.rb +52 -0
- data/lib/axlsx/stylesheet/border_pr.rb +65 -0
- data/lib/axlsx/stylesheet/cell_alignment.rb +96 -0
- data/lib/axlsx/stylesheet/cell_protection.rb +33 -0
- data/lib/axlsx/stylesheet/cell_style.rb +60 -0
- data/lib/axlsx/stylesheet/color.rb +57 -0
- data/lib/axlsx/stylesheet/fill.rb +31 -0
- data/lib/axlsx/stylesheet/font.rb +128 -0
- data/lib/axlsx/stylesheet/gradient_fill.rb +70 -0
- data/lib/axlsx/stylesheet/gradient_stop.rb +31 -0
- data/lib/axlsx/stylesheet/num_fmt.rb +61 -0
- data/lib/axlsx/stylesheet/pattern_fill.rb +64 -0
- data/lib/axlsx/stylesheet/styles.rb +296 -0
- data/lib/axlsx/stylesheet/table_style.rb +44 -0
- data/lib/axlsx/stylesheet/table_style_element.rb +66 -0
- data/lib/axlsx/stylesheet/table_styles.rb +39 -0
- data/lib/axlsx/stylesheet/xf.rb +117 -0
- data/lib/axlsx/util/constants.rb +189 -0
- data/lib/axlsx/util/simple_typed_list.rb +150 -0
- data/lib/axlsx/util/validators.rb +132 -0
- data/lib/axlsx/workbook/workbook.rb +130 -0
- data/lib/axlsx/workbook/worksheet/cell.rb +184 -0
- data/lib/axlsx/workbook/worksheet/row.rb +92 -0
- data/lib/axlsx/workbook/worksheet/worksheet.rb +194 -0
- data/lib/schema/dc.xsd +118 -0
- data/lib/schema/dcmitype.xsd +50 -0
- data/lib/schema/dcterms.xsd +331 -0
- data/lib/schema/dml-chart.xsd +1499 -0
- data/lib/schema/dml-chartDrawing.xsd +146 -0
- data/lib/schema/dml-compatibility.xsd +14 -0
- data/lib/schema/dml-diagram.xsd +1091 -0
- data/lib/schema/dml-lockedCanvas.xsd +11 -0
- data/lib/schema/dml-main.xsd +3048 -0
- data/lib/schema/dml-picture.xsd +23 -0
- data/lib/schema/dml-spreadsheetDrawing.xsd +185 -0
- data/lib/schema/dml-wordprocessingDrawing.xsd +185 -0
- data/lib/schema/opc-contentTypes.xsd +42 -0
- data/lib/schema/opc-coreProperties.xsd +50 -0
- data/lib/schema/opc-digSig.xsd +49 -0
- data/lib/schema/opc-relationships.xsd +33 -0
- data/lib/schema/pml.xsd +1676 -0
- data/lib/schema/shared-additionalCharacteristics.xsd +28 -0
- data/lib/schema/shared-bibliography.xsd +144 -0
- data/lib/schema/shared-commonSimpleTypes.xsd +166 -0
- data/lib/schema/shared-customXmlDataProperties.xsd +25 -0
- data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -0
- data/lib/schema/shared-documentPropertiesCustom.xsd +59 -0
- data/lib/schema/shared-documentPropertiesExtended.xsd +56 -0
- data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -0
- data/lib/schema/shared-math.xsd +582 -0
- data/lib/schema/shared-relationshipReference.xsd +25 -0
- data/lib/schema/sml.xsd +4430 -0
- data/lib/schema/vml-main.xsd +569 -0
- data/lib/schema/vml-officeDrawing.xsd +509 -0
- data/lib/schema/vml-presentationDrawing.xsd +12 -0
- data/lib/schema/vml-spreadsheetDrawing.xsd +108 -0
- data/lib/schema/vml-wordprocessingDrawing.xsd +96 -0
- data/lib/schema/wml.xsd +3644 -0
- data/lib/schema/xml.xsd +117 -0
- data/test/content_type/tc_content_type.rb +81 -0
- data/test/content_type/tc_content_type.rb~ +81 -0
- data/test/content_type/tc_default.rb +40 -0
- data/test/content_type/tc_default.rb~ +40 -0
- data/test/content_type/tc_override.rb +40 -0
- data/test/content_type/tc_override.rb~ +40 -0
- data/test/doc_props/tc_app.rb +19 -0
- data/test/doc_props/tc_app.rb~ +19 -0
- data/test/doc_props/tc_core.rb +34 -0
- data/test/drawing/tc_axis.rb +39 -0
- data/test/drawing/tc_axis.rb~ +0 -0
- data/test/drawing/tc_bar_3D_chart.rb +66 -0
- data/test/drawing/tc_bar_3D_chart.rb~ +4 -0
- data/test/drawing/tc_bar_series.rb +34 -0
- data/test/drawing/tc_bar_series.rb~ +31 -0
- data/test/drawing/tc_cat_axis.rb +32 -0
- data/test/drawing/tc_cat_axis.rb~ +39 -0
- data/test/drawing/tc_chart.rb +59 -0
- data/test/drawing/tc_chart.rb~ +58 -0
- data/test/drawing/tc_drawing.rb +71 -0
- data/test/drawing/tc_graphic_frame.rb +26 -0
- data/test/drawing/tc_graphic_frame.rb~ +21 -0
- data/test/drawing/tc_marker.rb +45 -0
- data/test/drawing/tc_marker.rb~ +26 -0
- data/test/drawing/tc_pie_3D_chart.rb +33 -0
- data/test/drawing/tc_pie_3D_chart.rb~ +58 -0
- data/test/drawing/tc_pie_series.rb +35 -0
- data/test/drawing/tc_pie_series.rb~ +26 -0
- data/test/drawing/tc_scaling.rb +37 -0
- data/test/drawing/tc_scaling.rb~ +45 -0
- data/test/drawing/tc_series.rb +24 -0
- data/test/drawing/tc_series.rb~ +31 -0
- data/test/drawing/tc_title.rb +34 -0
- data/test/drawing/tc_title.rb~ +37 -0
- data/test/drawing/tc_two_cell_anchor.rb +37 -0
- data/test/drawing/tc_two_cell_anchor.rb~ +35 -0
- data/test/drawing/tc_val_axis.rb +20 -0
- data/test/drawing/tc_val_axis.rb~ +32 -0
- data/test/drawing/tc_view_3D.rb +46 -0
- data/test/drawing/tc_view_3D.rb~ +37 -0
- data/test/rels/tc_relationship.rb +16 -0
- data/test/rels/tc_relationship.rb~ +39 -0
- data/test/rels/tc_relationships.rb +32 -0
- data/test/rels/tc_relationships.rb~ +37 -0
- data/test/stylesheet/tc_border.rb +38 -0
- data/test/stylesheet/tc_border.rb~ +31 -0
- data/test/stylesheet/tc_border_pr.rb +33 -0
- data/test/stylesheet/tc_border_pr.rb~ +31 -0
- data/test/stylesheet/tc_cell_alignment.rb +77 -0
- data/test/stylesheet/tc_cell_alignment.rb~ +38 -0
- data/test/stylesheet/tc_cell_protection.rb +30 -0
- data/test/stylesheet/tc_cell_protection.rb~ +77 -0
- data/test/stylesheet/tc_cell_style.rb +58 -0
- data/test/stylesheet/tc_cell_style.rb~ +30 -0
- data/test/stylesheet/tc_color.rb +38 -0
- data/test/stylesheet/tc_color.rb~ +38 -0
- data/test/stylesheet/tc_fill.rb +19 -0
- data/test/stylesheet/tc_fill.rb~ +19 -0
- data/test/stylesheet/tc_font.rb +114 -0
- data/test/stylesheet/tc_font.rb~ +19 -0
- data/test/stylesheet/tc_gradient_fill.rb +65 -0
- data/test/stylesheet/tc_gradient_fill.rb~ +114 -0
- data/test/stylesheet/tc_gradient_stop.rb +32 -0
- data/test/stylesheet/tc_gradient_stop.rb~ +65 -0
- data/test/stylesheet/tc_num_fmt.rb +31 -0
- data/test/stylesheet/tc_num_fmt.rb~ +32 -0
- data/test/stylesheet/tc_pattern_fill.rb +38 -0
- data/test/stylesheet/tc_pattern_fill.rb~ +31 -0
- data/test/stylesheet/tc_styles.rb +64 -0
- data/test/stylesheet/tc_table_style.rb +37 -0
- data/test/stylesheet/tc_table_style.rb~ +38 -0
- data/test/stylesheet/tc_table_style_element.rb +37 -0
- data/test/stylesheet/tc_table_style_element.rb~ +37 -0
- data/test/stylesheet/tc_table_styles.rb +30 -0
- data/test/stylesheet/tc_table_styles.rb~ +37 -0
- data/test/stylesheet/tc_xf.rb +121 -0
- data/test/stylesheet/tc_xf.rb~ +30 -0
- data/test/tc_app.rb~ +19 -0
- data/test/tc_border_pr.rb~ +21 -0
- data/test/tc_package.rb +70 -0
- data/test/tc_package.rb~ +64 -0
- data/test/tc_pie_3D_chart.rb~ +66 -0
- data/test/tc_relationships.rb~ +37 -0
- data/test/tc_series.rb~ +31 -0
- data/test/tc_styles.rb~ +64 -0
- data/test/tc_validators.rb~ +77 -0
- data/test/tc_worksheet.rb~ +85 -0
- data/test/util/tc_simple_typed_list.rb +66 -0
- data/test/util/tc_validators.rb +76 -0
- data/test/workbook/tc_workbook.rb +53 -0
- data/test/workbook/worksheet/tc_cell.rb +78 -0
- data/test/workbook/worksheet/tc_row.rb +30 -0
- data/test/workbook/worksheet/tc_worksheet.rb +85 -0
- metadata +378 -0
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'axlsx.rb'
|
3
|
+
|
4
|
+
class TestApp < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
end
|
7
|
+
def teardown
|
8
|
+
end
|
9
|
+
|
10
|
+
def test_valid_document
|
11
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::APP_XSD))
|
12
|
+
doc = Nokogiri::XML(Axlsx::App.new.to_xml)
|
13
|
+
errors = []
|
14
|
+
schema.validate(doc).each do |error|
|
15
|
+
errors << error
|
16
|
+
end
|
17
|
+
assert_equal(errors.size, 0, "app.xml invalid" + errors.map{ |e| e.message }.to_s)
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'axlsx.rb'
|
3
|
+
|
4
|
+
class TestCore < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@core = Axlsx::Core.new
|
8
|
+
@doc = Nokogiri::XML(@core.to_xml)
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_valid_document
|
12
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::CORE_XSD))
|
13
|
+
errors = []
|
14
|
+
schema.validate(@doc).each do |error|
|
15
|
+
puts error.message
|
16
|
+
errors << error
|
17
|
+
end
|
18
|
+
assert_equal(errors.size, 0, "core.xml Invalid" + errors.map{ |e| e.message }.to_s)
|
19
|
+
end
|
20
|
+
|
21
|
+
def test_populates_created
|
22
|
+
assert_equal(@doc.xpath('//dcterms:created').text, Time.now.strftime('%Y-%m-%dT%H:%M:%S'), "dcterms:created incorrect")
|
23
|
+
end
|
24
|
+
|
25
|
+
def test_populates_default_name
|
26
|
+
assert_equal(@doc.xpath('//dc:creator').text, "axlsx", "Default name not populated")
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_creator_as_option
|
30
|
+
c = Axlsx::Core.new :creator => "some guy"
|
31
|
+
doc = Nokogiri::XML(c.to_xml)
|
32
|
+
assert(doc.xpath('//dc:creator').text == "some guy")
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'axlsx.rb'
|
3
|
+
|
4
|
+
class TestAxis < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@axis = Axlsx::Axis.new 12345, 54321
|
7
|
+
end
|
8
|
+
def teardown
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_initialization
|
12
|
+
assert_equal(@axis.axPos, :l, "axis position default incorrect")
|
13
|
+
assert_equal(@axis.tickLblPos, :nextTo, "tick label position default incorrect")
|
14
|
+
assert_equal(@axis.tickLblPos, :nextTo, "tick label position default incorrect")
|
15
|
+
assert_equal(@axis.crosses, :autoZero, "tick label position default incorrect")
|
16
|
+
assert(@axis.scaling.is_a?(Axlsx::Scaling) && @axis.scaling.orientation == :minMax, "scaling default incorrect")
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_axis_position
|
20
|
+
assert_raise(ArgumentError, "requires valid axis position") { @axis.axPos = :nowhere }
|
21
|
+
assert_nothing_raised("accepts valid axis position") { @axis.axPos = :r }
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_tick_label_position
|
25
|
+
assert_raise(ArgumentError, "requires valid tick label position") { @axis.tickLblPos = :nowhere }
|
26
|
+
assert_nothing_raised("accepts valid tick label position") { @axis.tickLblPos = :high }
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_format_code
|
30
|
+
assert_raise(ArgumentError, "requires valid format code") { @axis.format_code = 1 }
|
31
|
+
assert_nothing_raised("accepts valid format code") { @axis.tickLblPos = :high }
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_crosses
|
35
|
+
assert_raise(ArgumentError, "requires valid crosses") { @axis.crosses = 1 }
|
36
|
+
assert_nothing_raised("accepts valid crosses") { @axis.crosses = :min }
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
File without changes
|
@@ -0,0 +1,66 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'axlsx.rb'
|
3
|
+
|
4
|
+
class TestBar3DChart < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@p = Axlsx::Package.new
|
8
|
+
ws = @p.workbook.add_worksheet
|
9
|
+
@row = ws.add_row :values=>["one", 1, Time.now]
|
10
|
+
@chart = ws.add_chart Axlsx::Bar3DChart, :title => "fishery"
|
11
|
+
end
|
12
|
+
|
13
|
+
def teardown
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_initialization
|
17
|
+
assert_equal(@chart.grouping, :clustered, "grouping defualt incorrect")
|
18
|
+
assert_equal(@chart.series_type, Axlsx::BarSeries, "series type incorrect")
|
19
|
+
assert_equal(@chart.barDir, :bar, " bar direction incorrect")
|
20
|
+
assert(@chart.catAxis.is_a?(Axlsx::CatAxis), "category axis not created")
|
21
|
+
assert(@chart.valAxis.is_a?(Axlsx::ValAxis), "value access not created")
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_bar_direction
|
25
|
+
assert_raise(ArgumentError, "require valid bar direction") { @chart.barDir = :left }
|
26
|
+
assert_nothing_raised("allow valid bar direction") { @chart.barDir = :col }
|
27
|
+
assert(@chart.barDir == :col)
|
28
|
+
end
|
29
|
+
|
30
|
+
def test_grouping
|
31
|
+
assert_raise(ArgumentError, "require valid grouping") { @chart.grouping = :inverted }
|
32
|
+
assert_nothing_raised("allow valid grouping") { @chart.grouping = :standard }
|
33
|
+
assert(@chart.grouping == :standard)
|
34
|
+
end
|
35
|
+
|
36
|
+
|
37
|
+
def test_gapWidth
|
38
|
+
assert_raise(ArgumentError, "require valid gap width") { @chart.gapWidth = 200 }
|
39
|
+
assert_nothing_raised("allow valid gapWidth") { @chart.gapWidth = "200%" }
|
40
|
+
assert(@chart.gapWidth == "200%")
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_gapDepth
|
44
|
+
assert_raise(ArgumentError, "require valid gapDepth") { @chart.gapDepth = 200 }
|
45
|
+
assert_nothing_raised("allow valid gapDepth") { @chart.gapDepth = "200%" }
|
46
|
+
assert(@chart.gapDepth == "200%")
|
47
|
+
end
|
48
|
+
|
49
|
+
def test_shape
|
50
|
+
assert_raise(ArgumentError, "require valid shape") { @chart.shape = :star }
|
51
|
+
assert_nothing_raised("allow valid shape") { @chart.shape = :cone }
|
52
|
+
assert(@chart.shape == :cone)
|
53
|
+
end
|
54
|
+
|
55
|
+
def test_to_xml
|
56
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
57
|
+
doc = Nokogiri::XML(@chart.to_xml)
|
58
|
+
errors = []
|
59
|
+
schema.validate(doc).each do |error|
|
60
|
+
errors.push error
|
61
|
+
puts error.message
|
62
|
+
end
|
63
|
+
assert(errors.empty?, "error free validation")
|
64
|
+
end
|
65
|
+
|
66
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'axlsx.rb'
|
3
|
+
|
4
|
+
class TestBarSeries < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
p = Axlsx::Package.new
|
8
|
+
@ws = p.workbook.add_worksheet :name=>"hmmm"
|
9
|
+
chart = @ws.drawing.add_chart Axlsx::Bar3DChart, :title => "fishery"
|
10
|
+
@series = chart.add_series :data=>[0,1,2], :labels=>["zero", "one", "two"], :title=>"bob"
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_initialize
|
14
|
+
assert_equal(@series.title, "bob", "series title has been applied")
|
15
|
+
assert_equal(@series.data, [0,1,2], "data option applied")
|
16
|
+
assert_equal(@series.labels, ["zero", "one","two"], "labels option applied")
|
17
|
+
assert_equal(@series.shape, :box, "series shape has been applied")
|
18
|
+
end
|
19
|
+
|
20
|
+
def test_data
|
21
|
+
assert_equal(@series.data, [0,1,2])
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_labels
|
25
|
+
assert_equal(@series.labels, ["zero", "one", "two"])
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_shape
|
29
|
+
assert_raise(ArgumentError, "require valid shape") { @series.shape = :teardropt }
|
30
|
+
assert_nothing_raised("allow valid shape") { @series.shape = :cone }
|
31
|
+
assert(@series.shape == :cone)
|
32
|
+
end
|
33
|
+
|
34
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'axlsx.rb'
|
3
|
+
|
4
|
+
class TestSeries < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
p = Axlsx::Package.new
|
8
|
+
@ws = p.workbook.add_worksheet :name=>"hmmm"
|
9
|
+
chart = @ws.drawing.add_chart Axlsx::Bar3DChart, :title => "fishery"
|
10
|
+
@series = chart.add_series :data=>[0,1,2], :labels=>["zero", "one", "two"], :title=>"bob"
|
11
|
+
end
|
12
|
+
|
13
|
+
def test_initialize
|
14
|
+
assert_equal(@series.title, "bob", "series title has been applied")
|
15
|
+
assert_equal(@series.data, [0,1,2], "data option applied")
|
16
|
+
assert_equal(@series.labels, ["zero", "one","two"], "labels option applied")
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_range
|
20
|
+
labels = @ws.add_row :values=>["one", "two", "three"]
|
21
|
+
data = @ws.add_row :values=>[1,2,3]
|
22
|
+
s = @series.chart.add_series :data=>data.cells, :labels=>labels.cells
|
23
|
+
assert_equal(s.send(:range, s.data), "#{@ws.name}!$A$2:$C$2", "range is created created from cells")
|
24
|
+
assert_equal(s.send(:range, s.labels), "#{@ws.name}!$A$1:$C$1", "range is created from cells")
|
25
|
+
assert_equal(@series.send(:range, @series.data), "", "no range if the data is a simple array")
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_index
|
29
|
+
assert_equal(@series.index, @series.chart.series.index(@series))
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'axlsx.rb'
|
3
|
+
|
4
|
+
class TestCatAxis < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@axis = Axlsx::CatAxis.new 12345, 54321
|
7
|
+
end
|
8
|
+
def teardown
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_initialization
|
12
|
+
assert_equal(@axis.auto, true, "axis auto default incorrect")
|
13
|
+
assert_equal(@axis.lblAlgn, :ctr, "label align default incorrect")
|
14
|
+
assert_equal(@axis.lblOffset, "100%", "label offset default incorrect")
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_auto
|
18
|
+
assert_raise(ArgumentError, "requires valid auto") { @axis.auto = :nowhere }
|
19
|
+
assert_nothing_raised("accepts valid auto") { @axis.auto = false }
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_lblAlgn
|
23
|
+
assert_raise(ArgumentError, "requires valid label alignment") { @axis.lblAlgn = :nowhere }
|
24
|
+
assert_nothing_raised("accepts valid label alignment") { @axis.lblAlgn = :r }
|
25
|
+
end
|
26
|
+
|
27
|
+
def test_lblOffset
|
28
|
+
assert_raise(ArgumentError, "requires valid label offset") { @axis.lblOffset = 100 }
|
29
|
+
assert_nothing_raised("accepts valid label offset") { @axis.lblOffset = "20%" }
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'axlsx.rb'
|
3
|
+
|
4
|
+
class TestAxis < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
@axis = Axlsx::Axis.new 12345, 54321
|
7
|
+
end
|
8
|
+
def teardown
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_initialization
|
12
|
+
assert_equal(@axis.axPos, :l, "axis position default incorrect")
|
13
|
+
assert_equal(@axis.tickLblPos, :nextTo, "tick label position default incorrect")
|
14
|
+
assert_equal(@axis.tickLblPos, :nextTo, "tick label position default incorrect")
|
15
|
+
assert_equal(@axis.crosses, :autoZero, "tick label position default incorrect")
|
16
|
+
assert(@axis.scaling.is_a?(Axlsx::Scaling) && @axis.scaling.orientation == :minMax, "scaling default incorrect")
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_axis_position
|
20
|
+
assert_raise(ArgumentError, "requires valid axis position") { @axis.axPos = :nowhere }
|
21
|
+
assert_nothing_raised("accepts valid axis position") { @axis.axPos = :r }
|
22
|
+
end
|
23
|
+
|
24
|
+
def test_tick_label_position
|
25
|
+
assert_raise(ArgumentError, "requires valid tick label position") { @axis.tickLblPos = :nowhere }
|
26
|
+
assert_nothing_raised("accepts valid tick label position") { @axis.tickLblPos = :high }
|
27
|
+
end
|
28
|
+
|
29
|
+
def test_format_code
|
30
|
+
assert_raise(ArgumentError, "requires valid format code") { @axis.format_code = 1 }
|
31
|
+
assert_nothing_raised("accepts valid format code") { @axis.tickLblPos = :high }
|
32
|
+
end
|
33
|
+
|
34
|
+
def test_crosses
|
35
|
+
assert_raise(ArgumentError, "requires valid crosses") { @axis.crosses = 1 }
|
36
|
+
assert_nothing_raised("accepts valid crosses") { @axis.crosses = :min }
|
37
|
+
end
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'axlsx.rb'
|
3
|
+
|
4
|
+
class TestChart < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@p = Axlsx::Package.new
|
8
|
+
ws = @p.workbook.add_worksheet
|
9
|
+
@row = ws.add_row :values=>["one", 1, Time.now]
|
10
|
+
@chart = ws.add_chart Axlsx::Bar3DChart, :title => "fishery"
|
11
|
+
end
|
12
|
+
|
13
|
+
def teardown
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_initialization
|
17
|
+
assert_equal(@p.workbook.charts.last,@chart, "the chart is in the workbook")
|
18
|
+
assert_equal(@chart.title.text, "fishery", "the title option has been applied")
|
19
|
+
assert((@chart.series.is_a?(Axlsx::SimpleTypedList) && @chart.series.empty?), "The series is initialized and empty")
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_title
|
23
|
+
@chart.title.text = 'wowzer'
|
24
|
+
assert_equal(@chart.title.text, "wowzer", "the title text via a string")
|
25
|
+
assert_equal(@chart.title.cell, nil, "the title cell is nil as we set the title with text.")
|
26
|
+
@chart.title.cell = @row.cells.first
|
27
|
+
assert_equal(@chart.title.text, "one", "the title text was set via cell reference")
|
28
|
+
assert_equal(@chart.title.cell, @row.cells.first)
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
def test_add_series
|
33
|
+
s = @chart.add_series :data=>[0,1,2,3], :labels => ["one", 1, "anything"], :title=>"bob"
|
34
|
+
assert_equal(@chart.series.last, s, "series has been added to chart series collection")
|
35
|
+
assert_equal(s.title, "bob", "series title has been applied")
|
36
|
+
assert_equal(s.data, [0,1,2,3], "data option applied")
|
37
|
+
assert_equal(s.labels, ["one",1,"anything"], "labels option applied")
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_create_range
|
41
|
+
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_pn
|
45
|
+
assert_equal(@chart.pn, "charts/chart1.xml")
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_to_xml
|
49
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
50
|
+
doc = Nokogiri::XML(@chart.to_xml)
|
51
|
+
errors = []
|
52
|
+
schema.validate(doc).each do |error|
|
53
|
+
errors.push error
|
54
|
+
puts error.message
|
55
|
+
end
|
56
|
+
assert(errors.empty?, "error free validation")
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'axlsx.rb'
|
3
|
+
|
4
|
+
class TestChart < Test::Unit::TestCase
|
5
|
+
|
6
|
+
def setup
|
7
|
+
@p = Axlsx::Package.new
|
8
|
+
ws = @p.workbook.add_worksheet
|
9
|
+
@row = ws.add_row :values=>["one", 1, Time.now]
|
10
|
+
@chart = ws.add_chart Axlsx::Bar3DChart, :title => "fishery"
|
11
|
+
end
|
12
|
+
|
13
|
+
def teardown
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_initialization
|
17
|
+
assert_equal(@p.workbook.charts.last,@chart, "the chart is in the workbook")
|
18
|
+
assert_equal(@chart.title.text, "fishery", "the title option has been applied")
|
19
|
+
assert((@chart.series.is_a?(Axlsx::SimpleTypedList) && @chart.series.empty?), "The series is initialized and empty")
|
20
|
+
end
|
21
|
+
|
22
|
+
def test_title
|
23
|
+
@chart.title.text = 'wowzer'
|
24
|
+
assert_equal(@chart.title.text, "wowzer", "the title text via a string")
|
25
|
+
assert_equal(@chart.title.cell, nil, "the title cell is nil as we set the title with text.")
|
26
|
+
@chart.title.cell = @row.cells.first
|
27
|
+
assert_equal(@chart.title.text, "one", "the title text was set via cell reference")
|
28
|
+
assert_equal(@chart.title.cell, @row.cells.first)
|
29
|
+
end
|
30
|
+
|
31
|
+
def test_add_series
|
32
|
+
s = @chart.add_series :data=>[0,1,2,3], :labels => ["one", 1, "anything"], :title=>"bob"
|
33
|
+
assert_equal(@chart.series.last, s, "series has been added to chart series collection")
|
34
|
+
assert_equal(s.title, "bob", "series title has been applied")
|
35
|
+
assert_equal(s.data, [0,1,2,3], "data option applied")
|
36
|
+
assert_equal(s.labels, ["one",1,"anything"], "labels option applied")
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_create_range
|
40
|
+
|
41
|
+
end
|
42
|
+
|
43
|
+
def test_pn
|
44
|
+
assert_equal(@chart.pn, "charts/chart1.xml")
|
45
|
+
end
|
46
|
+
|
47
|
+
def test_to_xml
|
48
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
49
|
+
doc = Nokogiri::XML(@chart.to_xml)
|
50
|
+
errors = []
|
51
|
+
schema.validate(doc).each do |error|
|
52
|
+
errors.push error
|
53
|
+
puts error.message
|
54
|
+
end
|
55
|
+
assert(errors.empty?, "error free validation")
|
56
|
+
end
|
57
|
+
|
58
|
+
end
|
@@ -0,0 +1,71 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require 'axlsx.rb'
|
3
|
+
|
4
|
+
class TestDrawing < Test::Unit::TestCase
|
5
|
+
def setup
|
6
|
+
p = Axlsx::Package.new
|
7
|
+
@ws = p.workbook.add_worksheet
|
8
|
+
|
9
|
+
end
|
10
|
+
|
11
|
+
def test_initialization
|
12
|
+
assert(@ws.workbook.drawings.empty?)
|
13
|
+
assert_equal(@ws.drawing, @ws.workbook.drawings.last, "drawing is added to workbook")
|
14
|
+
assert(@ws.drawing.anchors.is_a?(Axlsx::SimpleTypedList) && @ws.drawing.anchors.empty?, "anchor list is created and empty")
|
15
|
+
end
|
16
|
+
|
17
|
+
def test_add_chart
|
18
|
+
chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"bob", :start_at=>[0,0], :end_at=>[1,1])
|
19
|
+
assert(chart.is_a?(Axlsx::Pie3DChart), "must create a chart")
|
20
|
+
assert_equal(@ws.workbook.charts.last, chart, "must be added to workbook charts collection")
|
21
|
+
assert_equal(@ws.drawing.anchors.last.graphic_frame.chart, chart, "an anchor has been created and holds a reference to this chart")
|
22
|
+
anchor = @ws.drawing.anchors.last
|
23
|
+
assert_equal([anchor.from.row, anchor.from.col], [0,0], "options for start at are applied")
|
24
|
+
assert_equal([anchor.to.row, anchor.to.col], [1,1], "options for start at are applied")
|
25
|
+
assert_equal(chart.title.text, "bob", "option for title is applied")
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_charts
|
29
|
+
assert(@ws.drawing.charts.empty?)
|
30
|
+
chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"bob", :start_at=>[0,0], :end_at=>[1,1])
|
31
|
+
assert_equal(@ws.drawing.charts.last, chart, "add chart is returned")
|
32
|
+
chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"nancy", :start_at=>[1,5], :end_at=>[5,10])
|
33
|
+
assert_equal(@ws.drawing.charts.last, chart, "add chart is returned")
|
34
|
+
end
|
35
|
+
|
36
|
+
def test_pn
|
37
|
+
assert_equal(@ws.drawing.pn, "drawings/drawing1.xml")
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_rels_pn
|
41
|
+
assert_equal(@ws.drawing.rels_pn, "drawings/_rels/drawing1.xml.rels")
|
42
|
+
end
|
43
|
+
|
44
|
+
def test_rId
|
45
|
+
assert_equal(@ws.drawing.rId, "rId1")
|
46
|
+
end
|
47
|
+
|
48
|
+
def test_index
|
49
|
+
assert_equal(@ws.drawing.index, @ws.workbook.drawings.index(@ws.drawing))
|
50
|
+
end
|
51
|
+
|
52
|
+
def test_relationships
|
53
|
+
assert(@ws.drawing.relationships.empty?)
|
54
|
+
chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"bob", :start_at=>[0,0], :end_at=>[1,1])
|
55
|
+
assert_equal(@ws.drawing.relationships.size, 1, "adding a chart adds a relationship")
|
56
|
+
chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"nancy", :start_at=>[1,5], :end_at=>[5,10])
|
57
|
+
assert_equal(@ws.drawing.relationships.size, 2, "adding a chart adds a relationship")
|
58
|
+
end
|
59
|
+
|
60
|
+
def test_to_xml
|
61
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
62
|
+
doc = Nokogiri::XML(@ws.drawing.to_xml)
|
63
|
+
errors = []
|
64
|
+
schema.validate(doc).each do |error|
|
65
|
+
errors.push error
|
66
|
+
puts error.message
|
67
|
+
end
|
68
|
+
assert(errors.empty?, "error free validation")
|
69
|
+
end
|
70
|
+
|
71
|
+
end
|