caxlsx 3.1.1 → 3.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (154) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +43 -1
  3. data/README.md +4 -11
  4. data/lib/axlsx/content_type/abstract_content_type.rb +1 -1
  5. data/lib/axlsx/doc_props/app.rb +1 -1
  6. data/lib/axlsx/drawing/chart.rb +25 -2
  7. data/lib/axlsx/drawing/d_lbls.rb +3 -2
  8. data/lib/axlsx/drawing/scatter_series.rb +31 -0
  9. data/lib/axlsx/drawing/title.rb +11 -1
  10. data/lib/axlsx/drawing/view_3D.rb +1 -1
  11. data/lib/axlsx/package.rb +15 -5
  12. data/lib/axlsx/rels/relationship.rb +1 -1
  13. data/lib/axlsx/stylesheet/border.rb +2 -0
  14. data/lib/axlsx/stylesheet/font.rb +1 -1
  15. data/lib/axlsx/stylesheet/styles.rb +139 -24
  16. data/lib/axlsx/util/constants.rb +16 -1
  17. data/lib/axlsx/util/serialized_attributes.rb +2 -2
  18. data/lib/axlsx/util/storage.rb +9 -9
  19. data/lib/axlsx/version.rb +1 -1
  20. data/lib/axlsx/workbook/workbook.rb +55 -0
  21. data/lib/axlsx/workbook/worksheet/border_creator.rb +76 -0
  22. data/lib/axlsx/workbook/worksheet/cell.rb +29 -2
  23. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +1 -1
  24. data/lib/axlsx/workbook/worksheet/col.rb +4 -4
  25. data/lib/axlsx/workbook/worksheet/data_validation.rb +26 -5
  26. data/lib/axlsx/workbook/worksheet/pivot_table.rb +55 -14
  27. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +1 -1
  28. data/lib/axlsx/workbook/worksheet/worksheet.rb +68 -7
  29. data/lib/axlsx.rb +43 -10
  30. metadata +6 -253
  31. data/test/benchmark.rb +0 -72
  32. data/test/content_type/tc_content_type.rb +0 -76
  33. data/test/content_type/tc_default.rb +0 -16
  34. data/test/content_type/tc_override.rb +0 -14
  35. data/test/doc_props/tc_app.rb +0 -43
  36. data/test/doc_props/tc_core.rb +0 -42
  37. data/test/drawing/tc_area_chart.rb +0 -39
  38. data/test/drawing/tc_area_series.rb +0 -71
  39. data/test/drawing/tc_axes.rb +0 -8
  40. data/test/drawing/tc_axis.rb +0 -112
  41. data/test/drawing/tc_bar_3D_chart.rb +0 -86
  42. data/test/drawing/tc_bar_chart.rb +0 -86
  43. data/test/drawing/tc_bar_series.rb +0 -46
  44. data/test/drawing/tc_bubble_chart.rb +0 -44
  45. data/test/drawing/tc_bubble_series.rb +0 -21
  46. data/test/drawing/tc_cat_axis.rb +0 -31
  47. data/test/drawing/tc_cat_axis_data.rb +0 -27
  48. data/test/drawing/tc_chart.rb +0 -123
  49. data/test/drawing/tc_d_lbls.rb +0 -57
  50. data/test/drawing/tc_data_source.rb +0 -23
  51. data/test/drawing/tc_drawing.rb +0 -80
  52. data/test/drawing/tc_graphic_frame.rb +0 -27
  53. data/test/drawing/tc_hyperlink.rb +0 -64
  54. data/test/drawing/tc_line_3d_chart.rb +0 -47
  55. data/test/drawing/tc_line_chart.rb +0 -39
  56. data/test/drawing/tc_line_series.rb +0 -71
  57. data/test/drawing/tc_marker.rb +0 -44
  58. data/test/drawing/tc_named_axis_data.rb +0 -27
  59. data/test/drawing/tc_num_data.rb +0 -31
  60. data/test/drawing/tc_num_val.rb +0 -29
  61. data/test/drawing/tc_one_cell_anchor.rb +0 -66
  62. data/test/drawing/tc_pic.rb +0 -103
  63. data/test/drawing/tc_picture_locking.rb +0 -72
  64. data/test/drawing/tc_pie_3D_chart.rb +0 -28
  65. data/test/drawing/tc_pie_series.rb +0 -33
  66. data/test/drawing/tc_scaling.rb +0 -36
  67. data/test/drawing/tc_scatter_chart.rb +0 -48
  68. data/test/drawing/tc_scatter_series.rb +0 -56
  69. data/test/drawing/tc_ser_axis.rb +0 -31
  70. data/test/drawing/tc_series.rb +0 -23
  71. data/test/drawing/tc_series_title.rb +0 -54
  72. data/test/drawing/tc_str_data.rb +0 -18
  73. data/test/drawing/tc_str_val.rb +0 -30
  74. data/test/drawing/tc_title.rb +0 -70
  75. data/test/drawing/tc_two_cell_anchor.rb +0 -36
  76. data/test/drawing/tc_val_axis.rb +0 -24
  77. data/test/drawing/tc_view_3D.rb +0 -54
  78. data/test/drawing/tc_vml_drawing.rb +0 -25
  79. data/test/drawing/tc_vml_shape.rb +0 -106
  80. data/test/fixtures/image1.gif +0 -0
  81. data/test/fixtures/image1.jpeg +0 -0
  82. data/test/fixtures/image1.jpg +0 -0
  83. data/test/fixtures/image1.png +0 -0
  84. data/test/fixtures/image1_fake.jpg +0 -0
  85. data/test/profile.rb +0 -24
  86. data/test/rels/tc_relationship.rb +0 -52
  87. data/test/rels/tc_relationships.rb +0 -37
  88. data/test/stylesheet/tc_border.rb +0 -37
  89. data/test/stylesheet/tc_border_pr.rb +0 -32
  90. data/test/stylesheet/tc_cell_alignment.rb +0 -81
  91. data/test/stylesheet/tc_cell_protection.rb +0 -29
  92. data/test/stylesheet/tc_cell_style.rb +0 -57
  93. data/test/stylesheet/tc_color.rb +0 -43
  94. data/test/stylesheet/tc_dxf.rb +0 -81
  95. data/test/stylesheet/tc_fill.rb +0 -18
  96. data/test/stylesheet/tc_font.rb +0 -133
  97. data/test/stylesheet/tc_gradient_fill.rb +0 -72
  98. data/test/stylesheet/tc_gradient_stop.rb +0 -31
  99. data/test/stylesheet/tc_num_fmt.rb +0 -30
  100. data/test/stylesheet/tc_pattern_fill.rb +0 -43
  101. data/test/stylesheet/tc_styles.rb +0 -261
  102. data/test/stylesheet/tc_table_style.rb +0 -44
  103. data/test/stylesheet/tc_table_style_element.rb +0 -45
  104. data/test/stylesheet/tc_table_styles.rb +0 -29
  105. data/test/stylesheet/tc_xf.rb +0 -120
  106. data/test/tc_axlsx.rb +0 -109
  107. data/test/tc_helper.rb +0 -10
  108. data/test/tc_package.rb +0 -314
  109. data/test/util/tc_mime_type_utils.rb +0 -13
  110. data/test/util/tc_serialized_attributes.rb +0 -19
  111. data/test/util/tc_simple_typed_list.rb +0 -77
  112. data/test/util/tc_validators.rb +0 -210
  113. data/test/workbook/tc_defined_name.rb +0 -49
  114. data/test/workbook/tc_shared_strings_table.rb +0 -59
  115. data/test/workbook/tc_workbook.rb +0 -160
  116. data/test/workbook/tc_workbook_view.rb +0 -50
  117. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
  118. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
  119. data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
  120. data/test/workbook/worksheet/tc_break.rb +0 -49
  121. data/test/workbook/worksheet/tc_cell.rb +0 -453
  122. data/test/workbook/worksheet/tc_cfvo.rb +0 -31
  123. data/test/workbook/worksheet/tc_col.rb +0 -93
  124. data/test/workbook/worksheet/tc_color_scale.rb +0 -58
  125. data/test/workbook/worksheet/tc_comment.rb +0 -72
  126. data/test/workbook/worksheet/tc_comments.rb +0 -57
  127. data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
  128. data/test/workbook/worksheet/tc_data_bar.rb +0 -46
  129. data/test/workbook/worksheet/tc_data_validation.rb +0 -265
  130. data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
  131. data/test/workbook/worksheet/tc_header_footer.rb +0 -151
  132. data/test/workbook/worksheet/tc_icon_set.rb +0 -45
  133. data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
  134. data/test/workbook/worksheet/tc_page_margins.rb +0 -97
  135. data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
  136. data/test/workbook/worksheet/tc_page_setup.rb +0 -143
  137. data/test/workbook/worksheet/tc_pane.rb +0 -54
  138. data/test/workbook/worksheet/tc_pivot_table.rb +0 -143
  139. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
  140. data/test/workbook/worksheet/tc_print_options.rb +0 -72
  141. data/test/workbook/worksheet/tc_protected_range.rb +0 -17
  142. data/test/workbook/worksheet/tc_rich_text.rb +0 -44
  143. data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
  144. data/test/workbook/worksheet/tc_row.rb +0 -160
  145. data/test/workbook/worksheet/tc_selection.rb +0 -55
  146. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
  147. data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
  148. data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
  149. data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
  150. data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
  151. data/test/workbook/worksheet/tc_table.rb +0 -77
  152. data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
  153. data/test/workbook/worksheet/tc_worksheet.rb +0 -601
  154. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
@@ -1,261 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestStyles < Test::Unit::TestCase
4
- def setup
5
- @styles = Axlsx::Styles.new
6
- end
7
- def teardown
8
- end
9
-
10
- def test_valid_document
11
- schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
12
- doc = Nokogiri::XML(@styles.to_xml_string)
13
- errors = []
14
- schema.validate(doc).each do |error|
15
- errors.push error
16
- puts error.message
17
- end
18
- assert(errors.size == 0)
19
- end
20
- def test_add_style_border_hash
21
- border_count = @styles.borders.size
22
- @styles.add_style :border => {:style => :thin, :color => "FFFF0000"}
23
- assert_equal(@styles.borders.size, border_count + 1)
24
- assert_equal(@styles.borders.last.prs.last.color.rgb, "FFFF0000")
25
- assert_raise(ArgumentError) { @styles.add_style :border => {:color => "FFFF0000"} }
26
- assert_equal @styles.borders.last.prs.size, 4
27
- end
28
-
29
- def test_add_style_border_edges
30
- @styles.add_style :border => { :style => :thin, :color => "0000FFFF", :edges => [:top, :bottom] }
31
- parts = @styles.borders.last.prs
32
- parts.each { |pr| assert_equal(pr.color.rgb, "0000FFFF", "Style is applied to #{pr.name} properly") }
33
- assert((parts.map { |pr| pr.name.to_s }.sort && ['bottom', 'top']).size == 2, "specify two edges, and you get two border prs")
34
- end
35
-
36
- def test_do_not_alter_options_in_add_style
37
- #This should test all options, but for now - just the bits that we know caused some pain
38
- options = { :border => { :style => :thin, :color =>"FF000000" } }
39
- @styles.add_style options
40
- assert_equal options[:border][:style], :thin, 'thin style is stil in option'
41
- assert_equal options[:border][:color], "FF000000", 'color is stil in option'
42
- end
43
-
44
- def test_parse_num_fmt
45
- f_code = {:format_code => "YYYY/MM"}
46
- num_fmt = {:num_fmt => 5}
47
- assert_equal(@styles.parse_num_fmt_options, nil, 'noop if neither :format_code or :num_fmt exist')
48
- max = @styles.numFmts.map{ |nf| nf.numFmtId }.max
49
- @styles.parse_num_fmt_options(f_code)
50
- assert_equal(@styles.numFmts.last.numFmtId, max + 1, "new numfmts gets next available id")
51
- assert(@styles.parse_num_fmt_options(num_fmt).is_a?(Integer), "Should return the provided num_fmt if not dxf")
52
- assert(@styles.parse_num_fmt_options(num_fmt.merge({:type => :dxf})).is_a?(Axlsx::NumFmt), "Makes a new NumFmt if dxf")
53
- end
54
-
55
- def test_parse_border_options_hash_required_keys
56
- assert_raise(ArgumentError, "Require color key") { @styles.parse_border_options(:border => { :style => :thin }) }
57
- assert_raise(ArgumentError, "Require style key") { @styles.parse_border_options(:border => { :color => "FF0d0d0d" }) }
58
- assert_nothing_raised { @styles.parse_border_options(:border => { :style => :thin, :color => "FF000000"} ) }
59
- end
60
-
61
- def test_parse_border_basic_options
62
- b_opts = {:border => { :diagonalUp => 1, :edges => [:left, :right], :color => "FFDADADA", :style => :thick } }
63
- b = @styles.parse_border_options b_opts
64
- assert(b.is_a? Integer)
65
- assert_equal(@styles.parse_border_options(b_opts.merge({:type => :dxf})).class,Axlsx::Border)
66
- assert(@styles.borders.last.diagonalUp == 1, "border options are passed in to the initializer")
67
- end
68
-
69
- def test_parse_border_options_edges
70
- b_opts = {:border => { :diagonalUp => 1, :edges => [:left, :right], :color => "FFDADADA", :style => :thick } }
71
- @styles.parse_border_options b_opts
72
- b = @styles.borders.last
73
- left = b.prs.select { |bpr| bpr.name == :left }[0]
74
- right = b.prs.select { |bpr| bpr.name == :right }[0]
75
- top = b.prs.select { |bpr| bpr.name == :top }[0]
76
- bottom = b.prs.select { |bpr| bpr.name == :bottom }[0]
77
- assert_equal(top, nil, "unspecified top edge should not be created")
78
- assert_equal(bottom, nil, "unspecified bottom edge should not be created")
79
- assert(left.is_a?(Axlsx::BorderPr), "specified left edge is set")
80
- assert(right.is_a?(Axlsx::BorderPr), "specified right edge is set")
81
- assert_equal(left.style,right.style, "edge parts have the same style")
82
- assert_equal(left.style, :thick, "the style is THICK")
83
- assert_equal(right.color.rgb,left.color.rgb, "edge parts are colors are the same")
84
- assert_equal(right.color.rgb,"FFDADADA", "edge color rgb is correct")
85
- end
86
-
87
- def test_parse_border_options_noop
88
- assert_equal(@styles.parse_border_options({}), nil, "noop if the border key is not in options")
89
- end
90
-
91
- def test_parse_border_options_integer_xf
92
- assert_equal(@styles.parse_border_options(:border => 1), 1)
93
- assert_raise(ArgumentError, "unknown border index") {@styles.parse_border_options(:border => 100) }
94
- end
95
-
96
- def test_parse_border_options_integer_dxf
97
- b_opts = { :border => { :edges => [:left, :right], :color => "FFFFFFFF", :style=> :thick } }
98
- b = @styles.parse_border_options(b_opts)
99
- b2 = @styles.parse_border_options(:border => b, :type => :dxf)
100
- assert(b2.is_a?(Axlsx::Border), "Cloned existing border object")
101
- end
102
-
103
- def test_parse_alignment_options
104
- assert_equal(@styles.parse_alignment_options {}, nil, "noop if :alignment is not set")
105
- assert(@styles.parse_alignment_options(:alignment => {}).is_a?(Axlsx::CellAlignment))
106
- end
107
-
108
- def test_parse_font_using_defaults
109
- original = @styles.fonts.first
110
- @styles.add_style :b => 1, :sz => 99
111
- created = @styles.fonts.last
112
- original_attributes = original.instance_values
113
- assert_equal(1, created.b)
114
- assert_equal(99, created.sz)
115
- copied = original_attributes.reject{ |key, value| %w(b sz).include? key }
116
- copied.each do |key, value|
117
- assert_equal(created.instance_values[key], value)
118
- end
119
- end
120
-
121
- def test_parse_font_options
122
- options = {
123
- :fg_color => "FF050505",
124
- :sz => 20,
125
- :b => 1,
126
- :i => 1,
127
- :u => :single,
128
- :strike => 1,
129
- :outline => 1,
130
- :shadow => 1,
131
- :charset => 9,
132
- :family => 1,
133
- :font_name => "woot font"
134
- }
135
- assert_equal(@styles.parse_font_options {}, nil, "noop if no font keys are set")
136
- assert(@styles.parse_font_options(:b=>1).is_a?(Integer), "return index of font if not :dxf type")
137
- assert_equal(@styles.parse_font_options(:b=>1, :type => :dxf).class, Axlsx::Font, "return font object if :dxf type")
138
-
139
- f = @styles.parse_font_options(options.merge(:type => :dxf))
140
- color = options.delete(:fg_color)
141
- options[:name] = options.delete(:font_name)
142
- options.each do |key, value|
143
- assert_equal(f.send(key), value, "assert that #{key} was parsed")
144
- end
145
- assert_equal(f.color.rgb, color)
146
- end
147
-
148
- def test_parse_fill_options
149
- assert_equal(@styles.parse_fill_options {}, nil, "noop if no fill keys are set")
150
- assert(@styles.parse_fill_options(:bg_color => "DE").is_a?(Integer), "return index of fill if not :dxf type")
151
- assert_equal(@styles.parse_fill_options(:bg_color => "DE", :type => :dxf).class, Axlsx::Fill, "return fill object if :dxf type")
152
- f = @styles.parse_fill_options(:bg_color => "DE", :type => :dxf)
153
- assert(f.fill_type.bgColor.rgb == "FFDEDEDE")
154
- end
155
-
156
- def test_parse_protection_options
157
- assert_equal(@styles.parse_protection_options {}, nil, "noop if no protection keys are set")
158
- assert_equal(@styles.parse_protection_options(:hidden => 1).class, Axlsx::CellProtection, "creates a new cell protection object")
159
- end
160
-
161
- def test_add_style
162
- fill_count = @styles.fills.size
163
- font_count = @styles.fonts.size
164
- xf_count = @styles.cellXfs.size
165
-
166
- @styles.add_style :bg_color=>"FF000000", :fg_color=>"FFFFFFFF", :sz=>13, :num_fmt=>Axlsx::NUM_FMT_PERCENT, :alignment=>{:horizontal=>:left}, :border=>Axlsx::STYLE_THIN_BORDER, :hidden=>true, :locked=>true
167
- assert_equal(@styles.fills.size, fill_count+1)
168
- assert_equal(@styles.fonts.size, font_count+1)
169
- assert_equal(@styles.cellXfs.size, xf_count+1)
170
- xf = @styles.cellXfs.last
171
- assert_equal(xf.fillId, (@styles.fills.size-1), "points to the last created fill")
172
- assert_equal(@styles.fills.last.fill_type.fgColor.rgb, "FF000000", "fill created with color")
173
-
174
- assert_equal(xf.fontId, (@styles.fonts.size-1), "points to the last created font")
175
- assert_equal(@styles.fonts.last.sz, 13, "font sz applied")
176
- assert_equal(@styles.fonts.last.color.rgb, "FFFFFFFF", "font color applied")
177
-
178
- assert_equal(xf.borderId, Axlsx::STYLE_THIN_BORDER, "border id is set")
179
- assert_equal(xf.numFmtId, Axlsx::NUM_FMT_PERCENT, "number format id is set")
180
-
181
- assert(xf.alignment.is_a?(Axlsx::CellAlignment), "alignment was created")
182
- assert_equal(xf.alignment.horizontal, :left, "horizontal alignment applied")
183
- assert_equal(xf.protection.hidden, true, "hidden protection set")
184
- assert_equal(xf.protection.locked, true, "cell locking set")
185
- assert_raise(ArgumentError, "should reject invalid borderId") { @styles.add_style :border => 2 }
186
-
187
-
188
- assert_equal(xf.applyProtection, true, "protection applied")
189
- assert_equal(xf.applyBorder, true, "border applied")
190
- assert_equal(xf.applyNumberFormat,true, "number format applied")
191
- assert_equal(xf.applyAlignment, true, "alignment applied")
192
- end
193
-
194
- def test_basic_add_style_dxf
195
- border_count = @styles.borders.size
196
- @styles.add_style :border => {:style => :thin, :color => "FFFF0000"}, :type => :dxf
197
- assert_equal(@styles.borders.size, border_count, "styles borders not affected")
198
- assert_equal(@styles.dxfs.last.border.prs.last.color.rgb, "FFFF0000")
199
- assert_raise(ArgumentError) { @styles.add_style :border => {:color => "FFFF0000"}, :type => :dxf }
200
- assert_equal @styles.borders.last.prs.size, 4
201
- end
202
-
203
- def test_add_style_dxf
204
- fill_count = @styles.fills.size
205
- font_count = @styles.fonts.size
206
- dxf_count = @styles.dxfs.size
207
-
208
- style = @styles.add_style :bg_color=>"FF000000", :fg_color=>"FFFFFFFF", :sz=>13, :alignment=>{:horizontal=>:left}, :border=>{:style => :thin, :color => "FFFF0000"}, :hidden=>true, :locked=>true, :type => :dxf
209
- assert_equal(@styles.dxfs.size, dxf_count+1)
210
- assert_equal(0, style, "returns the zero-based dxfId")
211
-
212
- dxf = @styles.dxfs.last
213
- assert_equal(@styles.dxfs.last.fill.fill_type.bgColor.rgb, "FF000000", "fill created with color")
214
-
215
- assert_equal(font_count, (@styles.fonts.size), "font not created under styles")
216
- assert_equal(fill_count, (@styles.fills.size), "fill not created under styles")
217
-
218
- assert(dxf.border.is_a?(Axlsx::Border), "border is set")
219
- assert_equal(nil, dxf.numFmt, "number format is not set")
220
-
221
- assert(dxf.alignment.is_a?(Axlsx::CellAlignment), "alignment was created")
222
- assert_equal(dxf.alignment.horizontal, :left, "horizontal alignment applied")
223
- assert_equal(dxf.protection.hidden, true, "hidden protection set")
224
- assert_equal(dxf.protection.locked, true, "cell locking set")
225
- assert_raise(ArgumentError, "should reject invalid borderId") { @styles.add_style :border => 3 }
226
- end
227
-
228
- def test_multiple_dxf
229
- # add a second style
230
- style = @styles.add_style :bg_color=>"00000000", :fg_color=>"FFFFFFFF", :sz=>13, :alignment=>{:horizontal=>:left}, :border=>{:style => :thin, :color => "FFFF0000"}, :hidden=>true, :locked=>true, :type => :dxf
231
- assert_equal(0, style, "returns the first dxfId")
232
- style = @styles.add_style :bg_color=>"FF000000", :fg_color=>"FFFFFFFF", :sz=>13, :alignment=>{:horizontal=>:left}, :border=>{:style => :thin, :color => "FFFF0000"}, :hidden=>true, :locked=>true, :type => :dxf
233
- assert_equal(1, style, "returns the second dxfId")
234
- end
235
-
236
- def test_valid_document_with_font_options
237
- font_options = {
238
- :fg_color => "FF050505",
239
- :sz => 20,
240
- :b => 1,
241
- :i => 1,
242
- :u => :single,
243
- :strike => 1,
244
- :outline => 1,
245
- :shadow => 1,
246
- :charset => 9,
247
- :family => 1,
248
- :font_name => "woot font"
249
- }
250
- @styles.add_style font_options
251
-
252
- schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
253
- doc = Nokogiri::XML(@styles.to_xml_string)
254
- errors = []
255
- schema.validate(doc).each do |error|
256
- errors.push error
257
- puts error.message
258
- end
259
- assert(errors.size == 0)
260
- end
261
- end
@@ -1,44 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestTableStyle < Test::Unit::TestCase
4
-
5
- def setup
6
- @item = Axlsx::TableStyle.new "fisher"
7
- end
8
-
9
- def teardown
10
- end
11
-
12
- def test_initialiation
13
- assert_equal(@item.name, "fisher")
14
- assert_equal(@item.pivot, nil)
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)
20
- end
21
-
22
- def test_name
23
- assert_raise(ArgumentError) { @item.name = -1.1 }
24
- assert_nothing_raised { @item.name = "lovely table style" }
25
- assert_equal(@item.name, "lovely table style")
26
- end
27
-
28
- def test_pivot
29
- assert_raise(ArgumentError) { @item.pivot = -1.1 }
30
- assert_nothing_raised { @item.pivot = true }
31
- assert_equal(@item.pivot, true)
32
- end
33
-
34
- def test_table
35
- assert_raise(ArgumentError) { @item.table = -1.1 }
36
- assert_nothing_raised { @item.table = true }
37
- assert_equal(@item.table, true)
38
- end
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
44
- end
@@ -1,45 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestTableStyleElement < Test::Unit::TestCase
4
-
5
- def setup
6
- @item = Axlsx::TableStyleElement.new
7
- end
8
-
9
- def teardown
10
- end
11
-
12
- def test_initialiation
13
- assert_equal(@item.type, nil)
14
- assert_equal(@item.size, nil)
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) }
20
- end
21
-
22
- def test_type
23
- assert_raise(ArgumentError) { @item.type = -1.1 }
24
- assert_nothing_raised { @item.type = :blankRow }
25
- assert_equal(@item.type, :blankRow)
26
- end
27
-
28
- def test_size
29
- assert_raise(ArgumentError) { @item.size = -1.1 }
30
- assert_nothing_raised { @item.size = 2 }
31
- assert_equal(@item.size, 2)
32
- end
33
-
34
- def test_dxfId
35
- assert_raise(ArgumentError) { @item.dxfId = -1.1 }
36
- assert_nothing_raised { @item.dxfId = 7 }
37
- assert_equal(@item.dxfId, 7)
38
- end
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
45
- end
@@ -1,29 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestTableStyles < Test::Unit::TestCase
4
-
5
- def setup
6
- @item = Axlsx::TableStyles.new
7
- end
8
-
9
- def teardown
10
- end
11
-
12
- def test_initialiation
13
- assert_equal(@item.defaultTableStyle, "TableStyleMedium9")
14
- assert_equal(@item.defaultPivotStyle, "PivotStyleLight16")
15
- end
16
-
17
- def test_defaultTableStyle
18
- assert_raise(ArgumentError) { @item.defaultTableStyle = -1.1 }
19
- assert_nothing_raised { @item.defaultTableStyle = "anyones guess" }
20
- assert_equal(@item.defaultTableStyle, "anyones guess")
21
- end
22
-
23
- def test_defaultPivotStyle
24
- assert_raise(ArgumentError) { @item.defaultPivotStyle = -1.1 }
25
- assert_nothing_raised { @item.defaultPivotStyle = "anyones guess" }
26
- assert_equal(@item.defaultPivotStyle, "anyones guess")
27
- end
28
-
29
- end
@@ -1,120 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestXf < Test::Unit::TestCase
4
-
5
- def setup
6
- @item = Axlsx::Xf.new
7
- end
8
-
9
- def teardown
10
- end
11
-
12
- def test_initialiation
13
- assert_equal(@item.alignment, nil)
14
- assert_equal(@item.protection, nil)
15
- assert_equal(@item.numFmtId, nil)
16
- assert_equal(@item.fontId, nil)
17
- assert_equal(@item.fillId, nil)
18
- assert_equal(@item.borderId, nil)
19
- assert_equal(@item.xfId, nil)
20
- assert_equal(@item.quotePrefix, nil)
21
- assert_equal(@item.pivotButton, nil)
22
- assert_equal(@item.applyNumberFormat, nil)
23
- assert_equal(@item.applyFont, nil)
24
- assert_equal(@item.applyFill, nil)
25
- assert_equal(@item.applyBorder, nil)
26
- assert_equal(@item.applyAlignment, nil)
27
- assert_equal(@item.applyProtection, nil)
28
- end
29
-
30
- def test_alignment
31
- assert_raise(ArgumentError) { @item.alignment = -1.1 }
32
- assert_nothing_raised { @item.alignment = Axlsx::CellAlignment.new }
33
- assert(@item.alignment.is_a?(Axlsx::CellAlignment))
34
- end
35
-
36
- def test_protection
37
- assert_raise(ArgumentError) { @item.protection = -1.1 }
38
- assert_nothing_raised { @item.protection = Axlsx::CellProtection.new }
39
- assert(@item.protection.is_a?(Axlsx::CellProtection))
40
- end
41
-
42
- def test_numFmtId
43
- assert_raise(ArgumentError) { @item.numFmtId = -1.1 }
44
- assert_nothing_raised { @item.numFmtId = 0 }
45
- assert_equal(@item.numFmtId, 0)
46
- end
47
-
48
- def test_fillId
49
- assert_raise(ArgumentError) { @item.fillId = -1.1 }
50
- assert_nothing_raised { @item.fillId = 0 }
51
- assert_equal(@item.fillId, 0)
52
- end
53
-
54
- def test_fontId
55
- assert_raise(ArgumentError) { @item.fontId = -1.1 }
56
- assert_nothing_raised { @item.fontId = 0 }
57
- assert_equal(@item.fontId, 0)
58
- end
59
-
60
- def test_borderId
61
- assert_raise(ArgumentError) { @item.borderId = -1.1 }
62
- assert_nothing_raised { @item.borderId = 0 }
63
- assert_equal(@item.borderId, 0)
64
- end
65
-
66
- def test_xfId
67
- assert_raise(ArgumentError) { @item.xfId = -1.1 }
68
- assert_nothing_raised { @item.xfId = 0 }
69
- assert_equal(@item.xfId, 0)
70
- end
71
-
72
- def test_quotePrefix
73
- assert_raise(ArgumentError) { @item.quotePrefix = -1.1 }
74
- assert_nothing_raised { @item.quotePrefix = false }
75
- assert_equal(@item.quotePrefix, false)
76
- end
77
-
78
- def test_pivotButton
79
- assert_raise(ArgumentError) { @item.pivotButton = -1.1 }
80
- assert_nothing_raised { @item.pivotButton = false }
81
- assert_equal(@item.pivotButton, false)
82
- end
83
-
84
- def test_applyNumberFormat
85
- assert_raise(ArgumentError) { @item.applyNumberFormat = -1.1 }
86
- assert_nothing_raised { @item.applyNumberFormat = false }
87
- assert_equal(@item.applyNumberFormat, false)
88
- end
89
-
90
- def test_applyFont
91
- assert_raise(ArgumentError) { @item.applyFont = -1.1 }
92
- assert_nothing_raised { @item.applyFont = false }
93
- assert_equal(@item.applyFont, false)
94
- end
95
-
96
- def test_applyFill
97
- assert_raise(ArgumentError) { @item.applyFill = -1.1 }
98
- assert_nothing_raised { @item.applyFill = false }
99
- assert_equal(@item.applyFill, false)
100
- end
101
-
102
- def test_applyBorder
103
- assert_raise(ArgumentError) { @item.applyBorder = -1.1 }
104
- assert_nothing_raised { @item.applyBorder = false }
105
- assert_equal(@item.applyBorder, false)
106
- end
107
-
108
- def test_applyAlignment
109
- assert_raise(ArgumentError) { @item.applyAlignment = -1.1 }
110
- assert_nothing_raised { @item.applyAlignment = false }
111
- assert_equal(@item.applyAlignment, false)
112
- end
113
-
114
- def test_applyProtection
115
- assert_raise(ArgumentError) { @item.applyProtection = -1.1 }
116
- assert_nothing_raised { @item.applyProtection = false }
117
- assert_equal(@item.applyProtection, false)
118
- end
119
-
120
- end
data/test/tc_axlsx.rb DELETED
@@ -1,109 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestAxlsx < Test::Unit::TestCase
4
-
5
- def setup_wide
6
- @wide_test_points = { "A3" => 0,
7
- "Z3" => 25,
8
- "B3" => 1,
9
- "AA3" => 1 * 26 + 0,
10
- "AAA3" => 1 * 26**2 + 1 * 26 + 0,
11
- "AAZ3" => 1 * 26**2 + 1 * 26 + 25,
12
- "ABA3" => 1 * 26**2 + 2 * 26 + 0,
13
- "BZU3" => 2 * 26**2 + 26 * 26 + 20
14
- }
15
- end
16
-
17
- def test_cell_range_empty_if_no_cell
18
- assert_equal(Axlsx.cell_range([]), "")
19
- end
20
-
21
- def test_do_not_trust_input_by_default
22
- assert_equal false, Axlsx.trust_input
23
- end
24
-
25
-
26
- def test_trust_input_can_be_set_to_true
27
- # Class variables like this are not reset between test runs, so we have
28
- # to save and restore the original value manually.
29
- old = Axlsx.trust_input
30
-
31
- Axlsx.trust_input = true
32
- assert_equal true, Axlsx.trust_input
33
-
34
- Axlsx.trust_input = old
35
- end
36
- def test_cell_range_relative
37
- p = Axlsx::Package.new
38
- ws = p.workbook.add_worksheet
39
- row = ws.add_row
40
- c1 = row.add_cell
41
- c2 = row.add_cell
42
- assert_equal(Axlsx.cell_range([c2, c1], false), "A1:B1")
43
- end
44
-
45
- def test_cell_range_absolute
46
- p = Axlsx::Package.new
47
- ws = p.workbook.add_worksheet :name => "Sheet <'>\" 1"
48
- row = ws.add_row
49
- c1 = row.add_cell
50
- c2 = row.add_cell
51
- assert_equal(Axlsx.cell_range([c2, c1], true), "'Sheet &lt;''&gt;&quot; 1'!$A$1:$B$1")
52
- end
53
-
54
- def test_cell_range_row
55
- p = Axlsx::Package.new
56
- ws = p.workbook.add_worksheet
57
- row = ws.add_row
58
- row.add_cell
59
- row.add_cell
60
- row.add_cell
61
- assert_equal("A1:C1", Axlsx.cell_range(row, false))
62
- end
63
-
64
- def test_name_to_indices
65
- setup_wide
66
- @wide_test_points.each do |key, value|
67
- assert_equal(Axlsx.name_to_indices(key), [value,2])
68
- end
69
- end
70
-
71
- def test_col_ref
72
- setup_wide
73
- @wide_test_points.each do |key, value|
74
- assert_equal(Axlsx.col_ref(value), key.gsub(/\d+/, ''))
75
- end
76
- end
77
-
78
- def test_cell_r
79
- # todo
80
- end
81
-
82
- def test_range_to_a
83
- assert_equal([['A1', 'B1', 'C1']], Axlsx::range_to_a('A1:C1'))
84
- assert_equal([['A1', 'B1', 'C1'], ['A2', 'B2', 'C2']], Axlsx::range_to_a('A1:C2'))
85
- assert_equal([['Z5', 'AA5', 'AB5'], ['Z6', 'AA6', 'AB6']], Axlsx::range_to_a('Z5:AB6'))
86
- end
87
-
88
- def test_sanitize_frozen_control_strippped
89
- needs_sanitize = "legit\x08".freeze # Backspace control char
90
-
91
- assert_equal(Axlsx.sanitize(needs_sanitize), 'legit', 'should strip control chars')
92
- end
93
-
94
- def test_sanitize_unfrozen_control_strippped
95
- needs_sanitize = "legit\x08" # Backspace control char
96
- sanitized_str = Axlsx.sanitize(needs_sanitize)
97
-
98
- assert_equal(sanitized_str, 'legit', 'should strip control chars')
99
- assert_equal(sanitized_str.object_id, sanitized_str.object_id, 'should preserve object')
100
- end
101
-
102
- def test_sanitize_unfrozen_no_sanitize
103
- legit_str = 'legit'
104
- sanitized_str = Axlsx.sanitize(legit_str)
105
-
106
- assert_equal(sanitized_str, legit_str, 'should preserve value')
107
- assert_equal(sanitized_str.object_id, legit_str.object_id, 'should preserve object')
108
- end
109
- end
data/test/tc_helper.rb DELETED
@@ -1,10 +0,0 @@
1
- $LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
2
- require 'simplecov'
3
- SimpleCov.start do
4
- add_filter "/test/"
5
- add_filter "/vendor/"
6
- end
7
-
8
- require 'test/unit'
9
- require "timecop"
10
- require "axlsx.rb"