axlsx 1.1.4 → 1.2.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/.yardopts +5 -2
- data/CHANGELOG.md +39 -0
- data/README.md +108 -31
- data/Rakefile +11 -3
- data/examples/basic_charts.rb +54 -0
- data/examples/chart_colors.rb +17 -2
- data/examples/data_validation.rb +50 -0
- data/examples/example.rb +130 -47
- data/examples/example.xlsx +0 -0
- data/examples/example_streamed.xlsx +0 -0
- data/examples/extractive.pdf +0 -0
- data/examples/extractive.rb +3 -0
- data/examples/no-use_autowidth.xlsx +0 -0
- data/examples/scraping_html.rb +91 -0
- data/examples/shared_strings_example.xlsx +0 -0
- data/examples/sheet_protection.rb +10 -0
- data/examples/sheet_view.rb +34 -0
- data/examples/two_cell_anchor_image.rb +11 -0
- data/lib/axlsx/content_type/content_type.rb +2 -0
- data/lib/axlsx/content_type/default.rb +30 -15
- data/lib/axlsx/content_type/override.rb +29 -14
- data/lib/axlsx/doc_props/app.rb +161 -104
- data/lib/axlsx/doc_props/core.rb +9 -5
- data/lib/axlsx/drawing/ax_data_source.rb +7 -6
- data/lib/axlsx/drawing/axis.rb +82 -36
- data/lib/axlsx/drawing/bar_3D_chart.rb +49 -45
- data/lib/axlsx/drawing/bar_series.rb +2 -1
- data/lib/axlsx/drawing/cat_axis.rb +43 -39
- data/lib/axlsx/drawing/chart.rb +65 -54
- data/lib/axlsx/drawing/d_lbls.rb +100 -0
- data/lib/axlsx/drawing/drawing.rb +20 -8
- data/lib/axlsx/drawing/graphic_frame.rb +2 -1
- data/lib/axlsx/drawing/line_3D_chart.rb +3 -10
- data/lib/axlsx/drawing/num_data.rb +2 -2
- data/lib/axlsx/drawing/num_data_source.rb +4 -1
- data/lib/axlsx/drawing/pic.rb +44 -4
- data/lib/axlsx/drawing/pie_3D_chart.rb +10 -7
- data/lib/axlsx/drawing/scatter_chart.rb +2 -8
- data/lib/axlsx/drawing/title.rb +21 -9
- data/lib/axlsx/drawing/two_cell_anchor.rb +46 -9
- data/lib/axlsx/drawing/view_3D.rb +41 -31
- data/lib/axlsx/drawing/vml_drawing.rb +42 -0
- data/lib/axlsx/drawing/vml_shape.rb +125 -0
- data/lib/axlsx/package.rb +44 -16
- data/lib/axlsx/rels/relationship.rb +3 -3
- data/lib/axlsx/rels/relationships.rb +1 -11
- data/lib/axlsx/stylesheet/gradient_fill.rb +1 -1
- data/lib/axlsx/stylesheet/styles.rb +1 -1
- data/lib/axlsx/stylesheet/table_style.rb +3 -3
- data/lib/axlsx/util/constants.rb +28 -0
- data/lib/axlsx/util/simple_typed_list.rb +15 -21
- data/lib/axlsx/util/validators.rb +80 -7
- data/lib/axlsx/version.rb +2 -7
- data/lib/axlsx/workbook/defined_name.rb +174 -0
- data/lib/axlsx/workbook/defined_names.rb +21 -0
- data/lib/axlsx/workbook/workbook.rb +65 -13
- data/lib/axlsx/workbook/worksheet/auto_filter.rb +34 -0
- data/lib/axlsx/workbook/worksheet/cell.rb +35 -7
- data/lib/axlsx/workbook/worksheet/col.rb +15 -0
- data/lib/axlsx/workbook/worksheet/cols.rb +20 -0
- data/lib/axlsx/workbook/worksheet/comment.rb +101 -0
- data/lib/axlsx/workbook/worksheet/comments.rb +85 -0
- data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -0
- data/lib/axlsx/workbook/worksheet/data_bar.rb +1 -1
- data/lib/axlsx/workbook/worksheet/data_validation.rb +245 -0
- data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -0
- data/lib/axlsx/workbook/worksheet/dimension.rb +65 -0
- data/lib/axlsx/workbook/worksheet/merged_cells.rb +35 -0
- data/lib/axlsx/workbook/worksheet/page_setup.rb +113 -0
- data/lib/axlsx/workbook/worksheet/pane.rb +144 -0
- data/lib/axlsx/workbook/worksheet/print_options.rb +63 -0
- data/lib/axlsx/workbook/worksheet/protected_range.rb +46 -0
- data/lib/axlsx/workbook/worksheet/protected_ranges.rb +34 -0
- data/lib/axlsx/workbook/worksheet/row.rb +36 -20
- data/lib/axlsx/workbook/worksheet/selection.rb +111 -0
- data/lib/axlsx/workbook/worksheet/sheet_data.rb +25 -0
- data/lib/axlsx/workbook/worksheet/sheet_pr.rb +24 -0
- data/lib/axlsx/workbook/worksheet/sheet_protection.rb +224 -0
- data/lib/axlsx/workbook/worksheet/sheet_view.rb +379 -0
- data/lib/axlsx/workbook/worksheet/table.rb +2 -2
- data/lib/axlsx/workbook/worksheet/tables.rb +31 -0
- data/lib/axlsx/workbook/worksheet/worksheet.rb +377 -255
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +57 -0
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +64 -0
- data/lib/axlsx.rb +30 -15
- data/test/content_type/tc_content_type.rb +1 -6
- data/test/doc_props/tc_app.rb +31 -1
- data/test/doc_props/tc_core.rb +3 -1
- data/test/drawing/tc_axis.rb +38 -3
- data/test/drawing/tc_bar_3D_chart.rb +12 -12
- data/test/drawing/tc_bar_series.rb +1 -2
- data/test/drawing/tc_cat_axis.rb +3 -3
- data/test/drawing/tc_chart.rb +29 -9
- data/test/drawing/tc_d_lbls.rb +47 -0
- data/test/drawing/tc_drawing.rb +11 -5
- data/test/drawing/tc_hyperlink.rb +4 -5
- data/test/drawing/tc_line_series.rb +7 -3
- data/test/drawing/tc_num_data.rb +5 -1
- data/test/drawing/tc_pic.rb +22 -2
- data/test/drawing/tc_pie_3D_chart.rb +4 -8
- data/test/drawing/tc_pie_series.rb +7 -2
- data/test/drawing/tc_scatter_chart.rb +6 -1
- data/test/drawing/tc_scatter_series.rb +1 -1
- data/test/drawing/tc_series.rb +1 -1
- data/test/drawing/tc_title.rb +16 -0
- data/test/drawing/tc_two_cell_anchor.rb +1 -2
- data/test/drawing/tc_view_3D.rb +18 -18
- data/test/drawing/tc_vml_drawing.rb +25 -0
- data/test/drawing/tc_vml_shape.rb +100 -0
- data/test/rels/tc_relationship.rb +1 -0
- data/test/stylesheet/tc_gradient_fill.rb +8 -0
- data/test/stylesheet/tc_pattern_fill.rb +7 -1
- data/test/stylesheet/tc_styles.rb +3 -4
- data/test/stylesheet/tc_table_style.rb +8 -0
- data/test/stylesheet/tc_table_style_element.rb +10 -1
- data/test/tc_helper.rb +1 -0
- data/test/tc_package.rb +93 -17
- data/test/util/tc_simple_typed_list.rb +13 -0
- data/test/util/tc_validators.rb +95 -9
- data/test/workbook/tc_defined_name.rb +41 -0
- data/test/workbook/tc_workbook.rb +5 -3
- data/test/workbook/worksheet/table/tc_table.rb +3 -11
- data/test/workbook/worksheet/tc_cell.rb +30 -6
- data/test/workbook/worksheet/tc_col.rb +9 -0
- data/test/workbook/worksheet/tc_comment.rb +57 -0
- data/test/workbook/worksheet/tc_comments.rb +57 -0
- data/test/workbook/worksheet/tc_conditional_formatting.rb +44 -0
- data/test/workbook/worksheet/tc_data_bar.rb +1 -1
- data/test/workbook/worksheet/tc_data_validation.rb +265 -0
- data/test/workbook/worksheet/tc_page_setup.rb +138 -0
- data/test/workbook/worksheet/tc_pane.rb +94 -0
- data/test/workbook/worksheet/tc_print_options.rb +72 -0
- data/test/workbook/worksheet/tc_protected_range.rb +17 -0
- data/test/workbook/worksheet/tc_row.rb +32 -14
- data/test/workbook/worksheet/tc_selection.rb +94 -0
- data/test/workbook/worksheet/tc_sheet_protection.rb +117 -0
- data/test/workbook/worksheet/tc_sheet_view.rb +214 -0
- data/test/workbook/worksheet/tc_worksheet.rb +138 -48
- metadata +140 -80
- data/examples/#extractive.csv# +0 -0
- data/examples/#extractive.rb# +0 -45
- data/examples/chart_colors.rb~ +0 -0
- data/examples/chart_colors.xlsx +0 -0
- data/examples/colored_series_data.xlsx +0 -0
- data/examples/conditional_formatting/getting_barred.xlsx +0 -0
- data/examples/example.csv +0 -1000
- data/examples/extractive.csv +0 -1
- data/examples/extractive.csv~ +0 -1
- data/examples/extractive.rb~ +0 -3
- data/examples/extractive.xlsx +0 -0
- data/examples/stack.rb +0 -21
- data/examples/stack.rb~ +0 -27
- data/examples/stack.xlsx +0 -0
- data/examples/~$chart_colors.xlsx +0 -0
- data/examples/~$extractive.xlsx +0 -0
- data/lib/axlsx/drawing/ax_data_source.rb~ +0 -55
- data/lib/axlsx/drawing/data_source.rb~ +0 -51
- data/lib/axlsx/drawing/hlink_click.rb~ +0 -0
- data/lib/axlsx/drawing/hyperlink.rb~ +0 -64
- data/lib/axlsx/drawing/num_data.rb~ +0 -51
- data/lib/axlsx/drawing/num_data_source.rb~ +0 -54
- data/lib/axlsx/drawing/num_val.rb~ +0 -40
- data/lib/axlsx/drawing/picture_locking.rb~ +0 -36
- data/lib/axlsx/drawing/ref.rb~ +0 -41
- data/lib/axlsx/drawing/str_data.rb~ +0 -58
- data/lib/axlsx/drawing/str_val.rb~ +0 -35
- data/lib/axlsx/util/cbf.rb +0 -333
- data/lib/axlsx/util/cfb.rb~ +0 -201
- data/lib/axlsx/util/font_tables.rb~ +0 -0
- data/lib/axlsx/util/ms_off_crypto.rb +0 -189
- data/lib/axlsx/util/ms_off_crypto.rb~ +0 -3
- data/lib/axlsx/util/ms_offcrypto.rb~ +0 -0
- data/lib/axlsx/util/parser.rb~ +0 -6
- data/lib/axlsx/util/storage.rb~ +0 -0
- data/lib/axlsx/workbook/shared_strings_table.rb~ +0 -69
- data/lib/axlsx/workbook/worksheet/cfvo.rb~ +0 -0
- data/lib/axlsx/workbook/worksheet/col.rb~ +0 -0
- data/lib/axlsx/workbook/worksheet/color_scale.rb~ +0 -46
- data/lib/axlsx/workbook/worksheet/data_bar.rb~ +0 -0
- data/lib/axlsx/workbook/worksheet/icon_set.rb~ +0 -95
- data/lib/axlsx/workbook/worksheet/shared_strings_table.rb~ +0 -0
- data/lib/axlsx/workbook/worksheet/table.rb~ +0 -97
- data/lib/schema/dc.xsd~ +0 -118
- data/lib/schema/dcterms.xsd~ +0 -331
- data/lib/schema/opc-coreProperties.xsd~ +0 -50
- data/test/drawing/tc_data_source.rb~ +0 -30
- data/test/drawing/tc_num_data.rb~ +0 -35
- data/test/drawing/tc_num_val.rb~ +0 -29
- data/test/drawing/tc_str_data.rb~ +0 -30
- data/test/drawing/tc_str_val.rb~ +0 -26
- data/test/workbook/worksheet/table/tc_table.rb~ +0 -72
- data/test/workbook/worksheet/tc_cfvo.rb~ +0 -20
- data/test/workbook/worksheet/tc_col.rb~ +0 -10
- data/test/workbook/worksheet/tc_color_scale.rb~ +0 -0
- data/test/workbook/worksheet/tc_data_bar.rb~ +0 -0
- data/test/workbook/worksheet/tc_icon_set.rb~ +0 -0
data/test/drawing/tc_pic.rb
CHANGED
|
@@ -6,7 +6,7 @@ class TestPic < Test::Unit::TestCase
|
|
|
6
6
|
@p = Axlsx::Package.new
|
|
7
7
|
ws = @p.workbook.add_worksheet
|
|
8
8
|
@test_img = File.dirname(__FILE__) + "/../../examples/image1.jpeg"
|
|
9
|
-
@image = ws.add_image :image_src => @test_img
|
|
9
|
+
@image = ws.add_image :image_src => @test_img, :hyperlink => 'https://github.com/randym', :tooltip => "What's up doc?"
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def teardown
|
|
@@ -14,11 +14,31 @@ class TestPic < Test::Unit::TestCase
|
|
|
14
14
|
|
|
15
15
|
def test_initialization
|
|
16
16
|
assert_equal(@p.workbook.images.first, @image)
|
|
17
|
+
assert_equal(@image.file_name, 'image1.jpeg')
|
|
17
18
|
assert_equal(@image.image_src, @test_img)
|
|
18
19
|
end
|
|
19
20
|
|
|
21
|
+
def test_anchor_swapping
|
|
22
|
+
#swap from one cell to two cell when end_at is specified
|
|
23
|
+
assert(@image.anchor.is_a?(Axlsx::OneCellAnchor))
|
|
24
|
+
start_at = @image.anchor.from
|
|
25
|
+
@image.end_at 10,5
|
|
26
|
+
assert(@image.anchor.is_a?(Axlsx::TwoCellAnchor))
|
|
27
|
+
assert_equal(start_at.col, @image.anchor.from.col)
|
|
28
|
+
assert_equal(start_at.row, @image.anchor.from.row)
|
|
29
|
+
assert_equal(10,@image.anchor.to.col)
|
|
30
|
+
assert_equal(5, @image.anchor.to.row)
|
|
31
|
+
|
|
32
|
+
#swap from two cell to one cell when width or height are specified
|
|
33
|
+
@image.width = 200
|
|
34
|
+
assert(@image.anchor.is_a?(Axlsx::OneCellAnchor))
|
|
35
|
+
assert_equal(start_at.col, @image.anchor.from.col)
|
|
36
|
+
assert_equal(start_at.row, @image.anchor.from.row)
|
|
37
|
+
assert_equal(200, @image.width)
|
|
38
|
+
|
|
39
|
+
end
|
|
20
40
|
def test_hyperlink
|
|
21
|
-
assert_equal(@image.hyperlink,
|
|
41
|
+
assert_equal(@image.hyperlink.href, "https://github.com/randym")
|
|
22
42
|
@image.hyperlink = "http://axlsx.blogspot.com"
|
|
23
43
|
assert_equal(@image.hyperlink.href, "http://axlsx.blogspot.com")
|
|
24
44
|
end
|
|
@@ -6,26 +6,22 @@ class TestPie3DChart < Test::Unit::TestCase
|
|
|
6
6
|
p = Axlsx::Package.new
|
|
7
7
|
ws = p.workbook.add_worksheet
|
|
8
8
|
@row = ws.add_row ["one", 1, Time.now]
|
|
9
|
-
@chart = ws.
|
|
9
|
+
@chart = ws.add_chart Axlsx::Pie3DChart, :title => "fishery"
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def teardown
|
|
13
13
|
end
|
|
14
14
|
|
|
15
15
|
def test_initialization
|
|
16
|
-
assert_equal(@chart.
|
|
17
|
-
assert_equal(@chart.
|
|
16
|
+
assert_equal(@chart.view_3D.rot_x, 30, "view 3d default rot_x incorrect")
|
|
17
|
+
assert_equal(@chart.view_3D.perspective, 30, "view_3d default perspective incorrect")
|
|
18
18
|
assert_equal(@chart.series_type, Axlsx::PieSeries, "series type incorrect")
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
def test_to_xml
|
|
22
22
|
schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
|
|
23
23
|
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
24
|
-
errors =
|
|
25
|
-
schema.validate(doc).each do |error|
|
|
26
|
-
errors.push error
|
|
27
|
-
puts error.message
|
|
28
|
-
end
|
|
24
|
+
errors = schema.validate(doc).map {|error| puts error.message; error }
|
|
29
25
|
assert(errors.empty?, "error free validation")
|
|
30
26
|
end
|
|
31
27
|
|
|
@@ -5,8 +5,8 @@ class TestPieSeries < Test::Unit::TestCase
|
|
|
5
5
|
def setup
|
|
6
6
|
p = Axlsx::Package.new
|
|
7
7
|
@ws = p.workbook.add_worksheet :name=>"hmmm"
|
|
8
|
-
chart = @ws.
|
|
9
|
-
@series = chart.add_series :data=>[0,1,2], :labels=>["zero", "one", "two"], :title=>"bob"
|
|
8
|
+
chart = @ws.add_chart Axlsx::Pie3DChart, :title => "fishery"
|
|
9
|
+
@series = chart.add_series :data=>[0,1,2], :labels=>["zero", "one", "two"], :title=>"bob", :colors => ["FF0000", "00FF00", "0000FF"]
|
|
10
10
|
end
|
|
11
11
|
|
|
12
12
|
def test_initialize
|
|
@@ -22,6 +22,11 @@ class TestPieSeries < Test::Unit::TestCase
|
|
|
22
22
|
assert(@series.explosion == 20)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
+
def test_to_xml_string
|
|
26
|
+
doc = Nokogiri::XML(@series.to_xml_string)
|
|
27
|
+
assert(doc.xpath("//srgbClr[@val='#{@series.colors[0]}']"))
|
|
28
|
+
|
|
29
|
+
end
|
|
25
30
|
#TODO test unique serialization parts
|
|
26
31
|
|
|
27
32
|
end
|
|
@@ -4,7 +4,7 @@ class TestScatterChart < Test::Unit::TestCase
|
|
|
4
4
|
def setup
|
|
5
5
|
@p = Axlsx::Package.new
|
|
6
6
|
@chart = nil
|
|
7
|
-
|
|
7
|
+
@p.workbook.add_worksheet do |sheet|
|
|
8
8
|
sheet.add_row ["First", 1, 5, 7, 9]
|
|
9
9
|
sheet.add_row ["", 1, 25, 49, 81]
|
|
10
10
|
sheet.add_row ["Second", 5, 2, 14, 9]
|
|
@@ -22,6 +22,11 @@ class TestScatterChart < Test::Unit::TestCase
|
|
|
22
22
|
def teardown
|
|
23
23
|
end
|
|
24
24
|
|
|
25
|
+
def test_scatter_style
|
|
26
|
+
@chart.scatterStyle = :marker
|
|
27
|
+
assert(@chart.scatterStyle == :marker)
|
|
28
|
+
assert_raise(ArgumentError) { @chart.scatterStyle = :buckshot }
|
|
29
|
+
end
|
|
25
30
|
def test_initialization
|
|
26
31
|
assert_equal(@chart.scatterStyle, :lineMarker, "scatterStyle defualt incorrect")
|
|
27
32
|
assert_equal(@chart.series_type, Axlsx::ScatterSeries, "series type incorrect")
|
|
@@ -5,7 +5,7 @@ class TestScatterSeries < Test::Unit::TestCase
|
|
|
5
5
|
def setup
|
|
6
6
|
p = Axlsx::Package.new
|
|
7
7
|
@ws = p.workbook.add_worksheet :name=>"hmmm"
|
|
8
|
-
@chart = @ws.
|
|
8
|
+
@chart = @ws.add_chart Axlsx::ScatterChart, :title => "Scatter Chart"
|
|
9
9
|
@series = @chart.add_series :xData=>[1,2,4], :yData=>[1,3,9], :title=>"exponents", :color => 'FF0000'
|
|
10
10
|
end
|
|
11
11
|
|
data/test/drawing/tc_series.rb
CHANGED
|
@@ -5,7 +5,7 @@ class TestSeries < Test::Unit::TestCase
|
|
|
5
5
|
def setup
|
|
6
6
|
p = Axlsx::Package.new
|
|
7
7
|
@ws = p.workbook.add_worksheet :name=>"hmmm"
|
|
8
|
-
chart = @ws.
|
|
8
|
+
chart = @ws.add_chart Axlsx::Chart, :title => "fishery"
|
|
9
9
|
@series = chart.add_series :title=>"bob"
|
|
10
10
|
end
|
|
11
11
|
|
data/test/drawing/tc_title.rb
CHANGED
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
$LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../"
|
|
2
|
+
|
|
1
3
|
require 'tc_helper.rb'
|
|
2
4
|
|
|
3
5
|
class TestTitle < Test::Unit::TestCase
|
|
@@ -30,4 +32,18 @@ class TestTitle < Test::Unit::TestCase
|
|
|
30
32
|
assert(@title.text == "one")
|
|
31
33
|
end
|
|
32
34
|
|
|
35
|
+
def test_to_xml_string_text
|
|
36
|
+
@chart.title.text = 'foo'
|
|
37
|
+
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
38
|
+
assert_equal(1, doc.xpath('//c:rich').size)
|
|
39
|
+
assert_equal(1, doc.xpath("//a:t[text()='foo']").size)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def test_to_xml_string_cell
|
|
43
|
+
@chart.title.cell = @row.cells.first
|
|
44
|
+
doc = Nokogiri::XML(@chart.to_xml_string)
|
|
45
|
+
assert_equal(1, doc.xpath('//c:strCache').size)
|
|
46
|
+
assert_equal(1, doc.xpath('//c:v[text()="one"]').size)
|
|
47
|
+
end
|
|
48
|
+
|
|
33
49
|
end
|
|
@@ -5,8 +5,7 @@ class TestTwoCellAnchor < Test::Unit::TestCase
|
|
|
5
5
|
def setup
|
|
6
6
|
p = Axlsx::Package.new
|
|
7
7
|
@ws = p.workbook.add_worksheet
|
|
8
|
-
|
|
9
|
-
title = Axlsx::Title.new
|
|
8
|
+
@ws.add_row ["one", 1, Time.now]
|
|
10
9
|
chart = @ws.add_chart Axlsx::Bar3DChart
|
|
11
10
|
@anchor = chart.graphic_frame.anchor
|
|
12
11
|
end
|
data/test/drawing/tc_view_3D.rb
CHANGED
|
@@ -9,33 +9,33 @@ class TestView3D < Test::Unit::TestCase
|
|
|
9
9
|
end
|
|
10
10
|
|
|
11
11
|
def test_options
|
|
12
|
-
v = Axlsx::View3D.new :
|
|
13
|
-
assert_equal(v.
|
|
14
|
-
assert_equal(v.
|
|
15
|
-
assert_equal(v.
|
|
16
|
-
assert_equal(v.
|
|
17
|
-
assert_equal(v.
|
|
12
|
+
v = Axlsx::View3D.new :rot_x => 10, :rot_y => 5, :h_percent => "30%", :depth_percent => "45%", :r_ang_ax => false, :perspective => 10
|
|
13
|
+
assert_equal(v.rot_x, 10)
|
|
14
|
+
assert_equal(v.rot_y, 5)
|
|
15
|
+
assert_equal(v.h_percent, "30%")
|
|
16
|
+
assert_equal(v.depth_percent, "45%")
|
|
17
|
+
assert_equal(v.r_ang_ax, false)
|
|
18
18
|
assert_equal(v.perspective, 10)
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
def
|
|
22
|
-
assert_raise(ArgumentError) {@view.
|
|
23
|
-
assert_nothing_raised {@view.
|
|
21
|
+
def test_rot_x
|
|
22
|
+
assert_raise(ArgumentError) {@view.rot_x = "bob"}
|
|
23
|
+
assert_nothing_raised {@view.rot_x = -90}
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
def
|
|
27
|
-
assert_raise(ArgumentError) {@view.
|
|
28
|
-
assert_nothing_raised {@view.
|
|
26
|
+
def test_rot_y
|
|
27
|
+
assert_raise(ArgumentError) {@view.rot_y = "bob"}
|
|
28
|
+
assert_nothing_raised {@view.rot_y = 90}
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
def
|
|
32
|
-
assert_raise(ArgumentError) {@view.
|
|
33
|
-
assert_nothing_raised {@view.
|
|
31
|
+
def test_h_percent
|
|
32
|
+
assert_raise(ArgumentError) {@view.h_percent = "bob"}
|
|
33
|
+
assert_nothing_raised {@view.h_percent = "500%"}
|
|
34
34
|
end
|
|
35
35
|
|
|
36
|
-
def
|
|
37
|
-
assert_raise(ArgumentError) {@view.
|
|
38
|
-
assert_nothing_raised {@view.
|
|
36
|
+
def test_depth_percent
|
|
37
|
+
assert_raise(ArgumentError) {@view.depth_percent = "bob"}
|
|
38
|
+
assert_nothing_raised {@view.depth_percent = "20%"}
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestVmlDrawing < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
p = Axlsx::Package.new
|
|
7
|
+
wb = p.workbook
|
|
8
|
+
@ws = wb.add_worksheet
|
|
9
|
+
@ws.add_comment :ref => 'A1', :text => 'penut machine', :author => 'crank'
|
|
10
|
+
@ws.add_comment :ref => 'C3', :text => 'rust bucket', :author => 'PO'
|
|
11
|
+
@vml_drawing = @ws.comments.vml_drawing
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_initialize
|
|
15
|
+
assert_raise(ArgumentError) { Axlsx::VmlDrawing.new }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_to_xml_string
|
|
19
|
+
str = @vml_drawing.to_xml_string()
|
|
20
|
+
doc = Nokogiri::XML(str)
|
|
21
|
+
assert_equal(doc.xpath("//v:shape").size, 2)
|
|
22
|
+
assert(doc.xpath("//o:idmap[@o:data='#{@ws.index+1}']"))
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
end
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
require 'tc_helper.rb'
|
|
2
|
+
|
|
3
|
+
class TestVmlShape < Test::Unit::TestCase
|
|
4
|
+
|
|
5
|
+
def setup
|
|
6
|
+
p = Axlsx::Package.new
|
|
7
|
+
wb = p.workbook
|
|
8
|
+
@ws = wb.add_worksheet
|
|
9
|
+
@ws.add_comment :ref => 'A1', :text => 'penut machine', :author => 'crank'
|
|
10
|
+
@ws.add_comment :ref => 'C3', :text => 'rust bucket', :author => 'PO'
|
|
11
|
+
@comments = @ws.comments
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def test_initialize
|
|
15
|
+
assert_raise(ArgumentError) { Axlsx::VmlDrawing.new }
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def test_row
|
|
19
|
+
shape = @comments.first.vml_shape
|
|
20
|
+
assert_equal(shape.row, 0)
|
|
21
|
+
shape = @comments.last.vml_shape
|
|
22
|
+
assert_equal(shape.row, 2)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
def test_column
|
|
26
|
+
shape = @comments.first.vml_shape
|
|
27
|
+
assert_equal(shape.column, 0)
|
|
28
|
+
shape = @comments.last.vml_shape
|
|
29
|
+
assert_equal(shape.column, 2)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def test_left_column
|
|
33
|
+
shape = @comments.first.vml_shape
|
|
34
|
+
shape.left_column = 3
|
|
35
|
+
assert(shape.left_column == 3)
|
|
36
|
+
assert_raise(ArgumentError) { shape.left_column = [] }
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def test_left_offset
|
|
40
|
+
shape = @comments.first.vml_shape
|
|
41
|
+
shape.left_offset = 3
|
|
42
|
+
assert(shape.left_offset == 3)
|
|
43
|
+
assert_raise(ArgumentError) { shape.left_offset = [] }
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def test_right_column
|
|
47
|
+
shape = @comments.first.vml_shape
|
|
48
|
+
shape.right_column = 3
|
|
49
|
+
assert(shape.right_column == 3)
|
|
50
|
+
assert_raise(ArgumentError) { shape.right_column = [] }
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
def test_right_offset
|
|
54
|
+
shape = @comments.first.vml_shape
|
|
55
|
+
shape.right_offset = 3
|
|
56
|
+
assert(shape.right_offset == 3)
|
|
57
|
+
assert_raise(ArgumentError) { shape.right_offset = [] }
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
def test_top_offset
|
|
61
|
+
shape = @comments.first.vml_shape
|
|
62
|
+
shape.top_offset = 3
|
|
63
|
+
assert(shape.top_offset == 3)
|
|
64
|
+
assert_raise(ArgumentError) { shape.top_offset = [] }
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def test_bottom_offset
|
|
68
|
+
shape = @comments.first.vml_shape
|
|
69
|
+
shape.bottom_offset = 3
|
|
70
|
+
assert(shape.bottom_offset == 3)
|
|
71
|
+
assert_raise(ArgumentError) { shape.bottom_offset = [] }
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def test_bottom_row
|
|
75
|
+
shape = @comments.first.vml_shape
|
|
76
|
+
shape.bottom_row = 3
|
|
77
|
+
assert(shape.bottom_row == 3)
|
|
78
|
+
assert_raise(ArgumentError) { shape.bottom_row = [] }
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def test_top_row
|
|
82
|
+
shape = @comments.first.vml_shape
|
|
83
|
+
shape.top_row = 3
|
|
84
|
+
assert(shape.top_row == 3)
|
|
85
|
+
assert_raise(ArgumentError) { shape.top_row = [] }
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
def test_to_xml_string
|
|
89
|
+
str = @comments.vml_drawing.to_xml_string()
|
|
90
|
+
doc = Nokogiri::XML(str)
|
|
91
|
+
assert_equal(doc.xpath("//v:shape").size, 2)
|
|
92
|
+
@comments.each do |comment|
|
|
93
|
+
shape = comment.vml_shape
|
|
94
|
+
assert(doc.xpath("//v:shape/x:ClientData/x:Row[text()='#{shape.row}']").size == 1)
|
|
95
|
+
assert(doc.xpath("//v:shape/x:ClientData/x:Column[text()='#{shape.column}']").size == 1)
|
|
96
|
+
assert(doc.xpath("//v:shape/x:ClientData/x:Anchor[text()='#{shape.left_column}, #{shape.left_offset}, #{shape.top_row}, #{shape.top_offset}, #{shape.right_column}, #{shape.right_offset}, #{shape.bottom_row}, #{shape.bottom_offset}']").size == 1)
|
|
97
|
+
end
|
|
98
|
+
end
|
|
99
|
+
|
|
100
|
+
end
|
|
@@ -10,6 +10,7 @@ class TestRelationships < Test::Unit::TestCase
|
|
|
10
10
|
def test_type
|
|
11
11
|
assert_raise(ArgumentError) { Axlsx::Relationship.new 'type', 'target' }
|
|
12
12
|
assert_nothing_raised { Axlsx::Relationship.new Axlsx::WORKSHEET_R, 'target' }
|
|
13
|
+
assert_nothing_raised { Axlsx::Relationship.new Axlsx::COMMENT_R, 'target' }
|
|
13
14
|
end
|
|
14
15
|
|
|
15
16
|
def test_target_mode
|
|
@@ -61,4 +61,12 @@ class TestGradientFill < Test::Unit::TestCase
|
|
|
61
61
|
assert(@item.stop.size == 1)
|
|
62
62
|
assert(@item.stop.last.is_a?(Axlsx::GradientStop))
|
|
63
63
|
end
|
|
64
|
+
|
|
65
|
+
def test_to_xml_string
|
|
66
|
+
@item.stop << Axlsx::GradientStop.new(Axlsx::Color.new(:rgb => "000000"), 0.5)
|
|
67
|
+
@item.stop << Axlsx::GradientStop.new(Axlsx::Color.new(:rgb => "FFFFFF"), 0.5)
|
|
68
|
+
@item.type = :path
|
|
69
|
+
doc = Nokogiri::XML(@item.to_xml_string)
|
|
70
|
+
assert(doc.xpath("//color[@rgb='FF000000']"))
|
|
71
|
+
end
|
|
64
72
|
end
|
|
@@ -33,5 +33,11 @@ class TestPatternFill < Test::Unit::TestCase
|
|
|
33
33
|
assert_nothing_raised { @item.patternType = :lightUp }
|
|
34
34
|
assert_equal(@item.patternType, :lightUp)
|
|
35
35
|
end
|
|
36
|
-
|
|
36
|
+
|
|
37
|
+
def test_to_xml_string
|
|
38
|
+
@item = Axlsx::PatternFill.new :bgColor => Axlsx::Color.new(:rgb => "FF0000"), :fgColor => Axlsx::Color.new(:rgb=>"00FF00")
|
|
39
|
+
doc = Nokogiri::XML(@item.to_xml_string)
|
|
40
|
+
assert(doc.xpath('//color[@rgb="FFFF0000"]'))
|
|
41
|
+
assert(doc.xpath('//color[@rgb="FF00FF00"]'))
|
|
42
|
+
end
|
|
37
43
|
end
|
|
@@ -19,7 +19,7 @@ class TestStyles < Test::Unit::TestCase
|
|
|
19
19
|
end
|
|
20
20
|
def test_add_style_border_hash
|
|
21
21
|
border_count = @styles.borders.size
|
|
22
|
-
|
|
22
|
+
@styles.add_style :border => {:style => :thin, :color => "FFFF0000"}
|
|
23
23
|
assert_equal(@styles.borders.size, border_count + 1)
|
|
24
24
|
assert_equal(@styles.borders.last.prs.last.color.rgb, "FFFF0000")
|
|
25
25
|
assert_raise(ArgumentError) { @styles.add_style :border => {:color => "FFFF0000"} }
|
|
@@ -27,7 +27,7 @@ class TestStyles < Test::Unit::TestCase
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def test_add_style_border_edges
|
|
30
|
-
|
|
30
|
+
@styles.add_style :border => { :style => :thin, :color => "0000FFFF", :edges => [:top, :bottom] }
|
|
31
31
|
parts = @styles.borders.last.prs
|
|
32
32
|
parts.each { |pr| assert_equal(pr.color.rgb, "0000FFFF", "Style is applied to #{pr.name} properly") }
|
|
33
33
|
assert((parts.map { |pr| pr.name.to_s }.sort && ['bottom', 'top']).size == 2, "specify two edges, and you get two border prs")
|
|
@@ -44,7 +44,6 @@ class TestStyles < Test::Unit::TestCase
|
|
|
44
44
|
def test_parse_num_fmt
|
|
45
45
|
f_code = {:format_code => "YYYY/MM"}
|
|
46
46
|
num_fmt = {:num_fmt => 5}
|
|
47
|
-
both = { :format_code => "#000", :num_fmt => 0 }
|
|
48
47
|
assert_equal(@styles.parse_num_fmt_options, nil, 'noop if neither :format_code or :num_fmt exist')
|
|
49
48
|
max = @styles.numFmts.map{ |nf| nf.numFmtId }.max
|
|
50
49
|
@styles.parse_num_fmt_options(f_code)
|
|
@@ -181,7 +180,7 @@ class TestStyles < Test::Unit::TestCase
|
|
|
181
180
|
|
|
182
181
|
def test_basic_add_style_dxf
|
|
183
182
|
border_count = @styles.borders.size
|
|
184
|
-
|
|
183
|
+
@styles.add_style :border => {:style => :thin, :color => "FFFF0000"}, :type => :dxf
|
|
185
184
|
assert_equal(@styles.borders.size, border_count, "styles borders not affected")
|
|
186
185
|
assert_equal(@styles.dxfs.last.border.prs.last.color.rgb, "FFFF0000")
|
|
187
186
|
assert_raise(ArgumentError) { @styles.add_style :border => {:color => "FFFF0000"}, :type => :dxf }
|
|
@@ -13,6 +13,10 @@ class TestTableStyle < Test::Unit::TestCase
|
|
|
13
13
|
assert_equal(@item.name, "fisher")
|
|
14
14
|
assert_equal(@item.pivot, nil)
|
|
15
15
|
assert_equal(@item.table, nil)
|
|
16
|
+
ts = Axlsx::TableStyle.new 'price', :pivot => true, :table => true
|
|
17
|
+
assert_equal(ts.name, 'price')
|
|
18
|
+
assert_equal(ts.pivot, true)
|
|
19
|
+
assert_equal(ts.table, true)
|
|
16
20
|
end
|
|
17
21
|
|
|
18
22
|
def test_name
|
|
@@ -33,4 +37,8 @@ class TestTableStyle < Test::Unit::TestCase
|
|
|
33
37
|
assert_equal(@item.table, true)
|
|
34
38
|
end
|
|
35
39
|
|
|
40
|
+
def test_to_xml_string
|
|
41
|
+
doc = Nokogiri::XML(@item.to_xml_string)
|
|
42
|
+
assert(doc.xpath("//tableStyle[@name='#{@item.name}']"))
|
|
43
|
+
end
|
|
36
44
|
end
|
|
@@ -13,6 +13,10 @@ class TestTableStyleElement < Test::Unit::TestCase
|
|
|
13
13
|
assert_equal(@item.type, nil)
|
|
14
14
|
assert_equal(@item.size, nil)
|
|
15
15
|
assert_equal(@item.dxfId, nil)
|
|
16
|
+
options = { :type => :headerRow, :size => 10, :dxfId => 1 }
|
|
17
|
+
|
|
18
|
+
tse = Axlsx::TableStyleElement.new options
|
|
19
|
+
options.each { |key, value| assert_equal(tse.send(key.to_sym), value) }
|
|
16
20
|
end
|
|
17
21
|
|
|
18
22
|
def test_type
|
|
@@ -32,5 +36,10 @@ class TestTableStyleElement < Test::Unit::TestCase
|
|
|
32
36
|
assert_nothing_raised { @item.dxfId = 7 }
|
|
33
37
|
assert_equal(@item.dxfId, 7)
|
|
34
38
|
end
|
|
35
|
-
|
|
39
|
+
|
|
40
|
+
def test_to_xml_string
|
|
41
|
+
doc = Nokogiri::XML(@item.to_xml_string)
|
|
42
|
+
@item.type = :headerRow
|
|
43
|
+
assert(doc.xpath("//tableStyleElement[@type='#{@item.type.to_s}']"))
|
|
44
|
+
end
|
|
36
45
|
end
|
data/test/tc_helper.rb
CHANGED
data/test/tc_package.rb
CHANGED
|
@@ -1,13 +1,78 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
1
2
|
require 'tc_helper.rb'
|
|
2
3
|
|
|
3
4
|
class TestPackage < Test::Unit::TestCase
|
|
4
5
|
def setup
|
|
5
6
|
@package = Axlsx::Package.new
|
|
6
7
|
ws = @package.workbook.add_worksheet
|
|
7
|
-
|
|
8
|
-
|
|
8
|
+
ws.add_row ['Can', 'we', 'build it?']
|
|
9
|
+
ws.add_row ['Yes!', 'We', 'can!']
|
|
10
|
+
ws.workbook.add_defined_name("#{ws.name}!A1:C2", :name => '_xlnm.Print_Titles', :hidden => true)
|
|
11
|
+
ws.protect_range('A1:C1')
|
|
12
|
+
ws.protect_range(ws.rows.last.cells)
|
|
13
|
+
ws.add_comment :author => 'alice', :text => 'Hi Bob', :ref => 'A12'
|
|
14
|
+
ws.add_comment :author => 'bob', :text => 'Hi Alice', :ref => 'F19'
|
|
15
|
+
ws.sheet_view do |vs|
|
|
16
|
+
vs.pane do |p|
|
|
17
|
+
p.active_pane = :top_right
|
|
18
|
+
p.state = :split
|
|
19
|
+
p.x_split = 11080
|
|
20
|
+
p.y_split = 5000
|
|
21
|
+
p.top_left_cell = 'C44'
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
vs.add_selection(:top_left, { :active_cell => 'A2', :sqref => 'A2' })
|
|
25
|
+
vs.add_selection(:top_right, { :active_cell => 'I10', :sqref => 'I10' })
|
|
26
|
+
vs.add_selection(:bottom_left, { :active_cell => 'E55', :sqref => 'E55' })
|
|
27
|
+
vs.add_selection(:bottom_right, { :active_cell => 'I57', :sqref => 'I57' })
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
ws.add_chart(Axlsx::Pie3DChart, :title => "これは?", :start_at => [0,3]) do |chart|
|
|
31
|
+
chart.add_series :data=>[1,2,3], :labels=>["a", "b", "c"]
|
|
32
|
+
chart.d_lbls.show_val = true
|
|
33
|
+
chart.d_lbls.d_lbl_pos = :outEnd
|
|
34
|
+
chart.d_lbls.show_percent = true
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
ws.add_chart(Axlsx::Line3DChart, :title => "axis labels") do |chart|
|
|
38
|
+
chart.valAxis.title = 'bob'
|
|
39
|
+
chart.d_lbls.show_val = true
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
ws.add_chart(Axlsx::Bar3DChart, :title => 'bar chart') do |chart|
|
|
43
|
+
chart.add_series :data => [1,4,5], :labels => %w(A B C)
|
|
44
|
+
chart.d_lbls.show_percent = true
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
ws.add_chart(Axlsx::ScatterChart, :title => 'scat man') do |chart|
|
|
48
|
+
chart.add_series :xData => [1,2,3,4], :yData => [4,3,2,1]
|
|
49
|
+
chart.d_lbls.show_val = true
|
|
50
|
+
end
|
|
51
|
+
|
|
9
52
|
@fname = 'axlsx_test_serialization.xlsx'
|
|
53
|
+
img = File.expand_path('../../examples/image1.jpeg', __FILE__)
|
|
54
|
+
ws.add_image(:image_src => img, :noSelect => true, :noMove => true, :hyperlink=>"http://axlsx.blogspot.com") do |image|
|
|
55
|
+
image.width=720
|
|
56
|
+
image.height=666
|
|
57
|
+
image.hyperlink.tooltip = "Labeled Link"
|
|
58
|
+
image.start_at 5, 5
|
|
59
|
+
end
|
|
60
|
+
ws.add_image :image_src => File.expand_path('../../examples/image1.gif', __FILE__) do |image|
|
|
61
|
+
image.start_at 0, 20
|
|
62
|
+
image.width=360
|
|
63
|
+
image.height=333
|
|
64
|
+
end
|
|
65
|
+
ws.add_image :image_src => File.expand_path('../../examples/image1.png', __FILE__) do |image|
|
|
66
|
+
image.start_at 9, 20
|
|
67
|
+
image.width = 180
|
|
68
|
+
image.height = 167
|
|
69
|
+
end
|
|
70
|
+
ws.add_table 'A1:C1'
|
|
71
|
+
end
|
|
10
72
|
|
|
73
|
+
def test_use_autowidth
|
|
74
|
+
@package.use_autowidth = false
|
|
75
|
+
assert(@package.workbook.use_autowidth == false)
|
|
11
76
|
end
|
|
12
77
|
|
|
13
78
|
def test_core_accessor
|
|
@@ -35,30 +100,26 @@ class TestPackage < Test::Unit::TestCase
|
|
|
35
100
|
end
|
|
36
101
|
|
|
37
102
|
def test_serialization
|
|
38
|
-
fname = 'axlsx_test_serialization.xlsx'
|
|
39
103
|
assert_nothing_raised do
|
|
40
104
|
begin
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
105
|
+
@package.serialize(@fname)
|
|
106
|
+
zf = Zip::ZipFile.open(@fname)
|
|
107
|
+
@package.send(:parts).each{ |part| zf.get_entry(part[:entry]) }
|
|
108
|
+
File.delete(@fname)
|
|
45
109
|
rescue Errno::EACCES
|
|
46
|
-
|
|
110
|
+
puts "WARNING:: test_serialization requires write access."
|
|
47
111
|
end
|
|
48
|
-
|
|
49
|
-
|
|
112
|
+
end
|
|
113
|
+
end
|
|
50
114
|
|
|
51
115
|
def test_validation
|
|
52
116
|
assert_equal(@package.validate.size, 0, @package.validate)
|
|
53
|
-
|
|
117
|
+
Axlsx::Workbook.send(:class_variable_set, :@@date1904, 9900)
|
|
118
|
+
assert(@package.validate.size > 0)
|
|
54
119
|
end
|
|
55
120
|
|
|
56
121
|
def test_parts
|
|
57
122
|
p = @package.send(:parts)
|
|
58
|
-
p.each do |part|
|
|
59
|
-
#all parts must have :doc, :entry, :schema
|
|
60
|
-
assert(part.keys.size == 3 && part.keys.reject{ |k| [:doc, :entry, :schema].include? k}.empty?)
|
|
61
|
-
end
|
|
62
123
|
#all parts have an entry
|
|
63
124
|
assert_equal(p.select{ |part| part[:entry] =~ /_rels\/\.rels/ }.size, 1, "rels missing")
|
|
64
125
|
assert_equal(p.select{ |part| part[:entry] =~ /docProps\/core\.xml/ }.size, 1, "core missing")
|
|
@@ -72,9 +133,11 @@ class TestPackage < Test::Unit::TestCase
|
|
|
72
133
|
assert_equal(p.select{ |part| part[:entry] =~ /xl\/charts\/chart\d\.xml/ }.size, @package.workbook.charts.size, "one or more charts missing")
|
|
73
134
|
assert_equal(p.select{ |part| part[:entry] =~ /xl\/worksheets\/sheet\d\.xml/ }.size, @package.workbook.worksheets.size, "one or more sheet missing")
|
|
74
135
|
assert_equal(p.select{ |part| part[:entry] =~ /xl\/worksheets\/_rels\/sheet\d\.xml\.rels/ }.size, @package.workbook.worksheets.size, "one or more sheet rels missing")
|
|
136
|
+
assert_equal(p.select{ |part| part[:entry] =~ /xl\/comments\d\.xml/ }.size, @package.workbook.worksheets.size, "one or more sheet rels missing")
|
|
137
|
+
|
|
75
138
|
|
|
76
139
|
#no mystery parts
|
|
77
|
-
assert_equal(p.size,
|
|
140
|
+
assert_equal(p.size, 21)
|
|
78
141
|
|
|
79
142
|
end
|
|
80
143
|
|
|
@@ -102,11 +165,24 @@ class TestPackage < Test::Unit::TestCase
|
|
|
102
165
|
def test_content_type_added_with_shared_strings
|
|
103
166
|
@package.use_shared_strings = true
|
|
104
167
|
ct = @package.send(:content_types)
|
|
105
|
-
assert(ct.select { |
|
|
168
|
+
assert(ct.select { |type| type.ContentType == Axlsx::SHARED_STRINGS_CT }.size == 1)
|
|
106
169
|
end
|
|
107
170
|
|
|
108
171
|
def test_name_to_indices
|
|
109
172
|
assert(Axlsx::name_to_indices('A1') == [0,0])
|
|
110
173
|
assert(Axlsx::name_to_indices('A100') == [0,99], 'needs to axcept rows that contain 0')
|
|
111
174
|
end
|
|
175
|
+
|
|
176
|
+
def test_to_stream
|
|
177
|
+
stream = @package.to_stream
|
|
178
|
+
assert(stream.is_a?(StringIO))
|
|
179
|
+
# this is just a roundabout guess for a package as it is build now
|
|
180
|
+
# in testing.
|
|
181
|
+
assert(stream.size > 80000)
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def test_encrypt
|
|
185
|
+
# this is no where near close to ready yet
|
|
186
|
+
assert(@package.encrypt('your_mom.xlsxl', 'has a password') == false)
|
|
187
|
+
end
|
|
112
188
|
end
|
|
@@ -61,5 +61,18 @@ class TestSimpleTypedList < Test::Unit::TestCase
|
|
|
61
61
|
assert_nothing_raised { @list.delete 0 }
|
|
62
62
|
assert_nothing_raised { @list.delete 9 }
|
|
63
63
|
end
|
|
64
|
+
|
|
65
|
+
def test_delete
|
|
66
|
+
@list.push 1
|
|
67
|
+
assert(@list.size == 1)
|
|
68
|
+
@list.delete 1
|
|
69
|
+
assert(@list.empty?)
|
|
70
|
+
end
|
|
64
71
|
|
|
72
|
+
def test_equality
|
|
73
|
+
@list.push 1
|
|
74
|
+
@list.push 2
|
|
75
|
+
assert_equal(@list, [1,2])
|
|
76
|
+
|
|
77
|
+
end
|
|
65
78
|
end
|