axlsx 1.3.6 → 2.0.1
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.
- checksums.yaml +4 -4
- data/.yardopts_guide +19 -0
- data/CHANGELOG.md +8 -0
- data/README.md +54 -79
- data/Rakefile +0 -5
- data/examples/2010_comments.rb +17 -0
- data/examples/anchor_swapping.rb +28 -0
- data/examples/example.rb +16 -1
- data/examples/pivot_table.rb +2 -0
- data/examples/underline.rb +13 -0
- data/lib/axlsx/doc_props/core.rb +6 -1
- data/lib/axlsx/drawing/axes.rb +7 -3
- data/lib/axlsx/drawing/bar_3D_chart.rb +2 -2
- data/lib/axlsx/drawing/chart.rb +20 -4
- data/lib/axlsx/drawing/drawing.rb +2 -17
- data/lib/axlsx/drawing/graphic_frame.rb +3 -8
- data/lib/axlsx/drawing/hyperlink.rb +5 -12
- data/lib/axlsx/drawing/marker.rb +25 -5
- data/lib/axlsx/drawing/one_cell_anchor.rb +9 -0
- data/lib/axlsx/drawing/pic.rb +17 -23
- data/lib/axlsx/drawing/two_cell_anchor.rb +7 -27
- data/lib/axlsx/package.rb +36 -16
- data/lib/axlsx/rels/relationship.rb +73 -8
- data/lib/axlsx/rels/relationships.rb +8 -1
- data/lib/axlsx/stylesheet/color.rb +1 -1
- data/lib/axlsx/stylesheet/num_fmt.rb +2 -2
- data/lib/axlsx/stylesheet/styles.rb +5 -3
- data/lib/axlsx/util/serialized_attributes.rb +11 -8
- data/lib/axlsx/util/simple_typed_list.rb +34 -13
- data/lib/axlsx/util/validators.rb +7 -0
- data/lib/axlsx/version.rb +1 -1
- data/lib/axlsx/workbook/defined_name.rb +1 -1
- data/lib/axlsx/workbook/shared_strings_table.rb +12 -3
- data/lib/axlsx/workbook/workbook.rb +31 -8
- data/lib/axlsx/workbook/worksheet/break.rb +37 -0
- data/lib/axlsx/workbook/worksheet/cell.rb +5 -5
- data/lib/axlsx/workbook/worksheet/cell_serializer.rb +1 -1
- data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -0
- data/lib/axlsx/workbook/worksheet/comment.rb +6 -5
- data/lib/axlsx/workbook/worksheet/comments.rb +3 -3
- data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +1 -1
- data/lib/axlsx/workbook/worksheet/date_time_converter.rb +6 -5
- data/lib/axlsx/workbook/worksheet/pivot_table.rb +32 -18
- data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +4 -3
- data/lib/axlsx/workbook/worksheet/pivot_tables.rb +1 -1
- data/lib/axlsx/workbook/worksheet/row.rb +1 -1
- data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -0
- data/lib/axlsx/workbook/worksheet/table.rb +3 -2
- data/lib/axlsx/workbook/worksheet/tables.rb +1 -1
- data/lib/axlsx/workbook/worksheet/worksheet.rb +61 -26
- data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +6 -5
- data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +3 -9
- data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +5 -10
- data/lib/axlsx.rb +10 -2
- data/lib/schema/sml.xsd +4 -0
- data/test/axlsx.qcachegrind +2226 -0
- data/test/doc_props/tc_core.rb +7 -0
- data/test/drawing/tc_axes.rb +8 -0
- data/test/drawing/tc_bar_3D_chart.rb +6 -0
- data/test/drawing/tc_chart.rb +13 -0
- data/test/drawing/tc_drawing.rb +0 -5
- data/test/drawing/tc_graphic_frame.rb +4 -7
- data/test/drawing/tc_hyperlink.rb +0 -4
- data/test/drawing/tc_pic.rb +14 -3
- data/test/drawing/tc_two_cell_anchor.rb +3 -3
- data/test/profile.rb +7 -3
- data/test/rels/tc_relationship.rb +29 -11
- data/test/rels/tc_relationships.rb +12 -1
- data/test/stylesheet/tc_color.rb +6 -0
- data/test/stylesheet/tc_styles.rb +2 -2
- data/test/tc_helper.rb +1 -0
- data/test/tc_package.rb +31 -1
- data/test/util/tc_serialized_attributes.rb +19 -0
- data/test/workbook/tc_shared_strings_table.rb +6 -0
- data/test/workbook/tc_workbook.rb +23 -1
- data/test/workbook/worksheet/tc_break.rb +49 -0
- data/test/workbook/worksheet/tc_comment.rb +17 -6
- data/test/workbook/worksheet/tc_conditional_formatting.rb +2 -2
- data/test/workbook/worksheet/tc_date_time_converter.rb +3 -11
- data/test/workbook/worksheet/tc_pivot_table.rb +40 -22
- data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +9 -1
- data/test/workbook/worksheet/tc_sheet_view.rb +39 -39
- data/test/workbook/worksheet/tc_table.rb +2 -2
- data/test/workbook/worksheet/tc_worksheet.rb +39 -7
- data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +2 -11
- metadata +39 -11
- data/test/example.xlsx +0 -0
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
require 'tc_helper.rb'
|
|
2
2
|
|
|
3
|
+
|
|
4
|
+
def shared_test_pivot_table_xml_validity(pivot_table)
|
|
5
|
+
schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
|
|
6
|
+
doc = Nokogiri::XML(pivot_table.to_xml_string)
|
|
7
|
+
errors = []
|
|
8
|
+
schema.validate(doc).each do |error|
|
|
9
|
+
errors.push error
|
|
10
|
+
puts error.message
|
|
11
|
+
end
|
|
12
|
+
assert(errors.empty?, "error free validation")
|
|
13
|
+
end
|
|
14
|
+
|
|
3
15
|
class TestPivotTable < Test::Unit::TestCase
|
|
4
16
|
def setup
|
|
5
17
|
p = Axlsx::Package.new
|
|
@@ -24,8 +36,18 @@ class TestPivotTable < Test::Unit::TestCase
|
|
|
24
36
|
assert_equal(@ws.pivot_tables.last, pivot_table, "must be added to worksheet pivot tables collection")
|
|
25
37
|
end
|
|
26
38
|
|
|
39
|
+
def test_set_pivot_table_data_sheet
|
|
40
|
+
pivot_table = @ws.add_pivot_table('G5:G6', 'A1:D5')
|
|
41
|
+
data_sheet = @ws.clone
|
|
42
|
+
data_sheet.name = "Pivot Table Data Source"
|
|
43
|
+
|
|
44
|
+
assert_equal(pivot_table.data_sheet.name, @ws.name, "must default to the same sheet the pivot table is added to")
|
|
45
|
+
pivot_table.data_sheet = data_sheet
|
|
46
|
+
assert_equal(pivot_table.data_sheet.name, data_sheet.name, "data sheet assigned to pivot table")
|
|
47
|
+
end
|
|
48
|
+
|
|
27
49
|
def test_add_pivot_table_with_config
|
|
28
|
-
pivot_table = @ws.add_pivot_table('G5:G6', 'A1:
|
|
50
|
+
pivot_table = @ws.add_pivot_table('G5:G6', 'A1:E5') do |pt|
|
|
29
51
|
pt.rows = ['Year', 'Month']
|
|
30
52
|
pt.columns = ['Type']
|
|
31
53
|
pt.data = ['Sales']
|
|
@@ -33,8 +55,16 @@ class TestPivotTable < Test::Unit::TestCase
|
|
|
33
55
|
end
|
|
34
56
|
assert_equal(['Year', 'Month'], pivot_table.rows)
|
|
35
57
|
assert_equal(['Type'], pivot_table.columns)
|
|
36
|
-
assert_equal([
|
|
58
|
+
assert_equal([{:ref=>"Sales"}], pivot_table.data)
|
|
37
59
|
assert_equal(['Region'], pivot_table.pages)
|
|
60
|
+
shared_test_pivot_table_xml_validity(pivot_table)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def test_add_pivot_table_with_options_on_data_field
|
|
64
|
+
pivot_table = @ws.add_pivot_table('G5:G6', 'A1:D5') do |pt|
|
|
65
|
+
pt.data = [{:ref=>"Sales", :subtotal => 'average'}]
|
|
66
|
+
end
|
|
67
|
+
assert_equal([{:ref=>"Sales", :subtotal => 'average'}], pivot_table.data)
|
|
38
68
|
end
|
|
39
69
|
|
|
40
70
|
def test_header_indices
|
|
@@ -53,11 +83,6 @@ class TestPivotTable < Test::Unit::TestCase
|
|
|
53
83
|
assert_equal(@ws.pivot_tables.first.pn, "pivotTables/pivotTable1.xml")
|
|
54
84
|
end
|
|
55
85
|
|
|
56
|
-
def test_rId
|
|
57
|
-
@ws.add_pivot_table('G5:G6', 'A1:D5')
|
|
58
|
-
assert_equal(@ws.pivot_tables.first.rId, "rId1")
|
|
59
|
-
end
|
|
60
|
-
|
|
61
86
|
def test_index
|
|
62
87
|
@ws.add_pivot_table('G5:G6', 'A1:D5')
|
|
63
88
|
assert_equal(@ws.pivot_tables.first.index, @ws.workbook.pivot_tables.index(@ws.pivot_tables.first))
|
|
@@ -73,14 +98,7 @@ class TestPivotTable < Test::Unit::TestCase
|
|
|
73
98
|
|
|
74
99
|
def test_to_xml_string
|
|
75
100
|
pivot_table = @ws.add_pivot_table('G5:G6', 'A1:D5')
|
|
76
|
-
|
|
77
|
-
doc = Nokogiri::XML(pivot_table.to_xml_string)
|
|
78
|
-
errors = []
|
|
79
|
-
schema.validate(doc).each do |error|
|
|
80
|
-
errors.push error
|
|
81
|
-
puts error.message
|
|
82
|
-
end
|
|
83
|
-
assert(errors.empty?, "error free validation")
|
|
101
|
+
shared_test_pivot_table_xml_validity(pivot_table)
|
|
84
102
|
end
|
|
85
103
|
|
|
86
104
|
def test_to_xml_string_with_configuration
|
|
@@ -90,13 +108,13 @@ class TestPivotTable < Test::Unit::TestCase
|
|
|
90
108
|
pt.data = ['Sales']
|
|
91
109
|
pt.pages = ['Region']
|
|
92
110
|
end
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
111
|
+
shared_test_pivot_table_xml_validity(pivot_table)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
def test_to_xml_string_with_options_on_data_field
|
|
115
|
+
pivot_table = @ws.add_pivot_table('G5:G6', 'A1:E5') do |pt|
|
|
116
|
+
pt.data = [{:ref=>"Sales", :subtotal => 'average'}]
|
|
99
117
|
end
|
|
100
|
-
|
|
118
|
+
shared_test_pivot_table_xml_validity(pivot_table)
|
|
101
119
|
end
|
|
102
120
|
end
|
|
@@ -21,7 +21,7 @@ class TestPivotTableCacheDefinition < Test::Unit::TestCase
|
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def test_rId
|
|
24
|
-
assert_equal(
|
|
24
|
+
assert_equal @pivot_table.relationships.for(@cache_definition).Id, @cache_definition.rId
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def test_index
|
|
@@ -32,6 +32,14 @@ class TestPivotTableCacheDefinition < Test::Unit::TestCase
|
|
|
32
32
|
assert_equal(1, @cache_definition.cache_id)
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
+
def test_data_sheet
|
|
36
|
+
data_sheet = @ws.clone
|
|
37
|
+
data_sheet.name = "Pivot Table Data Source"
|
|
38
|
+
@pivot_table.data_sheet = data_sheet
|
|
39
|
+
|
|
40
|
+
assert(@cache_definition.to_xml_string.include?(data_sheet.name), "must set the data source correctly")
|
|
41
|
+
end
|
|
42
|
+
|
|
35
43
|
def test_to_xml_string
|
|
36
44
|
schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
|
|
37
45
|
doc = Nokogiri::XML(@cache_definition.to_xml_string)
|
|
@@ -5,207 +5,207 @@ require 'tc_helper.rb'
|
|
|
5
5
|
class TestSheetView < Test::Unit::TestCase
|
|
6
6
|
def setup
|
|
7
7
|
#inverse defaults for booleans
|
|
8
|
-
@boolean_options = { :right_to_left => true, :show_formulas => true, :show_outline_symbols => true,
|
|
8
|
+
@boolean_options = { :right_to_left => true, :show_formulas => true, :show_outline_symbols => true,
|
|
9
9
|
:show_white_space => true, :tab_selected => true, :default_grid_color => false, :show_grid_lines => false,
|
|
10
10
|
:show_row_col_headers => false, :show_ruler => false, :show_zeros => false, :window_protection => true }
|
|
11
11
|
@symbol_options = { :view => :page_break_preview }
|
|
12
12
|
@nil_options = { :color_id => 2, :top_left_cell => 'A2' }
|
|
13
13
|
@int_0 = { :zoom_scale_normal => 100, :zoom_scale_page_layout_view => 100, :zoom_scale_sheet_layout_view => 100, :workbook_view_id => 2 }
|
|
14
14
|
@int_100 = { :zoom_scale => 10 }
|
|
15
|
-
|
|
15
|
+
|
|
16
16
|
@integer_options = { :color_id => 2, :workbook_view_id => 2 }.merge(@int_0).merge(@int_100)
|
|
17
17
|
@string_options = { :top_left_cell => 'A2' }
|
|
18
|
-
|
|
19
|
-
|
|
18
|
+
|
|
19
|
+
|
|
20
20
|
@options = @boolean_options.merge(@boolean_options).merge(@symbol_options).merge(@nil_options).merge(@int_0).merge(@int_100)
|
|
21
|
-
|
|
21
|
+
|
|
22
22
|
@sv = Axlsx::SheetView.new(@options)
|
|
23
23
|
end
|
|
24
|
-
|
|
24
|
+
|
|
25
25
|
def test_initialize
|
|
26
26
|
sv = Axlsx::SheetView.new
|
|
27
|
-
|
|
27
|
+
|
|
28
28
|
@boolean_options.each do |key, value|
|
|
29
29
|
assert_equal(!value, sv.send(key.to_sym), "initialized default #{key} should be #{!value}")
|
|
30
30
|
assert_equal(value, @sv.send(key.to_sym), "initialized options #{key} should be #{value}")
|
|
31
31
|
end
|
|
32
|
-
|
|
32
|
+
|
|
33
33
|
@nil_options.each do |key, value|
|
|
34
34
|
assert_equal(nil, sv.send(key.to_sym), "initialized default #{key} should be nil")
|
|
35
35
|
assert_equal(value, @sv.send(key.to_sym), "initialized options #{key} should be #{value}")
|
|
36
36
|
end
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
@int_0.each do |key, value|
|
|
39
39
|
assert_equal(0, sv.send(key.to_sym), "initialized default #{key} should be 0")
|
|
40
40
|
assert_equal(value, @sv.send(key.to_sym), "initialized options #{key} should be #{value}")
|
|
41
41
|
end
|
|
42
|
-
|
|
42
|
+
|
|
43
43
|
@int_100.each do |key, value|
|
|
44
44
|
assert_equal(100, sv.send(key.to_sym), "initialized default #{key} should be 100")
|
|
45
45
|
assert_equal(value, @sv.send(key.to_sym), "initialized options #{key} should be #{value}")
|
|
46
46
|
end
|
|
47
47
|
end
|
|
48
|
-
|
|
48
|
+
|
|
49
49
|
def test_boolean_attribute_validation
|
|
50
50
|
@boolean_options.each do |key, value|
|
|
51
51
|
assert_raise(ArgumentError, "#{key} must be boolean") { @sv.send("#{key}=".to_sym, 'A') }
|
|
52
52
|
assert_nothing_raised { @sv.send("#{key}=".to_sym, true) }
|
|
53
53
|
end
|
|
54
54
|
end
|
|
55
|
-
|
|
55
|
+
|
|
56
56
|
def test_string_attribute_validation
|
|
57
57
|
@string_options.each do |key, value|
|
|
58
58
|
assert_raise(ArgumentError, "#{key} must be string") { @sv.send("#{key}=".to_sym, :symbol) }
|
|
59
59
|
assert_nothing_raised { @sv.send("#{key}=".to_sym, "foo") }
|
|
60
60
|
end
|
|
61
61
|
end
|
|
62
|
-
|
|
62
|
+
|
|
63
63
|
def test_symbol_attribute_validation
|
|
64
64
|
@symbol_options.each do |key, value|
|
|
65
65
|
assert_raise(ArgumentError, "#{key} must be symbol") { @sv.send("#{key}=".to_sym, "foo") }
|
|
66
66
|
assert_nothing_raised { @sv.send("#{key}=".to_sym, value) }
|
|
67
67
|
end
|
|
68
68
|
end
|
|
69
|
-
|
|
69
|
+
|
|
70
70
|
def test_integer_attribute_validation
|
|
71
71
|
@integer_options.each do |key, value|
|
|
72
72
|
assert_raise(ArgumentError, "#{key} must be integer") { @sv.send("#{key}=".to_sym, "foo") }
|
|
73
73
|
assert_nothing_raised { @sv.send("#{key}=".to_sym, value) }
|
|
74
74
|
end
|
|
75
75
|
end
|
|
76
|
-
|
|
76
|
+
|
|
77
77
|
def test_color_id
|
|
78
78
|
assert_raise(ArgumentError) { @sv.color_id = "10" }
|
|
79
79
|
assert_nothing_raised { @sv.color_id = 2 }
|
|
80
80
|
assert_equal(@sv.color_id, 2)
|
|
81
81
|
end
|
|
82
|
-
|
|
82
|
+
|
|
83
83
|
def test_default_grid_color
|
|
84
84
|
assert_raise(ArgumentError) { @sv.default_grid_color = "foo" }
|
|
85
85
|
assert_nothing_raised { @sv.default_grid_color = false }
|
|
86
86
|
assert_equal(@sv.default_grid_color, false)
|
|
87
87
|
end
|
|
88
|
-
|
|
88
|
+
|
|
89
89
|
def test_right_to_left
|
|
90
90
|
assert_raise(ArgumentError) { @sv.right_to_left = "foo´" }
|
|
91
91
|
assert_nothing_raised { @sv.right_to_left = true }
|
|
92
92
|
assert_equal(@sv.right_to_left, true)
|
|
93
93
|
end
|
|
94
|
-
|
|
94
|
+
|
|
95
95
|
def test_show_formulas
|
|
96
96
|
assert_raise(ArgumentError) { @sv.show_formulas = 'foo' }
|
|
97
97
|
assert_nothing_raised { @sv.show_formulas = false }
|
|
98
98
|
assert_equal(@sv.show_formulas, false)
|
|
99
99
|
end
|
|
100
|
-
|
|
100
|
+
|
|
101
101
|
def test_show_grid_lines
|
|
102
102
|
assert_raise(ArgumentError) { @sv.show_grid_lines = "foo" }
|
|
103
103
|
assert_nothing_raised { @sv.show_grid_lines = false }
|
|
104
104
|
assert_equal(@sv.show_grid_lines, false)
|
|
105
105
|
end
|
|
106
|
-
|
|
106
|
+
|
|
107
107
|
def test_show_outline_symbols
|
|
108
108
|
assert_raise(ArgumentError) { @sv.show_outline_symbols = 'foo' }
|
|
109
109
|
assert_nothing_raised { @sv.show_outline_symbols = false }
|
|
110
110
|
assert_equal(@sv.show_outline_symbols, false)
|
|
111
111
|
end
|
|
112
|
-
|
|
112
|
+
|
|
113
113
|
def test_show_row_col_headers
|
|
114
114
|
assert_raise(ArgumentError) { @sv.show_row_col_headers = "foo" }
|
|
115
115
|
assert_nothing_raised { @sv.show_row_col_headers = false }
|
|
116
116
|
assert_equal(@sv.show_row_col_headers, false)
|
|
117
117
|
end
|
|
118
|
-
|
|
118
|
+
|
|
119
119
|
def test_show_ruler
|
|
120
120
|
assert_raise(ArgumentError) { @sv.show_ruler = 'foo' }
|
|
121
121
|
assert_nothing_raised { @sv.show_ruler = false }
|
|
122
122
|
assert_equal(@sv.show_ruler, false)
|
|
123
123
|
end
|
|
124
|
-
|
|
124
|
+
|
|
125
125
|
def test_show_white_space
|
|
126
126
|
assert_raise(ArgumentError) { @sv.show_white_space = 'foo' }
|
|
127
127
|
assert_nothing_raised { @sv.show_white_space = false }
|
|
128
128
|
assert_equal(@sv.show_white_space, false)
|
|
129
129
|
end
|
|
130
|
-
|
|
130
|
+
|
|
131
131
|
def test_show_zeros
|
|
132
132
|
assert_raise(ArgumentError) { @sv.show_zeros = "foo" }
|
|
133
133
|
assert_nothing_raised { @sv.show_zeros = false }
|
|
134
134
|
assert_equal(@sv.show_zeros, false)
|
|
135
135
|
end
|
|
136
|
-
|
|
136
|
+
|
|
137
137
|
def test_tab_selected
|
|
138
138
|
assert_raise(ArgumentError) { @sv.tab_selected = "foo" }
|
|
139
139
|
assert_nothing_raised { @sv.tab_selected = false }
|
|
140
140
|
assert_equal(@sv.tab_selected, false)
|
|
141
141
|
end
|
|
142
|
-
|
|
142
|
+
|
|
143
143
|
def test_top_left_cell
|
|
144
144
|
assert_raise(ArgumentError) { @sv.top_left_cell = :cell_adress }
|
|
145
145
|
assert_nothing_raised { @sv.top_left_cell = "A2" }
|
|
146
146
|
assert_equal(@sv.top_left_cell, "A2")
|
|
147
147
|
end
|
|
148
|
-
|
|
148
|
+
|
|
149
149
|
def test_view
|
|
150
150
|
assert_raise(ArgumentError) { @sv.view = 'view' }
|
|
151
151
|
assert_nothing_raised { @sv.view = :page_break_preview }
|
|
152
152
|
assert_equal(@sv.view, :page_break_preview)
|
|
153
153
|
end
|
|
154
|
-
|
|
154
|
+
|
|
155
155
|
def test_window_protection
|
|
156
156
|
assert_raise(ArgumentError) { @sv.window_protection = "foo" }
|
|
157
157
|
assert_nothing_raised { @sv.window_protection = false }
|
|
158
158
|
assert_equal(@sv.window_protection, false)
|
|
159
159
|
end
|
|
160
|
-
|
|
160
|
+
|
|
161
161
|
def test_workbook_view_id
|
|
162
162
|
assert_raise(ArgumentError) { @sv.workbook_view_id = "1" }
|
|
163
163
|
assert_nothing_raised { @sv.workbook_view_id = 1 }
|
|
164
164
|
assert_equal(@sv.workbook_view_id, 1)
|
|
165
165
|
end
|
|
166
|
-
|
|
166
|
+
|
|
167
167
|
def test_zoom_scale
|
|
168
168
|
assert_raise(ArgumentError) { @sv.zoom_scale = "50" }
|
|
169
169
|
assert_nothing_raised { @sv.zoom_scale = 50 }
|
|
170
170
|
assert_equal(@sv.zoom_scale, 50)
|
|
171
171
|
end
|
|
172
|
-
|
|
172
|
+
|
|
173
173
|
def test_zoom_scale_normal
|
|
174
174
|
assert_raise(ArgumentError) { @sv.zoom_scale_normal = "50" }
|
|
175
175
|
assert_nothing_raised { @sv.zoom_scale_normal = 50 }
|
|
176
176
|
assert_equal(@sv.zoom_scale_normal, 50)
|
|
177
177
|
end
|
|
178
|
-
|
|
178
|
+
|
|
179
179
|
def test_zoom_scale_page_layout_view
|
|
180
180
|
assert_raise(ArgumentError) { @sv.zoom_scale_page_layout_view = "50" }
|
|
181
181
|
assert_nothing_raised { @sv.zoom_scale_page_layout_view = 50 }
|
|
182
182
|
assert_equal(@sv.zoom_scale_page_layout_view, 50)
|
|
183
183
|
end
|
|
184
|
-
|
|
184
|
+
|
|
185
185
|
def test_zoom_scale_sheet_layout_view
|
|
186
186
|
assert_raise(ArgumentError) { @sv.zoom_scale_sheet_layout_view = "50" }
|
|
187
187
|
assert_nothing_raised { @sv.zoom_scale_sheet_layout_view = 50 }
|
|
188
188
|
assert_equal(@sv.zoom_scale_sheet_layout_view, 50)
|
|
189
189
|
end
|
|
190
|
-
|
|
190
|
+
|
|
191
191
|
def test_to_xml
|
|
192
192
|
p = Axlsx::Package.new
|
|
193
193
|
@ws = p.workbook.add_worksheet :name => "sheetview"
|
|
194
194
|
@ws.sheet_view do |vs|
|
|
195
195
|
vs.view = :page_break_preview
|
|
196
196
|
end
|
|
197
|
-
|
|
197
|
+
|
|
198
198
|
doc = Nokogiri::XML.parse(@ws.sheet_view.to_xml_string)
|
|
199
|
-
|
|
199
|
+
|
|
200
200
|
assert_equal(1, doc.xpath("//sheetView[@tabSelected='false']").size)
|
|
201
|
-
|
|
201
|
+
|
|
202
202
|
assert_equal(1, doc.xpath("//sheetView[@tabSelected='false'][@showWhiteSpace='false'][@showOutlineSymbols='false'][@showFormulas='false']
|
|
203
203
|
[@rightToLeft='false'][@windowProtection='false'][@showZeros='true'][@showRuler='true']
|
|
204
204
|
[@showRowColHeaders='true'][@showGridLines='true'][@defaultGridColor='true']
|
|
205
205
|
[@zoomScale='100'][@workbookViewId='0'][@zoomScaleSheetLayoutView='0'][@zoomScalePageLayoutView='0']
|
|
206
|
-
[@zoomScaleNormal='0'][@view='
|
|
206
|
+
[@zoomScaleNormal='0'][@view='pageBreakPreview']").size)
|
|
207
207
|
end
|
|
208
|
-
|
|
208
|
+
|
|
209
209
|
def test_add_selection
|
|
210
210
|
@sv.add_selection(:top_left, :active_cell => "A1")
|
|
211
211
|
assert_equal('A1', @sv.selections[:top_left].active_cell)
|
|
@@ -36,8 +36,8 @@ class TestTable < Test::Unit::TestCase
|
|
|
36
36
|
end
|
|
37
37
|
|
|
38
38
|
def test_rId
|
|
39
|
-
@ws.add_table("A1:D5")
|
|
40
|
-
assert_equal
|
|
39
|
+
table = @ws.add_table("A1:D5")
|
|
40
|
+
assert_equal @ws.relationships.for(table).Id, table.rId
|
|
41
41
|
end
|
|
42
42
|
|
|
43
43
|
def test_index
|
|
@@ -123,9 +123,7 @@ class TestWorksheet < Test::Unit::TestCase
|
|
|
123
123
|
end
|
|
124
124
|
|
|
125
125
|
def test_rId
|
|
126
|
-
assert_equal(@ws.
|
|
127
|
-
ws = @ws.workbook.add_worksheet
|
|
128
|
-
assert_equal(ws.rId, "rId2")
|
|
126
|
+
assert_equal @ws.workbook.relationships.for(@ws).Id, @ws.rId
|
|
129
127
|
end
|
|
130
128
|
|
|
131
129
|
def test_index
|
|
@@ -169,6 +167,27 @@ class TestWorksheet < Test::Unit::TestCase
|
|
|
169
167
|
assert_equal(@ws.workbook.charts.size, 1, "add_chart adds a chart to the workbook")
|
|
170
168
|
end
|
|
171
169
|
|
|
170
|
+
def test_add_page_break_with_string_cell_ref
|
|
171
|
+
assert(@ws.row_breaks.empty?)
|
|
172
|
+
assert(@ws.col_breaks.empty?)
|
|
173
|
+
@ws.add_page_break("B1")
|
|
174
|
+
assert_equal(1, @ws.row_breaks.size)
|
|
175
|
+
assert_equal(1, @ws.col_breaks.size)
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
def test_add_page_break_with_cell
|
|
179
|
+
@ws.add_row [1, 2, 3, 4]
|
|
180
|
+
@ws.add_row [1, 2, 3, 4]
|
|
181
|
+
|
|
182
|
+
|
|
183
|
+
assert(@ws.row_breaks.empty?)
|
|
184
|
+
assert(@ws.col_breaks.empty?)
|
|
185
|
+
@ws.add_page_break(@ws.rows.last.cells[1])
|
|
186
|
+
assert_equal(1, @ws.row_breaks.size)
|
|
187
|
+
assert_equal(1, @ws.col_breaks.size)
|
|
188
|
+
end
|
|
189
|
+
|
|
190
|
+
|
|
172
191
|
def test_drawing
|
|
173
192
|
assert @ws.drawing == nil
|
|
174
193
|
@ws.add_chart(Axlsx::Pie3DChart)
|
|
@@ -205,13 +224,20 @@ class TestWorksheet < Test::Unit::TestCase
|
|
|
205
224
|
def test_cols
|
|
206
225
|
@ws.add_row [1,2,3,4]
|
|
207
226
|
@ws.add_row [1,2,3,4]
|
|
208
|
-
@ws.add_row [1,2,3
|
|
227
|
+
@ws.add_row [1,2,3]
|
|
209
228
|
@ws.add_row [1,2,3,4]
|
|
210
229
|
c = @ws.cols[1]
|
|
211
230
|
assert_equal(c.size, 4)
|
|
212
231
|
assert_equal(c[0].value, 2)
|
|
213
232
|
end
|
|
214
233
|
|
|
234
|
+
def test_cols_with_block
|
|
235
|
+
@ws.add_row [1,2,3]
|
|
236
|
+
@ws.add_row [1]
|
|
237
|
+
cols = @ws.cols {|row, column| :foo }
|
|
238
|
+
assert_equal(:foo, cols[1][1])
|
|
239
|
+
end
|
|
240
|
+
|
|
215
241
|
def test_row_style
|
|
216
242
|
@ws.add_row [1,2,3,4]
|
|
217
243
|
@ws.add_row [1,2,3,4]
|
|
@@ -288,6 +314,12 @@ class TestWorksheet < Test::Unit::TestCase
|
|
|
288
314
|
assert_equal(doc.xpath('//xmlns:worksheet/xmlns:mergeCells/xmlns:mergeCell[@ref="E1:F1"]').size, 1)
|
|
289
315
|
end
|
|
290
316
|
|
|
317
|
+
def test_to_xml_string_row_breaks
|
|
318
|
+
@ws.add_page_break("A1")
|
|
319
|
+
doc = Nokogiri::XML(@ws.to_xml_string)
|
|
320
|
+
assert_equal(doc.xpath('//xmlns:worksheet/xmlns:rowBreaks/xmlns:brk[@id="0"]').size, 1)
|
|
321
|
+
end
|
|
322
|
+
|
|
291
323
|
def test_to_xml_string_sheet_protection
|
|
292
324
|
@ws.sheet_protection.password = 'fish'
|
|
293
325
|
doc = Nokogiri::XML(@ws.to_xml_string)
|
|
@@ -334,16 +366,16 @@ class TestWorksheet < Test::Unit::TestCase
|
|
|
334
366
|
def test_to_xml_string_drawing
|
|
335
367
|
@ws.add_chart Axlsx::Pie3DChart
|
|
336
368
|
doc = Nokogiri::XML(@ws.to_xml_string)
|
|
337
|
-
assert_equal(doc.xpath('//xmlns:worksheet/xmlns:drawing[
|
|
369
|
+
assert_equal @ws.send(:worksheet_drawing).relationship.Id, doc.xpath('//xmlns:worksheet/xmlns:drawing').first["r:id"]
|
|
338
370
|
end
|
|
339
371
|
|
|
340
372
|
def test_to_xml_string_tables
|
|
341
373
|
@ws.add_row ["one", "two"]
|
|
342
374
|
@ws.add_row [1, 2]
|
|
343
|
-
@ws.add_table "A1:B2"
|
|
375
|
+
table = @ws.add_table "A1:B2"
|
|
344
376
|
doc = Nokogiri::XML(@ws.to_xml_string)
|
|
345
377
|
assert_equal(doc.xpath('//xmlns:worksheet/xmlns:tableParts[@count="1"]').size, 1)
|
|
346
|
-
assert_equal
|
|
378
|
+
assert_equal table.rId, doc.xpath('//xmlns:worksheet/xmlns:tableParts/xmlns:tablePart').first["r:id"]
|
|
347
379
|
end
|
|
348
380
|
|
|
349
381
|
def test_to_xml_string
|
|
@@ -32,22 +32,13 @@ class TestWorksheetHyperlink < Test::Unit::TestCase
|
|
|
32
32
|
assert_equal(@options[:ref], @a.ref)
|
|
33
33
|
end
|
|
34
34
|
|
|
35
|
-
def test_id
|
|
36
|
-
@a.target = :external
|
|
37
|
-
|
|
38
|
-
assert_equal("rId1", @a.id)
|
|
39
|
-
@a.target = :internal
|
|
40
|
-
assert_equal(nil, @a.id)
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
|
|
44
35
|
def test_to_xml_string_with_non_external
|
|
45
36
|
doc = Nokogiri::XML(@ws.to_xml_string)
|
|
46
37
|
assert_equal(doc.xpath("//xmlns:hyperlink[@ref='#{@a.ref}']").size, 1)
|
|
47
38
|
assert_equal(doc.xpath("//xmlns:hyperlink[@tooltip='#{@a.tooltip}']").size, 1)
|
|
48
39
|
assert_equal(doc.xpath("//xmlns:hyperlink[@location='#{@a.location}']").size, 1)
|
|
49
40
|
assert_equal(doc.xpath("//xmlns:hyperlink[@display='#{@a.display}']").size, 1)
|
|
50
|
-
assert_equal(doc.xpath("//xmlns:hyperlink[@r:id
|
|
41
|
+
assert_equal(doc.xpath("//xmlns:hyperlink[@r:id]").size, 0)
|
|
51
42
|
end
|
|
52
43
|
|
|
53
44
|
def test_to_xml_stirng_with_external
|
|
@@ -57,7 +48,7 @@ class TestWorksheetHyperlink < Test::Unit::TestCase
|
|
|
57
48
|
assert_equal(doc.xpath("//xmlns:hyperlink[@tooltip='#{@a.tooltip}']").size, 1)
|
|
58
49
|
assert_equal(doc.xpath("//xmlns:hyperlink[@display='#{@a.display}']").size, 1)
|
|
59
50
|
assert_equal(doc.xpath("//xmlns:hyperlink[@location='#{@a.location}']").size, 0)
|
|
60
|
-
assert_equal(doc.xpath("//xmlns:hyperlink[@r:id='#{@a.
|
|
51
|
+
assert_equal(doc.xpath("//xmlns:hyperlink[@r:id='#{@a.relationship.Id}']").size, 1)
|
|
61
52
|
end
|
|
62
53
|
end
|
|
63
54
|
|