caxlsx 3.1.1 → 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 -343
  5. data/LICENSE +21 -21
  6. data/README.md +168 -172
  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 -148
  21. data/lib/axlsx/drawing/bar_chart.rb +138 -138
  22. data/lib/axlsx/drawing/bar_series.rb +97 -97
  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 -388
  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 -294
  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 -164
  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 -768
  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 -171
  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 -86
  186. data/test/drawing/tc_bar_chart.rb +86 -86
  187. data/test/drawing/tc_bar_series.rb +46 -46
  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 -10
  247. data/test/tc_package.rb +317 -314
  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 -143
  278. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +62 -62
  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 -160
  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 -77
  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 +101 -101
@@ -1,49 +1,49 @@
1
- require 'tc_helper'
2
-
3
- class TestDefinedNames < Test::Unit::TestCase
4
- def setup
5
- @dn = Axlsx::DefinedName.new('Sheet1!A1:A1')
6
- end
7
-
8
- def test_initialize
9
- assert_equal('Sheet1!A1:A1', @dn.formula)
10
- end
11
-
12
- def test_string_attributes
13
- %w(short_cut_key status_bar help description custom_menu comment).each do |attr|
14
- assert_raise(ArgumentError, 'only strings allowed in string attributes') { @dn.send("#{attr}=", 1) }
15
- assert_nothing_raised { @dn.send("#{attr}=", '_xlnm.Sheet_Title') }
16
- end
17
- end
18
-
19
- def test_boolean_attributes
20
- %w(workbook_parameter publish_to_server xlm vb_proceedure function hidden).each do |attr|
21
- assert_raise(ArgumentError, 'only booleanish allowed in string attributes') { @dn.send("#{attr}=", 'foo') }
22
- assert_nothing_raised { @dn.send("#{attr}=", 1) }
23
- end
24
-
25
- end
26
-
27
- def test_local_sheet_id
28
- assert_raise(ArgumentError, 'local_sheet_id must be an unsigned int') { @dn.local_sheet_id = -1 }
29
- assert_nothing_raised { @dn.local_sheet_id = 1 }
30
- end
31
-
32
- def test_do_not_camelcase_value_for_name
33
- @dn.name = '_xlnm._FilterDatabase'
34
- doc = Nokogiri::XML(@dn.to_xml_string)
35
- assert_equal(doc.xpath("//definedName[@name='_xlnm._FilterDatabase']").size, 1)
36
- assert_equal('Sheet1!A1:A1', doc.xpath('//definedName').text)
37
- end
38
-
39
- def test_to_xml_string
40
- assert_raise(ArgumentError, 'name is required for serialization') { @dn.to_xml_string }
41
- @dn.name = '_xlnm.Print_Titles'
42
- @dn.hidden = true
43
- doc = Nokogiri::XML(@dn.to_xml_string)
44
- assert_equal(doc.xpath("//definedName[@name='_xlnm.Print_Titles']").size, 1)
45
- assert_equal(doc.xpath("//definedName[@hidden='1']").size, 1)
46
- assert_equal('Sheet1!A1:A1', doc.xpath('//definedName').text)
47
- end
48
-
49
- end
1
+ require 'tc_helper'
2
+
3
+ class TestDefinedNames < Test::Unit::TestCase
4
+ def setup
5
+ @dn = Axlsx::DefinedName.new('Sheet1!A1:A1')
6
+ end
7
+
8
+ def test_initialize
9
+ assert_equal('Sheet1!A1:A1', @dn.formula)
10
+ end
11
+
12
+ def test_string_attributes
13
+ %w(short_cut_key status_bar help description custom_menu comment).each do |attr|
14
+ assert_raise(ArgumentError, 'only strings allowed in string attributes') { @dn.send("#{attr}=", 1) }
15
+ assert_nothing_raised { @dn.send("#{attr}=", '_xlnm.Sheet_Title') }
16
+ end
17
+ end
18
+
19
+ def test_boolean_attributes
20
+ %w(workbook_parameter publish_to_server xlm vb_proceedure function hidden).each do |attr|
21
+ assert_raise(ArgumentError, 'only booleanish allowed in string attributes') { @dn.send("#{attr}=", 'foo') }
22
+ assert_nothing_raised { @dn.send("#{attr}=", 1) }
23
+ end
24
+
25
+ end
26
+
27
+ def test_local_sheet_id
28
+ assert_raise(ArgumentError, 'local_sheet_id must be an unsigned int') { @dn.local_sheet_id = -1 }
29
+ assert_nothing_raised { @dn.local_sheet_id = 1 }
30
+ end
31
+
32
+ def test_do_not_camelcase_value_for_name
33
+ @dn.name = '_xlnm._FilterDatabase'
34
+ doc = Nokogiri::XML(@dn.to_xml_string)
35
+ assert_equal(doc.xpath("//definedName[@name='_xlnm._FilterDatabase']").size, 1)
36
+ assert_equal('Sheet1!A1:A1', doc.xpath('//definedName').text)
37
+ end
38
+
39
+ def test_to_xml_string
40
+ assert_raise(ArgumentError, 'name is required for serialization') { @dn.to_xml_string }
41
+ @dn.name = '_xlnm.Print_Titles'
42
+ @dn.hidden = true
43
+ doc = Nokogiri::XML(@dn.to_xml_string)
44
+ assert_equal(doc.xpath("//definedName[@name='_xlnm.Print_Titles']").size, 1)
45
+ assert_equal(doc.xpath("//definedName[@hidden='1']").size, 1)
46
+ assert_equal('Sheet1!A1:A1', doc.xpath('//definedName').text)
47
+ end
48
+
49
+ end
@@ -1,59 +1,59 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestSharedStringsTable < Test::Unit::TestCase
4
-
5
- def setup
6
- @p = Axlsx::Package.new :use_shared_strings=>true
7
-
8
- ws = @p.workbook.add_worksheet
9
- ws.add_row ['a', 1, 'b']
10
- ws.add_row ['b', 1, 'c']
11
- ws.add_row ['c', 1, 'd']
12
- ws.rows.last.add_cell('b', :type => :text)
13
- end
14
-
15
- def test_workbook_has_shared_strings
16
- assert(@p.workbook.shared_strings.is_a?(Axlsx::SharedStringsTable), "shared string table was not created")
17
- end
18
-
19
- def test_count
20
- sst = @p.workbook.shared_strings
21
- assert_equal(sst.count, 7)
22
- end
23
-
24
- def test_unique_count
25
- sst = @p.workbook.shared_strings
26
- assert_equal(sst.unique_count, 4)
27
- end
28
-
29
- def test_uses_workbook_xml_space
30
- assert_equal(@p.workbook.xml_space, @p.workbook.shared_strings.xml_space)
31
- @p.workbook.xml_space = :default
32
- assert_equal(:default, @p.workbook.shared_strings.xml_space)
33
- end
34
-
35
- def test_valid_document
36
- schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
37
- doc = Nokogiri::XML(@p.workbook.shared_strings.to_xml_string)
38
- errors = []
39
- schema.validate(doc).each do |error|
40
- puts error.message
41
- errors << error
42
- end
43
- assert_equal(errors.size, 0, "sharedStirngs.xml Invalid" + errors.map{ |e| e.message }.to_s)
44
- end
45
-
46
- def test_remove_control_characters_in_xml_serialization
47
- nasties = "hello\x10\x00\x1C\x1Eworld"
48
- @p.workbook.worksheets[0].add_row [nasties]
49
-
50
- # test that the nasty string was added to the shared strings
51
- assert @p.workbook.shared_strings.unique_cells.has_key?(nasties)
52
-
53
- # test that none of the control characters are in the XML output for shared strings
54
- assert_no_match(/#{Axlsx::CONTROL_CHARS}/, @p.workbook.shared_strings.to_xml_string)
55
-
56
- # assert that the shared string was normalized to remove the control characters
57
- assert_not_nil @p.workbook.shared_strings.to_xml_string.index("helloworld")
58
- end
59
- end
1
+ require 'tc_helper.rb'
2
+
3
+ class TestSharedStringsTable < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @p = Axlsx::Package.new :use_shared_strings=>true
7
+
8
+ ws = @p.workbook.add_worksheet
9
+ ws.add_row ['a', 1, 'b']
10
+ ws.add_row ['b', 1, 'c']
11
+ ws.add_row ['c', 1, 'd']
12
+ ws.rows.last.add_cell('b', :type => :text)
13
+ end
14
+
15
+ def test_workbook_has_shared_strings
16
+ assert(@p.workbook.shared_strings.is_a?(Axlsx::SharedStringsTable), "shared string table was not created")
17
+ end
18
+
19
+ def test_count
20
+ sst = @p.workbook.shared_strings
21
+ assert_equal(sst.count, 7)
22
+ end
23
+
24
+ def test_unique_count
25
+ sst = @p.workbook.shared_strings
26
+ assert_equal(sst.unique_count, 4)
27
+ end
28
+
29
+ def test_uses_workbook_xml_space
30
+ assert_equal(@p.workbook.xml_space, @p.workbook.shared_strings.xml_space)
31
+ @p.workbook.xml_space = :default
32
+ assert_equal(:default, @p.workbook.shared_strings.xml_space)
33
+ end
34
+
35
+ def test_valid_document
36
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
37
+ doc = Nokogiri::XML(@p.workbook.shared_strings.to_xml_string)
38
+ errors = []
39
+ schema.validate(doc).each do |error|
40
+ puts error.message
41
+ errors << error
42
+ end
43
+ assert_equal(errors.size, 0, "sharedStirngs.xml Invalid" + errors.map{ |e| e.message }.to_s)
44
+ end
45
+
46
+ def test_remove_control_characters_in_xml_serialization
47
+ nasties = "hello\x10\x00\x1C\x1Eworld"
48
+ @p.workbook.worksheets[0].add_row [nasties]
49
+
50
+ # test that the nasty string was added to the shared strings
51
+ assert @p.workbook.shared_strings.unique_cells.has_key?(nasties)
52
+
53
+ # test that none of the control characters are in the XML output for shared strings
54
+ assert_no_match(/#{Axlsx::CONTROL_CHARS}/, @p.workbook.shared_strings.to_xml_string)
55
+
56
+ # assert that the shared string was normalized to remove the control characters
57
+ assert_not_nil @p.workbook.shared_strings.to_xml_string.index("helloworld")
58
+ end
59
+ end
@@ -1,160 +1,165 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestWorkbook < Test::Unit::TestCase
4
- def setup
5
- p = Axlsx::Package.new
6
- @wb = p.workbook
7
- end
8
-
9
- def teardown
10
- end
11
-
12
- def test_worksheet_users_xml_space
13
- sheet = @wb.add_worksheet(:name => 'foo')
14
- ws_xml = Nokogiri::XML(sheet.to_xml_string)
15
- assert(ws_xml.xpath("//xmlns:worksheet/@xml:space='preserve'"))
16
-
17
- @wb.xml_space = :default
18
- ws_xml = Nokogiri::XML(sheet.to_xml_string)
19
- assert(ws_xml.xpath("//xmlns:worksheet/@xml:space='default'"))
20
- end
21
-
22
- def test_xml_space
23
- assert_equal(:preserve, @wb.xml_space)
24
- @wb.xml_space = :default
25
- assert_equal(:default, @wb.xml_space)
26
- assert_raise(ArgumentError) { @wb.xml_space = :none }
27
- end
28
-
29
- def test_no_autowidth
30
- assert_equal(@wb.use_autowidth, true)
31
- assert_raise(ArgumentError) {@wb.use_autowidth = 0.1}
32
- assert_nothing_raised {@wb.use_autowidth = false}
33
- assert_equal(@wb.use_autowidth, false)
34
- end
35
-
36
- def test_is_reversed
37
- assert_equal(@wb.is_reversed, nil)
38
- assert_raise(ArgumentError) {@wb.is_reversed = 0.1}
39
- assert_nothing_raised {@wb.is_reversed = true }
40
- assert_equal(@wb.use_autowidth, true)
41
- end
42
-
43
- def test_sheet_by_name_retrieval
44
- @wb.add_worksheet(:name=>'foo')
45
- @wb.add_worksheet(:name=>'bar')
46
- assert_equal('foo', @wb.sheet_by_name('foo').name)
47
-
48
- end
49
- def test_date1904
50
- assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
51
- @wb.date1904 = :false
52
- assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
53
- Axlsx::Workbook.date1904 = :true
54
- assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
55
- end
56
-
57
- def test_add_defined_name
58
- @wb.add_defined_name 'Sheet1!1:1', :name => '_xlnm.Print_Titles', :hidden => true
59
- assert_equal(1, @wb.defined_names.size)
60
- end
61
-
62
- def test_add_view
63
- @wb.add_view visibility: :hidden, window_width: 800
64
- assert_equal(1, @wb.views.size)
65
- end
66
-
67
- def test_shared_strings
68
- assert_equal(@wb.use_shared_strings, nil)
69
- assert_raise(ArgumentError) {@wb.use_shared_strings = 'bpb'}
70
- assert_nothing_raised {@wb.use_shared_strings = :true}
71
- end
72
-
73
- def test_add_worksheet
74
- assert(@wb.worksheets.empty?, "worbook has no worksheets by default")
75
- ws = @wb.add_worksheet(:name=>"bob")
76
- assert_equal(@wb.worksheets.size, 1, "add_worksheet adds a worksheet!")
77
- assert_equal(@wb.worksheets.first, ws, "the worksheet returned is the worksheet added")
78
- assert_equal(ws.name, "bob", "name option gets passed to worksheet")
79
- end
80
-
81
- def test_insert_worksheet
82
- @wb.add_worksheet(:name => 'A')
83
- @wb.add_worksheet(:name => 'B')
84
- ws3 = @wb.insert_worksheet(0, :name => 'C')
85
- assert_equal(ws3.name, @wb.worksheets.first.name)
86
- end
87
-
88
- def test_relationships
89
- #current relationship size is 1 due to style relation
90
- assert(@wb.relationships.size == 1)
91
- @wb.add_worksheet
92
- assert(@wb.relationships.size == 2)
93
- @wb.use_shared_strings = true
94
- assert(@wb.relationships.size == 3)
95
- end
96
-
97
- def test_to_xml
98
- schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
99
- doc = Nokogiri::XML(@wb.to_xml_string)
100
- errors = []
101
- schema.validate(doc).each do |error|
102
- errors.push error
103
- puts error.message
104
- end
105
- assert(errors.empty?, "error free validation")
106
- end
107
-
108
- def test_to_xml_reversed
109
- @wb.is_reversed = true
110
- @wb.add_worksheet(:name => 'first')
111
- second = @wb.add_worksheet(:name => 'second')
112
- doc = Nokogiri::XML(@wb.to_xml_string)
113
- assert_equal second.name, doc.xpath('//xmlns:workbook/xmlns:sheets/*[1]/@name').to_s
114
- end
115
-
116
- def test_range_requires_valid_sheet
117
- ws = @wb.add_worksheet :name=>'fish'
118
- ws.add_row [1,2,3]
119
- ws.add_row [4,5,6]
120
- assert_raise(ArgumentError, "no sheet name part") { @wb["A1:C2"]}
121
- assert_equal @wb['fish!A1:C2'].size, 6
122
- end
123
-
124
- def test_to_xml_adds_worksheet_when_worksheets_is_empty
125
- assert(@wb.worksheets.empty?)
126
- @wb.to_xml_string
127
- assert(@wb.worksheets.size == 1)
128
- end
129
-
130
- def test_to_xml_string_defined_names
131
- @wb.add_worksheet do |sheet|
132
- sheet.add_row [1, "two"]
133
- sheet.auto_filter = "A1:B1"
134
- end
135
- doc = Nokogiri::XML(@wb.to_xml_string)
136
- assert_equal(doc.xpath('//xmlns:workbook/xmlns:definedNames/xmlns:definedName').inner_text, @wb.worksheets[0].auto_filter.defined_name)
137
- end
138
-
139
- def test_to_xml_string_book_views
140
- @wb.add_worksheet do |sheet|
141
- sheet.add_row [1, "two"]
142
- end
143
- @wb.add_view active_tab: 0, first_sheet: 0
144
- doc = Nokogiri::XML(@wb.to_xml_string)
145
- assert_equal(1, doc.xpath('//xmlns:workbook/xmlns:bookViews/xmlns:workbookView[@activeTab=0]').size)
146
- end
147
-
148
- def test_to_xml_uses_correct_rIds_for_pivotCache
149
- ws = @wb.add_worksheet
150
- pivot_table = ws.add_pivot_table('G5:G6', 'A1:D5')
151
- doc = Nokogiri::XML(@wb.to_xml_string)
152
- assert_equal pivot_table.cache_definition.rId, doc.xpath("//xmlns:pivotCache").first["r:id"]
153
- end
154
-
155
- def test_worksheet_name_is_intact_after_serialized_into_xml
156
- sheet = @wb.add_worksheet(:name => '_Example')
157
- wb_xml = Nokogiri::XML(@wb.to_xml_string)
158
- assert_equal sheet.name, wb_xml.xpath('//xmlns:workbook/xmlns:sheets/*[1]/@name').to_s
159
- end
160
- end
1
+ require 'tc_helper.rb'
2
+
3
+ class TestWorkbook < Test::Unit::TestCase
4
+ def setup
5
+ p = Axlsx::Package.new
6
+ @wb = p.workbook
7
+ end
8
+
9
+ def teardown
10
+ end
11
+
12
+ def test_worksheet_users_xml_space
13
+ sheet = @wb.add_worksheet(:name => 'foo')
14
+ ws_xml = Nokogiri::XML(sheet.to_xml_string)
15
+ assert(ws_xml.xpath("//xmlns:worksheet/@xml:space='preserve'"))
16
+
17
+ @wb.xml_space = :default
18
+ ws_xml = Nokogiri::XML(sheet.to_xml_string)
19
+ assert(ws_xml.xpath("//xmlns:worksheet/@xml:space='default'"))
20
+ end
21
+
22
+ def test_xml_space
23
+ assert_equal(:preserve, @wb.xml_space)
24
+ @wb.xml_space = :default
25
+ assert_equal(:default, @wb.xml_space)
26
+ assert_raise(ArgumentError) { @wb.xml_space = :none }
27
+ end
28
+
29
+ def test_no_autowidth
30
+ assert_equal(@wb.use_autowidth, true)
31
+ assert_raise(ArgumentError) {@wb.use_autowidth = 0.1}
32
+ assert_nothing_raised {@wb.use_autowidth = false}
33
+ assert_equal(@wb.use_autowidth, false)
34
+ end
35
+
36
+ def test_is_reversed
37
+ assert_equal(@wb.is_reversed, nil)
38
+ assert_raise(ArgumentError) {@wb.is_reversed = 0.1}
39
+ assert_nothing_raised {@wb.is_reversed = true }
40
+ assert_equal(@wb.use_autowidth, true)
41
+ end
42
+
43
+ def test_sheet_by_name_retrieval
44
+ @wb.add_worksheet(:name=>'foo')
45
+ @wb.add_worksheet(:name=>'bar')
46
+ assert_equal('foo', @wb.sheet_by_name('foo').name)
47
+
48
+ end
49
+
50
+ def test_worksheet_empty_name
51
+ assert_raise(ArgumentError) {@wb.add_worksheet(:name=>'')}
52
+ end
53
+
54
+ def test_date1904
55
+ assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
56
+ @wb.date1904 = :false
57
+ assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
58
+ Axlsx::Workbook.date1904 = :true
59
+ assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
60
+ end
61
+
62
+ def test_add_defined_name
63
+ @wb.add_defined_name 'Sheet1!1:1', :name => '_xlnm.Print_Titles', :hidden => true
64
+ assert_equal(1, @wb.defined_names.size)
65
+ end
66
+
67
+ def test_add_view
68
+ @wb.add_view visibility: :hidden, window_width: 800
69
+ assert_equal(1, @wb.views.size)
70
+ end
71
+
72
+ def test_shared_strings
73
+ assert_equal(@wb.use_shared_strings, nil)
74
+ assert_raise(ArgumentError) {@wb.use_shared_strings = 'bpb'}
75
+ assert_nothing_raised {@wb.use_shared_strings = :true}
76
+ end
77
+
78
+ def test_add_worksheet
79
+ assert(@wb.worksheets.empty?, "worbook has no worksheets by default")
80
+ ws = @wb.add_worksheet(:name=>"bob")
81
+ assert_equal(@wb.worksheets.size, 1, "add_worksheet adds a worksheet!")
82
+ assert_equal(@wb.worksheets.first, ws, "the worksheet returned is the worksheet added")
83
+ assert_equal(ws.name, "bob", "name option gets passed to worksheet")
84
+ end
85
+
86
+ def test_insert_worksheet
87
+ @wb.add_worksheet(:name => 'A')
88
+ @wb.add_worksheet(:name => 'B')
89
+ ws3 = @wb.insert_worksheet(0, :name => 'C')
90
+ assert_equal(ws3.name, @wb.worksheets.first.name)
91
+ end
92
+
93
+ def test_relationships
94
+ #current relationship size is 1 due to style relation
95
+ assert(@wb.relationships.size == 1)
96
+ @wb.add_worksheet
97
+ assert(@wb.relationships.size == 2)
98
+ @wb.use_shared_strings = true
99
+ assert(@wb.relationships.size == 3)
100
+ end
101
+
102
+ def test_to_xml
103
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
104
+ doc = Nokogiri::XML(@wb.to_xml_string)
105
+ errors = []
106
+ schema.validate(doc).each do |error|
107
+ errors.push error
108
+ puts error.message
109
+ end
110
+ assert(errors.empty?, "error free validation")
111
+ end
112
+
113
+ def test_to_xml_reversed
114
+ @wb.is_reversed = true
115
+ @wb.add_worksheet(:name => 'first')
116
+ second = @wb.add_worksheet(:name => 'second')
117
+ doc = Nokogiri::XML(@wb.to_xml_string)
118
+ assert_equal second.name, doc.xpath('//xmlns:workbook/xmlns:sheets/*[1]/@name').to_s
119
+ end
120
+
121
+ def test_range_requires_valid_sheet
122
+ ws = @wb.add_worksheet :name=>'fish'
123
+ ws.add_row [1,2,3]
124
+ ws.add_row [4,5,6]
125
+ assert_raise(ArgumentError, "no sheet name part") { @wb["A1:C2"]}
126
+ assert_equal @wb['fish!A1:C2'].size, 6
127
+ end
128
+
129
+ def test_to_xml_adds_worksheet_when_worksheets_is_empty
130
+ assert(@wb.worksheets.empty?)
131
+ @wb.to_xml_string
132
+ assert(@wb.worksheets.size == 1)
133
+ end
134
+
135
+ def test_to_xml_string_defined_names
136
+ @wb.add_worksheet do |sheet|
137
+ sheet.add_row [1, "two"]
138
+ sheet.auto_filter = "A1:B1"
139
+ end
140
+ doc = Nokogiri::XML(@wb.to_xml_string)
141
+ assert_equal(doc.xpath('//xmlns:workbook/xmlns:definedNames/xmlns:definedName').inner_text, @wb.worksheets[0].auto_filter.defined_name)
142
+ end
143
+
144
+ def test_to_xml_string_book_views
145
+ @wb.add_worksheet do |sheet|
146
+ sheet.add_row [1, "two"]
147
+ end
148
+ @wb.add_view active_tab: 0, first_sheet: 0
149
+ doc = Nokogiri::XML(@wb.to_xml_string)
150
+ assert_equal(1, doc.xpath('//xmlns:workbook/xmlns:bookViews/xmlns:workbookView[@activeTab=0]').size)
151
+ end
152
+
153
+ def test_to_xml_uses_correct_rIds_for_pivotCache
154
+ ws = @wb.add_worksheet
155
+ pivot_table = ws.add_pivot_table('G5:G6', 'A1:D5')
156
+ doc = Nokogiri::XML(@wb.to_xml_string)
157
+ assert_equal pivot_table.cache_definition.rId, doc.xpath("//xmlns:pivotCache").first["r:id"]
158
+ end
159
+
160
+ def test_worksheet_name_is_intact_after_serialized_into_xml
161
+ sheet = @wb.add_worksheet(:name => '_Example')
162
+ wb_xml = Nokogiri::XML(@wb.to_xml_string)
163
+ assert_equal sheet.name, wb_xml.xpath('//xmlns:workbook/xmlns:sheets/*[1]/@name').to_s
164
+ end
165
+ end
@@ -1,50 +1,50 @@
1
- require 'tc_helper'
2
-
3
- class TestWorkbookView < Test::Unit::TestCase
4
-
5
- def setup
6
- @options = { visibility: :hidden, minimized: true, show_horizontal_scroll: true, show_vertical_scroll: true,
7
- show_sheet_tabs: true, tab_ratio: 750, first_sheet: 0, active_tab: 1, x_window: 500, y_window: 400,
8
- window_width: 800, window_height: 600, auto_filter_date_grouping: true }
9
- @book_view = Axlsx::WorkbookView.new @options
10
- end
11
-
12
- def test_options_assignation
13
- @options.each do |key, value|
14
- assert_equal(value, @book_view.send(key))
15
- end
16
- end
17
-
18
- def test_boolean_attribute_validation
19
- %w(minimized show_horizontal_scroll show_vertical_scroll show_sheet_tabs auto_filter_date_grouping).each do |attr|
20
- assert_raise(ArgumentError, 'only booleanish allowed in boolean attributes') { @book_view.send("#{attr}=", "banana") }
21
- assert_nothing_raised { @book_view.send("#{attr}=", false )}
22
- end
23
- end
24
-
25
- def test_integer_attribute_validation
26
- %w(tab_ratio first_sheet active_tab x_window y_window window_width window_height).each do |attr|
27
- assert_raise(ArgumentError, 'only integer allowed in integer attributes') { @book_view.send("#{attr}=", "b") }
28
- assert_nothing_raised { @book_view.send("#{attr}=", 7 )}
29
- end
30
- end
31
-
32
- def test_visibility_attribute_validation
33
- assert_raise(ArgumentError) { @book_view.visibility = :foobar }
34
- assert_nothing_raised { @book_view.visibility = :hidden }
35
- assert_nothing_raised { @book_view.visibility = :very_hidden }
36
- assert_nothing_raised { @book_view.visibility = :visible }
37
- end
38
-
39
- def test_to_xml_string
40
- xml = @book_view.to_xml_string
41
- doc = Nokogiri::XML(xml)
42
- @options.each do |key, value|
43
- if value == true || value == false
44
- value = value ? 1 : 0
45
- end
46
- path = "workbookView[@#{Axlsx.camel(key, false)}='#{value}']"
47
- assert_equal(1, doc.xpath(path).size)
48
- end
49
- end
50
- end
1
+ require 'tc_helper'
2
+
3
+ class TestWorkbookView < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @options = { visibility: :hidden, minimized: true, show_horizontal_scroll: true, show_vertical_scroll: true,
7
+ show_sheet_tabs: true, tab_ratio: 750, first_sheet: 0, active_tab: 1, x_window: 500, y_window: 400,
8
+ window_width: 800, window_height: 600, auto_filter_date_grouping: true }
9
+ @book_view = Axlsx::WorkbookView.new @options
10
+ end
11
+
12
+ def test_options_assignation
13
+ @options.each do |key, value|
14
+ assert_equal(value, @book_view.send(key))
15
+ end
16
+ end
17
+
18
+ def test_boolean_attribute_validation
19
+ %w(minimized show_horizontal_scroll show_vertical_scroll show_sheet_tabs auto_filter_date_grouping).each do |attr|
20
+ assert_raise(ArgumentError, 'only booleanish allowed in boolean attributes') { @book_view.send("#{attr}=", "banana") }
21
+ assert_nothing_raised { @book_view.send("#{attr}=", false )}
22
+ end
23
+ end
24
+
25
+ def test_integer_attribute_validation
26
+ %w(tab_ratio first_sheet active_tab x_window y_window window_width window_height).each do |attr|
27
+ assert_raise(ArgumentError, 'only integer allowed in integer attributes') { @book_view.send("#{attr}=", "b") }
28
+ assert_nothing_raised { @book_view.send("#{attr}=", 7 )}
29
+ end
30
+ end
31
+
32
+ def test_visibility_attribute_validation
33
+ assert_raise(ArgumentError) { @book_view.visibility = :foobar }
34
+ assert_nothing_raised { @book_view.visibility = :hidden }
35
+ assert_nothing_raised { @book_view.visibility = :very_hidden }
36
+ assert_nothing_raised { @book_view.visibility = :visible }
37
+ end
38
+
39
+ def test_to_xml_string
40
+ xml = @book_view.to_xml_string
41
+ doc = Nokogiri::XML(xml)
42
+ @options.each do |key, value|
43
+ if value == true || value == false
44
+ value = value ? 1 : 0
45
+ end
46
+ path = "workbookView[@#{Axlsx.camel(key, false)}='#{value}']"
47
+ assert_equal(1, doc.xpath(path).size)
48
+ end
49
+ end
50
+ end