1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
require 'test/unit'
require 'axlsx.rb'
class TestPackage < Test::Unit::TestCase
def setup
@package = Axlsx::Package.new
ws = @package.workbook.add_worksheet
chart = ws.add_chart Axlsx::Pie3DChart
chart.add_series :data=>[1,2,3], :labels=>["a", "b", "c"]
@fname = 'axlsx_test_serialization.xlsx'
end
def test_core_accessor
assert_equal(@package.core, @package.instance_values["core"])
assert_raise(NoMethodError) {@package.core = nil }
end
def test_app_accessor
assert_equal(@package.app, @package.instance_values["app"])
assert_raise(NoMethodError) {@package.app = nil }
end
def test_default_objects_are_created
assert(@package.instance_values["app"].is_a?(Axlsx::App), 'App object not created')
assert(@package.instance_values["core"].is_a?(Axlsx::Core), 'Core object not created')
assert(@package.workbook.is_a?(Axlsx::Workbook), 'Workbook object not created')
assert(Axlsx::Package.new.workbook.worksheets.size == 0, 'Workbook should not have sheets by default')
end
def test_serialization
fname = 'axlsx_test_serialization.xlsx'
assert_nothing_raised do
begin
z= @package.serialize(@fname)
zf = Zip::ZipFile.open(@fname)
@package.send(:parts).each{ |part| zf.get_entry(part[:entry]) }
File.delete(@fname)
rescue Errno::EACCES
puts "WARNING:: test_serialization requires write access."
end
end
end
def test_validation
assert_equal(@package.validate.size, 0, @package.validate)
#how to test for failure? the internal validations on the models are so strict I cant break anthing.....
end
def test_parts
p = @package.send(:parts)
p.each do |part|
#all parts must have :doc, :entry, :schema
assert(part.keys.size == 3 && part.keys.reject{ |k| [:doc, :entry, :schema].include? k}.empty?)
end
#all parts have an entry
assert_equal(p.select{ |part| part[:entry] =~ /_rels\/\.rels/ }.size, 1, "rels missing")
assert_equal(p.select{ |part| part[:entry] =~ /docProps\/core\.xml/ }.size, 1, "core missing")
assert_equal(p.select{ |part| part[:entry] =~ /docProps\/app\.xml/ }.size, 1, "app missing")
assert_equal(p.select{ |part| part[:entry] =~ /xl\/_rels\/workbook\.xml\.rels/ }.size, 1, "workbook rels missing")
assert_equal(p.select{ |part| part[:entry] =~ /xl\/workbook\.xml/ }.size, 1, "workbook missing")
assert_equal(p.select{ |part| part[:entry] =~ /\[Content_Types\]\.xml/ }.size, 1, "content types missing")
assert_equal(p.select{ |part| part[:entry] =~ /xl\/styles\.xml/ }.size, 1, "styles missin")
assert_equal(p.select{ |part| part[:entry] =~ /xl\/drawings\/_rels\/drawing\d\.xml\.rels/ }.size, @package.workbook.drawings.size, "one or more drawing rels missing")
assert_equal(p.select{ |part| part[:entry] =~ /xl\/drawings\/drawing\d\.xml/ }.size, @package.workbook.drawings.size, "one or more drawings missing")
assert_equal(p.select{ |part| part[:entry] =~ /xl\/charts\/chart\d\.xml/ }.size, @package.workbook.charts.size, "one or more charts missing")
assert_equal(p.select{ |part| part[:entry] =~ /xl\/worksheets\/sheet\d\.xml/ }.size, @package.workbook.worksheets.size, "one or more sheet missing")
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")
#no mystery parts
assert_equal(p.size, 12)
end
def test_workbook_is_a_workbook
assert @package.workbook.is_a? Axlsx::Workbook
end
end
|