caxlsx 3.0.4 → 3.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.
Files changed (294) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -9
  3. data/.yardopts_guide +18 -18
  4. data/CHANGELOG.md +354 -334
  5. data/LICENSE +21 -21
  6. data/README.md +168 -170
  7. data/Rakefile +29 -29
  8. data/examples/generate.rb +15 -15
  9. data/lib/axlsx/content_type/abstract_content_type.rb +32 -32
  10. data/lib/axlsx/content_type/content_type.rb +26 -26
  11. data/lib/axlsx/content_type/default.rb +25 -25
  12. data/lib/axlsx/content_type/override.rb +25 -25
  13. data/lib/axlsx/doc_props/app.rb +235 -235
  14. data/lib/axlsx/doc_props/core.rb +39 -39
  15. data/lib/axlsx/drawing/area_chart.rb +99 -99
  16. data/lib/axlsx/drawing/area_series.rb +110 -110
  17. data/lib/axlsx/drawing/ax_data_source.rb +26 -26
  18. data/lib/axlsx/drawing/axes.rb +61 -61
  19. data/lib/axlsx/drawing/axis.rb +190 -190
  20. data/lib/axlsx/drawing/bar_3D_chart.rb +148 -151
  21. data/lib/axlsx/drawing/bar_chart.rb +138 -143
  22. data/lib/axlsx/drawing/bar_series.rb +97 -80
  23. data/lib/axlsx/drawing/bubble_chart.rb +59 -59
  24. data/lib/axlsx/drawing/bubble_series.rb +63 -63
  25. data/lib/axlsx/drawing/cat_axis.rb +85 -85
  26. data/lib/axlsx/drawing/chart.rb +276 -276
  27. data/lib/axlsx/drawing/d_lbls.rb +90 -90
  28. data/lib/axlsx/drawing/drawing.rb +167 -167
  29. data/lib/axlsx/drawing/graphic_frame.rb +54 -54
  30. data/lib/axlsx/drawing/hyperlink.rb +100 -100
  31. data/lib/axlsx/drawing/line_3D_chart.rb +68 -68
  32. data/lib/axlsx/drawing/line_chart.rb +99 -99
  33. data/lib/axlsx/drawing/line_series.rb +110 -110
  34. data/lib/axlsx/drawing/marker.rb +84 -84
  35. data/lib/axlsx/drawing/num_data.rb +52 -52
  36. data/lib/axlsx/drawing/num_data_source.rb +62 -62
  37. data/lib/axlsx/drawing/num_val.rb +34 -34
  38. data/lib/axlsx/drawing/one_cell_anchor.rb +99 -99
  39. data/lib/axlsx/drawing/pic.rb +211 -211
  40. data/lib/axlsx/drawing/picture_locking.rb +42 -42
  41. data/lib/axlsx/drawing/pie_3D_chart.rb +47 -47
  42. data/lib/axlsx/drawing/pie_series.rb +74 -74
  43. data/lib/axlsx/drawing/scaling.rb +60 -60
  44. data/lib/axlsx/drawing/scatter_chart.rb +74 -74
  45. data/lib/axlsx/drawing/scatter_series.rb +129 -98
  46. data/lib/axlsx/drawing/ser_axis.rb +45 -45
  47. data/lib/axlsx/drawing/series.rb +69 -69
  48. data/lib/axlsx/drawing/series_title.rb +25 -25
  49. data/lib/axlsx/drawing/str_data.rb +42 -42
  50. data/lib/axlsx/drawing/str_val.rb +34 -34
  51. data/lib/axlsx/drawing/title.rb +97 -97
  52. data/lib/axlsx/drawing/two_cell_anchor.rb +97 -97
  53. data/lib/axlsx/drawing/val_axis.rb +37 -37
  54. data/lib/axlsx/drawing/view_3D.rb +115 -115
  55. data/lib/axlsx/drawing/vml_drawing.rb +42 -42
  56. data/lib/axlsx/drawing/vml_shape.rb +66 -66
  57. data/lib/axlsx/package.rb +388 -363
  58. data/lib/axlsx/rels/relationship.rb +130 -130
  59. data/lib/axlsx/rels/relationships.rb +32 -32
  60. data/lib/axlsx/stylesheet/border.rb +73 -71
  61. data/lib/axlsx/stylesheet/border_pr.rb +71 -71
  62. data/lib/axlsx/stylesheet/cell_alignment.rb +132 -132
  63. data/lib/axlsx/stylesheet/cell_protection.rb +41 -41
  64. data/lib/axlsx/stylesheet/cell_style.rb +72 -72
  65. data/lib/axlsx/stylesheet/color.rb +76 -76
  66. data/lib/axlsx/stylesheet/dxf.rb +79 -79
  67. data/lib/axlsx/stylesheet/fill.rb +35 -35
  68. data/lib/axlsx/stylesheet/font.rb +156 -156
  69. data/lib/axlsx/stylesheet/gradient_fill.rb +103 -103
  70. data/lib/axlsx/stylesheet/gradient_stop.rb +37 -37
  71. data/lib/axlsx/stylesheet/num_fmt.rb +86 -86
  72. data/lib/axlsx/stylesheet/pattern_fill.rb +73 -73
  73. data/lib/axlsx/stylesheet/styles.rb +494 -420
  74. data/lib/axlsx/stylesheet/table_style.rb +54 -54
  75. data/lib/axlsx/stylesheet/table_style_element.rb +77 -77
  76. data/lib/axlsx/stylesheet/table_styles.rb +46 -46
  77. data/lib/axlsx/stylesheet/xf.rb +147 -147
  78. data/lib/axlsx/util/accessors.rb +64 -64
  79. data/lib/axlsx/util/constants.rb +410 -401
  80. data/lib/axlsx/util/mime_type_utils.rb +11 -11
  81. data/lib/axlsx/util/options_parser.rb +16 -16
  82. data/lib/axlsx/util/serialized_attributes.rb +89 -89
  83. data/lib/axlsx/util/simple_typed_list.rb +179 -179
  84. data/lib/axlsx/util/storage.rb +146 -146
  85. data/lib/axlsx/util/validators.rb +312 -312
  86. data/lib/axlsx/util/zip_command.rb +73 -73
  87. data/lib/axlsx/version.rb +5 -5
  88. data/lib/axlsx/workbook/defined_name.rb +128 -128
  89. data/lib/axlsx/workbook/defined_names.rb +21 -21
  90. data/lib/axlsx/workbook/shared_strings_table.rb +77 -77
  91. data/lib/axlsx/workbook/workbook.rb +395 -370
  92. data/lib/axlsx/workbook/workbook_view.rb +80 -80
  93. data/lib/axlsx/workbook/workbook_views.rb +22 -22
  94. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -77
  95. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
  96. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -244
  97. data/lib/axlsx/workbook/worksheet/break.rb +35 -35
  98. data/lib/axlsx/workbook/worksheet/cell.rb +506 -505
  99. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
  100. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
  101. data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -18
  102. data/lib/axlsx/workbook/worksheet/col.rb +145 -145
  103. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
  104. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
  105. data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
  106. data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
  107. data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
  108. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
  109. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
  110. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
  111. data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
  112. data/lib/axlsx/workbook/worksheet/data_validation.rb +246 -246
  113. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
  114. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
  115. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
  116. data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
  117. data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
  118. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
  119. data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
  120. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
  121. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
  122. data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
  123. data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
  124. data/lib/axlsx/workbook/worksheet/pivot_table.rb +296 -289
  125. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
  126. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
  127. data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
  128. data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
  129. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
  130. data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
  131. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
  132. data/lib/axlsx/workbook/worksheet/row.rb +164 -162
  133. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
  134. data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
  135. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
  136. data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
  137. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
  138. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
  139. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
  140. data/lib/axlsx/workbook/worksheet/table.rb +102 -102
  141. data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
  142. data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
  143. data/lib/axlsx/workbook/worksheet/worksheet.rb +786 -764
  144. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
  145. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
  146. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
  147. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
  148. data/lib/axlsx.rb +185 -170
  149. data/lib/caxlsx.rb +2 -2
  150. data/lib/schema/dc.xsd +118 -118
  151. data/lib/schema/dcmitype.xsd +51 -51
  152. data/lib/schema/dcterms.xsd +331 -331
  153. data/lib/schema/dml-chartDrawing.xsd +146 -146
  154. data/lib/schema/dml-compatibility.xsd +14 -14
  155. data/lib/schema/dml-lockedCanvas.xsd +11 -11
  156. data/lib/schema/dml-main.xsd +3048 -3048
  157. data/lib/schema/dml-picture.xsd +23 -23
  158. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
  159. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
  160. data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
  161. data/lib/schema/shared-bibliography.xsd +144 -144
  162. data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
  163. data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
  164. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
  165. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
  166. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
  167. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
  168. data/lib/schema/shared-relationshipReference.xsd +25 -25
  169. data/lib/schema/vml-main.xsd +569 -569
  170. data/lib/schema/vml-officeDrawing.xsd +509 -509
  171. data/lib/schema/vml-presentationDrawing.xsd +12 -12
  172. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
  173. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
  174. data/lib/schema/xml.xsd +116 -116
  175. data/test/benchmark.rb +72 -72
  176. data/test/content_type/tc_content_type.rb +76 -76
  177. data/test/content_type/tc_default.rb +16 -16
  178. data/test/content_type/tc_override.rb +14 -14
  179. data/test/doc_props/tc_app.rb +43 -43
  180. data/test/doc_props/tc_core.rb +42 -42
  181. data/test/drawing/tc_area_chart.rb +39 -39
  182. data/test/drawing/tc_area_series.rb +71 -71
  183. data/test/drawing/tc_axes.rb +7 -7
  184. data/test/drawing/tc_axis.rb +112 -112
  185. data/test/drawing/tc_bar_3D_chart.rb +86 -71
  186. data/test/drawing/tc_bar_chart.rb +86 -71
  187. data/test/drawing/tc_bar_series.rb +46 -37
  188. data/test/drawing/tc_bubble_chart.rb +44 -44
  189. data/test/drawing/tc_bubble_series.rb +21 -21
  190. data/test/drawing/tc_cat_axis.rb +31 -31
  191. data/test/drawing/tc_cat_axis_data.rb +27 -27
  192. data/test/drawing/tc_chart.rb +123 -123
  193. data/test/drawing/tc_d_lbls.rb +57 -57
  194. data/test/drawing/tc_data_source.rb +23 -23
  195. data/test/drawing/tc_drawing.rb +80 -80
  196. data/test/drawing/tc_graphic_frame.rb +27 -27
  197. data/test/drawing/tc_hyperlink.rb +64 -64
  198. data/test/drawing/tc_line_3d_chart.rb +47 -47
  199. data/test/drawing/tc_line_chart.rb +39 -39
  200. data/test/drawing/tc_line_series.rb +71 -71
  201. data/test/drawing/tc_marker.rb +44 -44
  202. data/test/drawing/tc_named_axis_data.rb +27 -27
  203. data/test/drawing/tc_num_data.rb +31 -31
  204. data/test/drawing/tc_num_val.rb +29 -29
  205. data/test/drawing/tc_one_cell_anchor.rb +66 -66
  206. data/test/drawing/tc_pic.rb +103 -103
  207. data/test/drawing/tc_picture_locking.rb +72 -72
  208. data/test/drawing/tc_pie_3D_chart.rb +28 -28
  209. data/test/drawing/tc_pie_series.rb +33 -33
  210. data/test/drawing/tc_scaling.rb +36 -36
  211. data/test/drawing/tc_scatter_chart.rb +48 -48
  212. data/test/drawing/tc_scatter_series.rb +74 -56
  213. data/test/drawing/tc_ser_axis.rb +31 -31
  214. data/test/drawing/tc_series.rb +23 -23
  215. data/test/drawing/tc_series_title.rb +54 -54
  216. data/test/drawing/tc_str_data.rb +18 -18
  217. data/test/drawing/tc_str_val.rb +30 -30
  218. data/test/drawing/tc_title.rb +70 -70
  219. data/test/drawing/tc_two_cell_anchor.rb +36 -36
  220. data/test/drawing/tc_val_axis.rb +24 -24
  221. data/test/drawing/tc_view_3D.rb +54 -54
  222. data/test/drawing/tc_vml_drawing.rb +25 -25
  223. data/test/drawing/tc_vml_shape.rb +106 -106
  224. data/test/profile.rb +24 -24
  225. data/test/rels/tc_relationship.rb +52 -52
  226. data/test/rels/tc_relationships.rb +37 -37
  227. data/test/stylesheet/tc_border.rb +37 -37
  228. data/test/stylesheet/tc_border_pr.rb +32 -32
  229. data/test/stylesheet/tc_cell_alignment.rb +81 -81
  230. data/test/stylesheet/tc_cell_protection.rb +29 -29
  231. data/test/stylesheet/tc_cell_style.rb +57 -57
  232. data/test/stylesheet/tc_color.rb +43 -43
  233. data/test/stylesheet/tc_dxf.rb +81 -81
  234. data/test/stylesheet/tc_fill.rb +18 -18
  235. data/test/stylesheet/tc_font.rb +133 -133
  236. data/test/stylesheet/tc_gradient_fill.rb +72 -72
  237. data/test/stylesheet/tc_gradient_stop.rb +31 -31
  238. data/test/stylesheet/tc_num_fmt.rb +30 -30
  239. data/test/stylesheet/tc_pattern_fill.rb +43 -43
  240. data/test/stylesheet/tc_styles.rb +309 -261
  241. data/test/stylesheet/tc_table_style.rb +44 -44
  242. data/test/stylesheet/tc_table_style_element.rb +45 -45
  243. data/test/stylesheet/tc_table_styles.rb +29 -29
  244. data/test/stylesheet/tc_xf.rb +120 -120
  245. data/test/tc_axlsx.rb +109 -109
  246. data/test/tc_helper.rb +10 -12
  247. data/test/tc_package.rb +317 -264
  248. data/test/util/tc_mime_type_utils.rb +13 -13
  249. data/test/util/tc_serialized_attributes.rb +19 -19
  250. data/test/util/tc_simple_typed_list.rb +77 -77
  251. data/test/util/tc_validators.rb +210 -210
  252. data/test/workbook/tc_defined_name.rb +49 -49
  253. data/test/workbook/tc_shared_strings_table.rb +59 -59
  254. data/test/workbook/tc_workbook.rb +165 -160
  255. data/test/workbook/tc_workbook_view.rb +50 -50
  256. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -38
  257. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -76
  258. data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -50
  259. data/test/workbook/worksheet/tc_break.rb +49 -49
  260. data/test/workbook/worksheet/tc_cell.rb +465 -453
  261. data/test/workbook/worksheet/tc_cfvo.rb +31 -31
  262. data/test/workbook/worksheet/tc_col.rb +93 -93
  263. data/test/workbook/worksheet/tc_color_scale.rb +58 -58
  264. data/test/workbook/worksheet/tc_comment.rb +72 -72
  265. data/test/workbook/worksheet/tc_comments.rb +57 -57
  266. data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -224
  267. data/test/workbook/worksheet/tc_data_bar.rb +46 -46
  268. data/test/workbook/worksheet/tc_data_validation.rb +265 -265
  269. data/test/workbook/worksheet/tc_date_time_converter.rb +124 -124
  270. data/test/workbook/worksheet/tc_header_footer.rb +151 -151
  271. data/test/workbook/worksheet/tc_icon_set.rb +45 -45
  272. data/test/workbook/worksheet/tc_outline_pr.rb +19 -19
  273. data/test/workbook/worksheet/tc_page_margins.rb +97 -97
  274. data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -15
  275. data/test/workbook/worksheet/tc_page_setup.rb +143 -143
  276. data/test/workbook/worksheet/tc_pane.rb +54 -54
  277. data/test/workbook/worksheet/tc_pivot_table.rb +180 -135
  278. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +62 -54
  279. data/test/workbook/worksheet/tc_print_options.rb +72 -72
  280. data/test/workbook/worksheet/tc_protected_range.rb +17 -17
  281. data/test/workbook/worksheet/tc_rich_text.rb +44 -44
  282. data/test/workbook/worksheet/tc_rich_text_run.rb +173 -173
  283. data/test/workbook/worksheet/tc_row.rb +160 -139
  284. data/test/workbook/worksheet/tc_selection.rb +55 -55
  285. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -18
  286. data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -88
  287. data/test/workbook/worksheet/tc_sheet_pr.rb +49 -49
  288. data/test/workbook/worksheet/tc_sheet_protection.rb +117 -117
  289. data/test/workbook/worksheet/tc_sheet_view.rb +214 -214
  290. data/test/workbook/worksheet/tc_table.rb +77 -67
  291. data/test/workbook/worksheet/tc_table_style_info.rb +53 -53
  292. data/test/workbook/worksheet/tc_worksheet.rb +632 -601
  293. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -55
  294. metadata +11 -11
@@ -1,43 +1,43 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestApp < Test::Unit::TestCase
4
- def setup
5
- options = {
6
- :'Template' => 'Foo.xlt',
7
- :'Manager' => 'Penny',
8
- :'Company' => "Bob's Repair",
9
- :'Pages' => 1,
10
- :'Words' => 2,
11
- :'Characters' => 7,
12
- :'PresentationFormat' => 'any',
13
- :'Lines' => 1,
14
- :'Paragraphs' => 1,
15
- :'Slides' => 4,
16
- :'Notes' => 1,
17
- :'TotalTime' => 2,
18
- :'HidddenSlides' => 3,
19
- :'MMClips' => 10,
20
- :'ScaleCrop' => true,
21
- :'LinksUpToDate' => true,
22
- :'CharactersWithSpaces' => 9,
23
- :'SharedDoc' => false,
24
- :'HyperlinkBase' => 'foo',
25
- :'HyperlInksChanged' => false,
26
- :'Application' => 'axlsx',
27
- :'AppVersion' => '1.1.5',
28
- :'DocSecurity' => 0
29
- }
30
-
31
- @app = Axlsx::App.new options
32
-
33
- end
34
- def test_valid_document
35
- schema = Nokogiri::XML::Schema(File.open(Axlsx::APP_XSD))
36
- doc = Nokogiri::XML(@app.to_xml_string)
37
- errors = []
38
- schema.validate(doc).each do |error|
39
- errors << error
40
- end
41
- assert_equal(errors.size, 0, "app.xml invalid" + errors.map{ |e| e.message }.to_s)
42
- end
43
- end
1
+ require 'tc_helper.rb'
2
+
3
+ class TestApp < Test::Unit::TestCase
4
+ def setup
5
+ options = {
6
+ :'Template' => 'Foo.xlt',
7
+ :'Manager' => 'Penny',
8
+ :'Company' => "Bob's Repair",
9
+ :'Pages' => 1,
10
+ :'Words' => 2,
11
+ :'Characters' => 7,
12
+ :'PresentationFormat' => 'any',
13
+ :'Lines' => 1,
14
+ :'Paragraphs' => 1,
15
+ :'Slides' => 4,
16
+ :'Notes' => 1,
17
+ :'TotalTime' => 2,
18
+ :'HidddenSlides' => 3,
19
+ :'MMClips' => 10,
20
+ :'ScaleCrop' => true,
21
+ :'LinksUpToDate' => true,
22
+ :'CharactersWithSpaces' => 9,
23
+ :'SharedDoc' => false,
24
+ :'HyperlinkBase' => 'foo',
25
+ :'HyperlInksChanged' => false,
26
+ :'Application' => 'axlsx',
27
+ :'AppVersion' => '1.1.5',
28
+ :'DocSecurity' => 0
29
+ }
30
+
31
+ @app = Axlsx::App.new options
32
+
33
+ end
34
+ def test_valid_document
35
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::APP_XSD))
36
+ doc = Nokogiri::XML(@app.to_xml_string)
37
+ errors = []
38
+ schema.validate(doc).each do |error|
39
+ errors << error
40
+ end
41
+ assert_equal(errors.size, 0, "app.xml invalid" + errors.map{ |e| e.message }.to_s)
42
+ end
43
+ end
@@ -1,42 +1,42 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestCore < Test::Unit::TestCase
4
-
5
- def setup
6
- @core = Axlsx::Core.new
7
- # could still see some false positives if the second changes between the next two calls
8
- @time = Time.now.strftime('%Y-%m-%dT%H:%M:%SZ')
9
- @doc = Nokogiri::XML(@core.to_xml_string)
10
- end
11
-
12
- def test_valid_document
13
- schema = Nokogiri::XML::Schema(File.open(Axlsx::CORE_XSD))
14
- errors = []
15
- schema.validate(@doc).each do |error|
16
- puts error.message
17
- errors << error
18
- end
19
- assert_equal(errors.size, 0, "core.xml Invalid" + errors.map{ |e| e.message }.to_s)
20
- end
21
-
22
- def test_populates_created
23
- assert_equal(@doc.xpath('//dcterms:created').text, @time, "dcterms:created incorrect")
24
- end
25
-
26
- def test_created_as_option
27
- time = Time.utc(2013, 1, 1, 12, 00)
28
- c = Axlsx::Core.new :created => time
29
- doc = Nokogiri::XML(c.to_xml_string)
30
- assert_equal(doc.xpath('//dcterms:created').text, time.xmlschema, "dcterms:created incorrect")
31
- end
32
-
33
- def test_populates_default_name
34
- assert_equal(@doc.xpath('//dc:creator').text, "axlsx", "Default name not populated")
35
- end
36
-
37
- def test_creator_as_option
38
- c = Axlsx::Core.new :creator => "some guy"
39
- doc = Nokogiri::XML(c.to_xml_string)
40
- assert(doc.xpath('//dc:creator').text == "some guy")
41
- end
42
- end
1
+ require 'tc_helper.rb'
2
+
3
+ class TestCore < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @core = Axlsx::Core.new
7
+ # could still see some false positives if the second changes between the next two calls
8
+ @time = Time.now.strftime('%Y-%m-%dT%H:%M:%SZ')
9
+ @doc = Nokogiri::XML(@core.to_xml_string)
10
+ end
11
+
12
+ def test_valid_document
13
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::CORE_XSD))
14
+ errors = []
15
+ schema.validate(@doc).each do |error|
16
+ puts error.message
17
+ errors << error
18
+ end
19
+ assert_equal(errors.size, 0, "core.xml Invalid" + errors.map{ |e| e.message }.to_s)
20
+ end
21
+
22
+ def test_populates_created
23
+ assert_equal(@doc.xpath('//dcterms:created').text, @time, "dcterms:created incorrect")
24
+ end
25
+
26
+ def test_created_as_option
27
+ time = Time.utc(2013, 1, 1, 12, 00)
28
+ c = Axlsx::Core.new :created => time
29
+ doc = Nokogiri::XML(c.to_xml_string)
30
+ assert_equal(doc.xpath('//dcterms:created').text, time.xmlschema, "dcterms:created incorrect")
31
+ end
32
+
33
+ def test_populates_default_name
34
+ assert_equal(@doc.xpath('//dc:creator').text, "axlsx", "Default name not populated")
35
+ end
36
+
37
+ def test_creator_as_option
38
+ c = Axlsx::Core.new :creator => "some guy"
39
+ doc = Nokogiri::XML(c.to_xml_string)
40
+ assert(doc.xpath('//dc:creator').text == "some guy")
41
+ end
42
+ end
@@ -1,39 +1,39 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestAreaChart < Test::Unit::TestCase
4
-
5
- def setup
6
- @p = Axlsx::Package.new
7
- ws = @p.workbook.add_worksheet
8
- @row = ws.add_row ["one", 1, Time.now]
9
- @chart = ws.add_chart Axlsx::AreaChart, :title => "fishery"
10
- end
11
-
12
- def teardown
13
- end
14
-
15
- def test_initialization
16
- assert_equal(@chart.grouping, :standard, "grouping defualt incorrect")
17
- assert_equal(@chart.series_type, Axlsx::AreaSeries, "series type incorrect")
18
- assert(@chart.cat_axis.is_a?(Axlsx::CatAxis), "category axis not created")
19
- assert(@chart.val_axis.is_a?(Axlsx::ValAxis), "value access not created")
20
- end
21
-
22
- def test_grouping
23
- assert_raise(ArgumentError, "require valid grouping") { @chart.grouping = :inverted }
24
- assert_nothing_raised("allow valid grouping") { @chart.grouping = :stacked }
25
- assert(@chart.grouping == :stacked)
26
- end
27
-
28
- def test_to_xml
29
- schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
30
- doc = Nokogiri::XML(@chart.to_xml_string)
31
- errors = []
32
- schema.validate(doc).each do |error|
33
- errors.push error
34
- puts error.message
35
- end
36
- assert(errors.empty?, "error free validation")
37
- end
38
-
39
- end
1
+ require 'tc_helper.rb'
2
+
3
+ class TestAreaChart < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @p = Axlsx::Package.new
7
+ ws = @p.workbook.add_worksheet
8
+ @row = ws.add_row ["one", 1, Time.now]
9
+ @chart = ws.add_chart Axlsx::AreaChart, :title => "fishery"
10
+ end
11
+
12
+ def teardown
13
+ end
14
+
15
+ def test_initialization
16
+ assert_equal(@chart.grouping, :standard, "grouping defualt incorrect")
17
+ assert_equal(@chart.series_type, Axlsx::AreaSeries, "series type incorrect")
18
+ assert(@chart.cat_axis.is_a?(Axlsx::CatAxis), "category axis not created")
19
+ assert(@chart.val_axis.is_a?(Axlsx::ValAxis), "value access not created")
20
+ end
21
+
22
+ def test_grouping
23
+ assert_raise(ArgumentError, "require valid grouping") { @chart.grouping = :inverted }
24
+ assert_nothing_raised("allow valid grouping") { @chart.grouping = :stacked }
25
+ assert(@chart.grouping == :stacked)
26
+ end
27
+
28
+ def test_to_xml
29
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
30
+ doc = Nokogiri::XML(@chart.to_xml_string)
31
+ errors = []
32
+ schema.validate(doc).each do |error|
33
+ errors.push error
34
+ puts error.message
35
+ end
36
+ assert(errors.empty?, "error free validation")
37
+ end
38
+
39
+ end
@@ -1,71 +1,71 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestAreaSeries < Test::Unit::TestCase
4
-
5
- def setup
6
- p = Axlsx::Package.new
7
- @ws = p.workbook.add_worksheet :name=>"hmmm"
8
- chart = @ws.add_chart Axlsx::AreaChart, :title => "fishery"
9
- @series = chart.add_series(
10
- :data => [0,1,2],
11
- :labels => ["zero", "one", "two"],
12
- :title => "bob",
13
- :color => "#FF0000",
14
- :show_marker => true,
15
- :smooth => true
16
- )
17
- end
18
-
19
- def test_initialize
20
- assert_equal(@series.title.text, "bob", "series title has been applied")
21
- assert_equal(@series.labels.class, Axlsx::AxDataSource)
22
- assert_equal(@series.data.class, Axlsx::NumDataSource)
23
- end
24
-
25
- def test_show_marker
26
- assert_equal(true, @series.show_marker)
27
- @series.show_marker = false
28
- assert_equal(false, @series.show_marker)
29
- end
30
-
31
- def test_smooth
32
- assert_equal(true, @series.smooth)
33
- @series.smooth = false
34
- assert_equal(false, @series.smooth)
35
- end
36
-
37
- def test_marker_symbol
38
- assert_equal(:default, @series.marker_symbol)
39
- @series.marker_symbol = :circle
40
- assert_equal(:circle, @series.marker_symbol)
41
- end
42
-
43
- def test_to_xml_string
44
- doc = Nokogiri::XML(wrap_with_namespaces(@series))
45
- assert(doc.xpath("//srgbClr[@val='#{@series.color}']"))
46
- assert_equal(xpath_with_namespaces(doc, "//c:marker").size, 0)
47
- assert(doc.xpath("//smooth"))
48
-
49
- @series.marker_symbol = :diamond
50
- doc = Nokogiri::XML(wrap_with_namespaces(@series))
51
- assert_equal(xpath_with_namespaces(doc, "//c:marker/c:symbol[@val='diamond']").size, 1)
52
-
53
- @series.show_marker = false
54
- doc = Nokogiri::XML(wrap_with_namespaces(@series))
55
- assert_equal(xpath_with_namespaces(doc, "//c:marker/c:symbol[@val='none']").size, 1)
56
- end
57
-
58
- def wrap_with_namespaces(series)
59
- '<c:chartSpace xmlns:c="' <<
60
- Axlsx::XML_NS_C <<
61
- '" xmlns:a="' <<
62
- Axlsx::XML_NS_A <<
63
- '">' <<
64
- series.to_xml_string <<
65
- '</c:chartSpace>'
66
- end
67
-
68
- def xpath_with_namespaces(doc, xpath)
69
- doc.xpath(xpath, "a" => Axlsx::XML_NS_A, "c" => Axlsx::XML_NS_C)
70
- end
71
- end
1
+ require 'tc_helper.rb'
2
+
3
+ class TestAreaSeries < Test::Unit::TestCase
4
+
5
+ def setup
6
+ p = Axlsx::Package.new
7
+ @ws = p.workbook.add_worksheet :name=>"hmmm"
8
+ chart = @ws.add_chart Axlsx::AreaChart, :title => "fishery"
9
+ @series = chart.add_series(
10
+ :data => [0,1,2],
11
+ :labels => ["zero", "one", "two"],
12
+ :title => "bob",
13
+ :color => "#FF0000",
14
+ :show_marker => true,
15
+ :smooth => true
16
+ )
17
+ end
18
+
19
+ def test_initialize
20
+ assert_equal(@series.title.text, "bob", "series title has been applied")
21
+ assert_equal(@series.labels.class, Axlsx::AxDataSource)
22
+ assert_equal(@series.data.class, Axlsx::NumDataSource)
23
+ end
24
+
25
+ def test_show_marker
26
+ assert_equal(true, @series.show_marker)
27
+ @series.show_marker = false
28
+ assert_equal(false, @series.show_marker)
29
+ end
30
+
31
+ def test_smooth
32
+ assert_equal(true, @series.smooth)
33
+ @series.smooth = false
34
+ assert_equal(false, @series.smooth)
35
+ end
36
+
37
+ def test_marker_symbol
38
+ assert_equal(:default, @series.marker_symbol)
39
+ @series.marker_symbol = :circle
40
+ assert_equal(:circle, @series.marker_symbol)
41
+ end
42
+
43
+ def test_to_xml_string
44
+ doc = Nokogiri::XML(wrap_with_namespaces(@series))
45
+ assert(doc.xpath("//srgbClr[@val='#{@series.color}']"))
46
+ assert_equal(xpath_with_namespaces(doc, "//c:marker").size, 0)
47
+ assert(doc.xpath("//smooth"))
48
+
49
+ @series.marker_symbol = :diamond
50
+ doc = Nokogiri::XML(wrap_with_namespaces(@series))
51
+ assert_equal(xpath_with_namespaces(doc, "//c:marker/c:symbol[@val='diamond']").size, 1)
52
+
53
+ @series.show_marker = false
54
+ doc = Nokogiri::XML(wrap_with_namespaces(@series))
55
+ assert_equal(xpath_with_namespaces(doc, "//c:marker/c:symbol[@val='none']").size, 1)
56
+ end
57
+
58
+ def wrap_with_namespaces(series)
59
+ '<c:chartSpace xmlns:c="' <<
60
+ Axlsx::XML_NS_C <<
61
+ '" xmlns:a="' <<
62
+ Axlsx::XML_NS_A <<
63
+ '">' <<
64
+ series.to_xml_string <<
65
+ '</c:chartSpace>'
66
+ end
67
+
68
+ def xpath_with_namespaces(doc, xpath)
69
+ doc.xpath(xpath, "a" => Axlsx::XML_NS_A, "c" => Axlsx::XML_NS_C)
70
+ end
71
+ end
@@ -1,8 +1,8 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestAxes < Test::Unit::TestCase
4
- def test_constructor_requires_cat_axis_first
5
- assert_raise(ArgumentError) { Axlsx::Axes.new(:val_axis => Axlsx::ValAxis, :cat_axis => Axlsx::CatAxis) }
6
- assert_nothing_raised { Axlsx::Axes.new(:cat_axis => Axlsx::CatAxis, :val_axis => Axlsx::ValAxis) }
7
- end
1
+ require 'tc_helper.rb'
2
+
3
+ class TestAxes < Test::Unit::TestCase
4
+ def test_constructor_requires_cat_axis_first
5
+ assert_raise(ArgumentError) { Axlsx::Axes.new(:val_axis => Axlsx::ValAxis, :cat_axis => Axlsx::CatAxis) }
6
+ assert_nothing_raised { Axlsx::Axes.new(:cat_axis => Axlsx::CatAxis, :val_axis => Axlsx::ValAxis) }
7
+ end
8
8
  end
@@ -1,112 +1,112 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestAxis < Test::Unit::TestCase
4
- def setup
5
- @axis = Axlsx::Axis.new :gridlines => false, :title => 'Foo'
6
- end
7
-
8
-
9
- def test_initialization
10
- assert_equal(@axis.ax_pos, :b, "axis position default incorrect")
11
- assert_equal(@axis.tick_lbl_pos, :nextTo, "tick label position default incorrect")
12
- assert_equal(@axis.tick_lbl_pos, :nextTo, "tick label position default incorrect")
13
- assert_equal(@axis.crosses, :autoZero, "tick label position default incorrect")
14
- assert(@axis.scaling.is_a?(Axlsx::Scaling) && @axis.scaling.orientation == :minMax, "scaling default incorrect")
15
- assert_equal('Foo', @axis.title.text)
16
- end
17
-
18
- def test_color
19
- @axis.color = "00FF00"
20
- @axis.cross_axis = Axlsx::CatAxis.new
21
- str = '<?xml version="1.0" encoding="UTF-8"?>'
22
- str << '<c:chartSpace xmlns:c="' << Axlsx::XML_NS_C << '" xmlns:a="' << Axlsx::XML_NS_A << '">'
23
- doc = Nokogiri::XML(@axis.to_xml_string(str))
24
- assert(doc.xpath("//a:srgbClr[@val='00FF00']"))
25
- end
26
-
27
- def test_cell_based_axis_title
28
- p = Axlsx::Package.new
29
- p.workbook.add_worksheet(:name=>'foosheet') do |sheet|
30
- sheet.add_row ['battle victories']
31
- sheet.add_row ['bird', 1, 2, 1]
32
- sheet.add_row ['cat', 7, 9, 10]
33
- sheet.add_chart(Axlsx::Line3DChart) do |chart|
34
- chart.add_series :data => sheet['B2:D2'], :labels => sheet['B1']
35
- chart.val_axis.title = sheet['A1']
36
- assert_equal('battle victories', chart.val_axis.title.text)
37
- end
38
- end
39
- end
40
-
41
- def test_axis_position
42
- assert_raise(ArgumentError, "requires valid axis position") { @axis.ax_pos = :nowhere }
43
- assert_nothing_raised("accepts valid axis position") { @axis.ax_pos = :r }
44
- end
45
-
46
- def test_label_rotation
47
- assert_raise(ArgumentError, "requires valid angle") { @axis.label_rotation = :nowhere }
48
- assert_raise(ArgumentError, "requires valid angle") { @axis.label_rotation = 91 }
49
- assert_raise(ArgumentError, "requires valid angle") { @axis.label_rotation = -91 }
50
- assert_nothing_raised("accepts valid angle") { @axis.label_rotation = 45 }
51
- assert_equal(@axis.label_rotation, 45 * 60000)
52
- end
53
-
54
- def test_tick_label_position
55
- assert_raise(ArgumentError, "requires valid tick label position") { @axis.tick_lbl_pos = :nowhere }
56
- assert_nothing_raised("accepts valid tick label position") { @axis.tick_lbl_pos = :high }
57
- end
58
-
59
- def test_format_code
60
- assert_raise(ArgumentError, "requires valid format code") { @axis.format_code = :high }
61
- assert_nothing_raised("accepts valid format code") { @axis.format_code = "00.##" }
62
- end
63
-
64
- def create_chart_with_formatting(format_string=nil)
65
- p = Axlsx::Package.new
66
- p.workbook.add_worksheet(:name => "Formatting Test") do |sheet|
67
- sheet.add_row(['test', 20])
68
- sheet.add_chart(Axlsx::Bar3DChart, :start_at => [0,5], :end_at => [10, 20], :title => "Test Formatting") do |chart|
69
- chart.add_series :data => sheet["B1:B1"], :labels => sheet["A1:A1"]
70
- chart.val_axis.format_code = format_string if format_string
71
- doc = Nokogiri::XML(chart.to_xml_string)
72
- yield doc
73
- end
74
- end
75
- end
76
-
77
- def test_format_code_resets_source_linked
78
- create_chart_with_formatting("#,##0.00") do |doc|
79
- assert_equal(doc.xpath("//c:valAx/c:numFmt[@formatCode='#,##0.00']").size, 1)
80
- assert_equal(doc.xpath("//c:valAx/c:numFmt[@sourceLinked='0']").size, 1)
81
- end
82
- end
83
-
84
- def test_no_format_code_keeps_source_linked
85
- create_chart_with_formatting do |doc|
86
- assert_equal(doc.xpath("//c:valAx/c:numFmt[@formatCode='General']").size, 1)
87
- assert_equal(doc.xpath("//c:valAx/c:numFmt[@sourceLinked='1']").size, 1)
88
- end
89
- end
90
-
91
- def test_crosses
92
- assert_raise(ArgumentError, "requires valid crosses") { @axis.crosses = 1 }
93
- assert_nothing_raised("accepts valid crosses") { @axis.crosses = :min }
94
- end
95
-
96
- def test_gridlines
97
- assert_raise(ArgumentError, "requires valid gridlines") { @axis.gridlines = 'alice' }
98
- assert_nothing_raised("accepts valid crosses") { @axis.gridlines = false }
99
- end
100
-
101
- def test_to_xml_string
102
- @axis.cross_axis = Axlsx::CatAxis.new
103
- str = '<?xml version="1.0" encoding="UTF-8"?>'
104
- str << '<c:chartSpace xmlns:c="' << Axlsx::XML_NS_C << '" xmlns:a="' << Axlsx::XML_NS_A << '">'
105
- doc = Nokogiri::XML(@axis.to_xml_string(str))
106
- assert(doc.xpath('//a:noFill'))
107
- assert(doc.xpath("//c:crosses[@val='#{@axis.crosses.to_s}']"))
108
- assert(doc.xpath("//c:crossAx[@val='#{@axis.cross_axis.to_s}']"))
109
- assert(doc.xpath("//a:bodyPr[@rot='#{@axis.label_rotation.to_s}']"))
110
- assert(doc.xpath("//a:t[text()='Foo']"))
111
- end
112
- end
1
+ require 'tc_helper.rb'
2
+
3
+ class TestAxis < Test::Unit::TestCase
4
+ def setup
5
+ @axis = Axlsx::Axis.new :gridlines => false, :title => 'Foo'
6
+ end
7
+
8
+
9
+ def test_initialization
10
+ assert_equal(@axis.ax_pos, :b, "axis position default incorrect")
11
+ assert_equal(@axis.tick_lbl_pos, :nextTo, "tick label position default incorrect")
12
+ assert_equal(@axis.tick_lbl_pos, :nextTo, "tick label position default incorrect")
13
+ assert_equal(@axis.crosses, :autoZero, "tick label position default incorrect")
14
+ assert(@axis.scaling.is_a?(Axlsx::Scaling) && @axis.scaling.orientation == :minMax, "scaling default incorrect")
15
+ assert_equal('Foo', @axis.title.text)
16
+ end
17
+
18
+ def test_color
19
+ @axis.color = "00FF00"
20
+ @axis.cross_axis = Axlsx::CatAxis.new
21
+ str = '<?xml version="1.0" encoding="UTF-8"?>'
22
+ str << '<c:chartSpace xmlns:c="' << Axlsx::XML_NS_C << '" xmlns:a="' << Axlsx::XML_NS_A << '">'
23
+ doc = Nokogiri::XML(@axis.to_xml_string(str))
24
+ assert(doc.xpath("//a:srgbClr[@val='00FF00']"))
25
+ end
26
+
27
+ def test_cell_based_axis_title
28
+ p = Axlsx::Package.new
29
+ p.workbook.add_worksheet(:name=>'foosheet') do |sheet|
30
+ sheet.add_row ['battle victories']
31
+ sheet.add_row ['bird', 1, 2, 1]
32
+ sheet.add_row ['cat', 7, 9, 10]
33
+ sheet.add_chart(Axlsx::Line3DChart) do |chart|
34
+ chart.add_series :data => sheet['B2:D2'], :labels => sheet['B1']
35
+ chart.val_axis.title = sheet['A1']
36
+ assert_equal('battle victories', chart.val_axis.title.text)
37
+ end
38
+ end
39
+ end
40
+
41
+ def test_axis_position
42
+ assert_raise(ArgumentError, "requires valid axis position") { @axis.ax_pos = :nowhere }
43
+ assert_nothing_raised("accepts valid axis position") { @axis.ax_pos = :r }
44
+ end
45
+
46
+ def test_label_rotation
47
+ assert_raise(ArgumentError, "requires valid angle") { @axis.label_rotation = :nowhere }
48
+ assert_raise(ArgumentError, "requires valid angle") { @axis.label_rotation = 91 }
49
+ assert_raise(ArgumentError, "requires valid angle") { @axis.label_rotation = -91 }
50
+ assert_nothing_raised("accepts valid angle") { @axis.label_rotation = 45 }
51
+ assert_equal(@axis.label_rotation, 45 * 60000)
52
+ end
53
+
54
+ def test_tick_label_position
55
+ assert_raise(ArgumentError, "requires valid tick label position") { @axis.tick_lbl_pos = :nowhere }
56
+ assert_nothing_raised("accepts valid tick label position") { @axis.tick_lbl_pos = :high }
57
+ end
58
+
59
+ def test_format_code
60
+ assert_raise(ArgumentError, "requires valid format code") { @axis.format_code = :high }
61
+ assert_nothing_raised("accepts valid format code") { @axis.format_code = "00.##" }
62
+ end
63
+
64
+ def create_chart_with_formatting(format_string=nil)
65
+ p = Axlsx::Package.new
66
+ p.workbook.add_worksheet(:name => "Formatting Test") do |sheet|
67
+ sheet.add_row(['test', 20])
68
+ sheet.add_chart(Axlsx::Bar3DChart, :start_at => [0,5], :end_at => [10, 20], :title => "Test Formatting") do |chart|
69
+ chart.add_series :data => sheet["B1:B1"], :labels => sheet["A1:A1"]
70
+ chart.val_axis.format_code = format_string if format_string
71
+ doc = Nokogiri::XML(chart.to_xml_string)
72
+ yield doc
73
+ end
74
+ end
75
+ end
76
+
77
+ def test_format_code_resets_source_linked
78
+ create_chart_with_formatting("#,##0.00") do |doc|
79
+ assert_equal(doc.xpath("//c:valAx/c:numFmt[@formatCode='#,##0.00']").size, 1)
80
+ assert_equal(doc.xpath("//c:valAx/c:numFmt[@sourceLinked='0']").size, 1)
81
+ end
82
+ end
83
+
84
+ def test_no_format_code_keeps_source_linked
85
+ create_chart_with_formatting do |doc|
86
+ assert_equal(doc.xpath("//c:valAx/c:numFmt[@formatCode='General']").size, 1)
87
+ assert_equal(doc.xpath("//c:valAx/c:numFmt[@sourceLinked='1']").size, 1)
88
+ end
89
+ end
90
+
91
+ def test_crosses
92
+ assert_raise(ArgumentError, "requires valid crosses") { @axis.crosses = 1 }
93
+ assert_nothing_raised("accepts valid crosses") { @axis.crosses = :min }
94
+ end
95
+
96
+ def test_gridlines
97
+ assert_raise(ArgumentError, "requires valid gridlines") { @axis.gridlines = 'alice' }
98
+ assert_nothing_raised("accepts valid crosses") { @axis.gridlines = false }
99
+ end
100
+
101
+ def test_to_xml_string
102
+ @axis.cross_axis = Axlsx::CatAxis.new
103
+ str = '<?xml version="1.0" encoding="UTF-8"?>'
104
+ str << '<c:chartSpace xmlns:c="' << Axlsx::XML_NS_C << '" xmlns:a="' << Axlsx::XML_NS_A << '">'
105
+ doc = Nokogiri::XML(@axis.to_xml_string(str))
106
+ assert(doc.xpath('//a:noFill'))
107
+ assert(doc.xpath("//c:crosses[@val='#{@axis.crosses.to_s}']"))
108
+ assert(doc.xpath("//c:crossAx[@val='#{@axis.cross_axis.to_s}']"))
109
+ assert(doc.xpath("//a:bodyPr[@rot='#{@axis.label_rotation.to_s}']"))
110
+ assert(doc.xpath("//a:t[text()='Foo']"))
111
+ end
112
+ end