caxlsx 3.2.0 → 3.3.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 (300) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -9
  3. data/.yardopts_guide +18 -18
  4. data/CHANGELOG.md +385 -354
  5. data/LICENSE +21 -21
  6. data/README.md +165 -168
  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 +299 -276
  27. data/lib/axlsx/drawing/d_lbls.rb +91 -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 -129
  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 +107 -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 +398 -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 -73
  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 +535 -494
  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 +416 -410
  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 +425 -395
  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/border_creator.rb +76 -0
  98. data/lib/axlsx/workbook/worksheet/break.rb +35 -35
  99. data/lib/axlsx/workbook/worksheet/cell.rb +532 -506
  100. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
  101. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
  102. data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -18
  103. data/lib/axlsx/workbook/worksheet/col.rb +145 -145
  104. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
  105. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
  106. data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
  107. data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
  108. data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
  109. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
  110. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
  111. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
  112. data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
  113. data/lib/axlsx/workbook/worksheet/data_validation.rb +267 -246
  114. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
  115. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
  116. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
  117. data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
  118. data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
  119. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
  120. data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
  121. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
  122. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
  123. data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
  124. data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
  125. data/lib/axlsx/workbook/worksheet/pivot_table.rb +335 -296
  126. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
  127. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
  128. data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
  129. data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
  130. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
  131. data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
  132. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
  133. data/lib/axlsx/workbook/worksheet/row.rb +164 -164
  134. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
  135. data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
  136. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
  137. data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
  138. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
  139. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
  140. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
  141. data/lib/axlsx/workbook/worksheet/table.rb +102 -102
  142. data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
  143. data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
  144. data/lib/axlsx/workbook/worksheet/worksheet.rb +829 -786
  145. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
  146. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
  147. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
  148. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
  149. data/lib/axlsx.rb +204 -185
  150. data/lib/caxlsx.rb +2 -2
  151. data/lib/schema/dc.xsd +118 -118
  152. data/lib/schema/dcmitype.xsd +51 -51
  153. data/lib/schema/dcterms.xsd +331 -331
  154. data/lib/schema/dml-chartDrawing.xsd +146 -146
  155. data/lib/schema/dml-compatibility.xsd +14 -14
  156. data/lib/schema/dml-lockedCanvas.xsd +11 -11
  157. data/lib/schema/dml-main.xsd +3048 -3048
  158. data/lib/schema/dml-picture.xsd +23 -23
  159. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
  160. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
  161. data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
  162. data/lib/schema/shared-bibliography.xsd +144 -144
  163. data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
  164. data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
  165. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
  166. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
  167. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
  168. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
  169. data/lib/schema/shared-relationshipReference.xsd +25 -25
  170. data/lib/schema/vml-main.xsd +569 -569
  171. data/lib/schema/vml-officeDrawing.xsd +509 -509
  172. data/lib/schema/vml-presentationDrawing.xsd +12 -12
  173. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
  174. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
  175. data/lib/schema/xml.xsd +116 -116
  176. metadata +5 -252
  177. data/test/benchmark.rb +0 -72
  178. data/test/content_type/tc_content_type.rb +0 -76
  179. data/test/content_type/tc_default.rb +0 -16
  180. data/test/content_type/tc_override.rb +0 -14
  181. data/test/doc_props/tc_app.rb +0 -43
  182. data/test/doc_props/tc_core.rb +0 -42
  183. data/test/drawing/tc_area_chart.rb +0 -39
  184. data/test/drawing/tc_area_series.rb +0 -71
  185. data/test/drawing/tc_axes.rb +0 -8
  186. data/test/drawing/tc_axis.rb +0 -112
  187. data/test/drawing/tc_bar_3D_chart.rb +0 -86
  188. data/test/drawing/tc_bar_chart.rb +0 -86
  189. data/test/drawing/tc_bar_series.rb +0 -46
  190. data/test/drawing/tc_bubble_chart.rb +0 -44
  191. data/test/drawing/tc_bubble_series.rb +0 -21
  192. data/test/drawing/tc_cat_axis.rb +0 -31
  193. data/test/drawing/tc_cat_axis_data.rb +0 -27
  194. data/test/drawing/tc_chart.rb +0 -123
  195. data/test/drawing/tc_d_lbls.rb +0 -57
  196. data/test/drawing/tc_data_source.rb +0 -23
  197. data/test/drawing/tc_drawing.rb +0 -80
  198. data/test/drawing/tc_graphic_frame.rb +0 -27
  199. data/test/drawing/tc_hyperlink.rb +0 -64
  200. data/test/drawing/tc_line_3d_chart.rb +0 -47
  201. data/test/drawing/tc_line_chart.rb +0 -39
  202. data/test/drawing/tc_line_series.rb +0 -71
  203. data/test/drawing/tc_marker.rb +0 -44
  204. data/test/drawing/tc_named_axis_data.rb +0 -27
  205. data/test/drawing/tc_num_data.rb +0 -31
  206. data/test/drawing/tc_num_val.rb +0 -29
  207. data/test/drawing/tc_one_cell_anchor.rb +0 -66
  208. data/test/drawing/tc_pic.rb +0 -103
  209. data/test/drawing/tc_picture_locking.rb +0 -72
  210. data/test/drawing/tc_pie_3D_chart.rb +0 -28
  211. data/test/drawing/tc_pie_series.rb +0 -33
  212. data/test/drawing/tc_scaling.rb +0 -36
  213. data/test/drawing/tc_scatter_chart.rb +0 -48
  214. data/test/drawing/tc_scatter_series.rb +0 -74
  215. data/test/drawing/tc_ser_axis.rb +0 -31
  216. data/test/drawing/tc_series.rb +0 -23
  217. data/test/drawing/tc_series_title.rb +0 -54
  218. data/test/drawing/tc_str_data.rb +0 -18
  219. data/test/drawing/tc_str_val.rb +0 -30
  220. data/test/drawing/tc_title.rb +0 -70
  221. data/test/drawing/tc_two_cell_anchor.rb +0 -36
  222. data/test/drawing/tc_val_axis.rb +0 -24
  223. data/test/drawing/tc_view_3D.rb +0 -54
  224. data/test/drawing/tc_vml_drawing.rb +0 -25
  225. data/test/drawing/tc_vml_shape.rb +0 -106
  226. data/test/fixtures/image1.gif +0 -0
  227. data/test/fixtures/image1.jpeg +0 -0
  228. data/test/fixtures/image1.jpg +0 -0
  229. data/test/fixtures/image1.png +0 -0
  230. data/test/fixtures/image1_fake.jpg +0 -0
  231. data/test/profile.rb +0 -24
  232. data/test/rels/tc_relationship.rb +0 -52
  233. data/test/rels/tc_relationships.rb +0 -37
  234. data/test/stylesheet/tc_border.rb +0 -37
  235. data/test/stylesheet/tc_border_pr.rb +0 -32
  236. data/test/stylesheet/tc_cell_alignment.rb +0 -81
  237. data/test/stylesheet/tc_cell_protection.rb +0 -29
  238. data/test/stylesheet/tc_cell_style.rb +0 -57
  239. data/test/stylesheet/tc_color.rb +0 -43
  240. data/test/stylesheet/tc_dxf.rb +0 -81
  241. data/test/stylesheet/tc_fill.rb +0 -18
  242. data/test/stylesheet/tc_font.rb +0 -133
  243. data/test/stylesheet/tc_gradient_fill.rb +0 -72
  244. data/test/stylesheet/tc_gradient_stop.rb +0 -31
  245. data/test/stylesheet/tc_num_fmt.rb +0 -30
  246. data/test/stylesheet/tc_pattern_fill.rb +0 -43
  247. data/test/stylesheet/tc_styles.rb +0 -309
  248. data/test/stylesheet/tc_table_style.rb +0 -44
  249. data/test/stylesheet/tc_table_style_element.rb +0 -45
  250. data/test/stylesheet/tc_table_styles.rb +0 -29
  251. data/test/stylesheet/tc_xf.rb +0 -120
  252. data/test/tc_axlsx.rb +0 -109
  253. data/test/tc_helper.rb +0 -10
  254. data/test/tc_package.rb +0 -317
  255. data/test/util/tc_mime_type_utils.rb +0 -13
  256. data/test/util/tc_serialized_attributes.rb +0 -19
  257. data/test/util/tc_simple_typed_list.rb +0 -77
  258. data/test/util/tc_validators.rb +0 -210
  259. data/test/workbook/tc_defined_name.rb +0 -49
  260. data/test/workbook/tc_shared_strings_table.rb +0 -59
  261. data/test/workbook/tc_workbook.rb +0 -165
  262. data/test/workbook/tc_workbook_view.rb +0 -50
  263. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
  264. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
  265. data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
  266. data/test/workbook/worksheet/tc_break.rb +0 -49
  267. data/test/workbook/worksheet/tc_cell.rb +0 -465
  268. data/test/workbook/worksheet/tc_cfvo.rb +0 -31
  269. data/test/workbook/worksheet/tc_col.rb +0 -93
  270. data/test/workbook/worksheet/tc_color_scale.rb +0 -58
  271. data/test/workbook/worksheet/tc_comment.rb +0 -72
  272. data/test/workbook/worksheet/tc_comments.rb +0 -57
  273. data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
  274. data/test/workbook/worksheet/tc_data_bar.rb +0 -46
  275. data/test/workbook/worksheet/tc_data_validation.rb +0 -265
  276. data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
  277. data/test/workbook/worksheet/tc_header_footer.rb +0 -151
  278. data/test/workbook/worksheet/tc_icon_set.rb +0 -45
  279. data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
  280. data/test/workbook/worksheet/tc_page_margins.rb +0 -97
  281. data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
  282. data/test/workbook/worksheet/tc_page_setup.rb +0 -143
  283. data/test/workbook/worksheet/tc_pane.rb +0 -54
  284. data/test/workbook/worksheet/tc_pivot_table.rb +0 -180
  285. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
  286. data/test/workbook/worksheet/tc_print_options.rb +0 -72
  287. data/test/workbook/worksheet/tc_protected_range.rb +0 -17
  288. data/test/workbook/worksheet/tc_rich_text.rb +0 -44
  289. data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
  290. data/test/workbook/worksheet/tc_row.rb +0 -160
  291. data/test/workbook/worksheet/tc_selection.rb +0 -55
  292. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
  293. data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
  294. data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
  295. data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
  296. data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
  297. data/test/workbook/worksheet/tc_table.rb +0 -77
  298. data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
  299. data/test/workbook/worksheet/tc_worksheet.rb +0 -632
  300. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
@@ -1,72 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestComment < Test::Unit::TestCase
4
- def setup
5
- p = Axlsx::Package.new
6
- wb = p.workbook
7
- @ws = wb.add_worksheet
8
- @c1 = @ws.add_comment :ref => 'A1', :text => 'text with special char <', :author => 'author with special char <', :visible => false
9
- @c2 = @ws.add_comment :ref => 'C3', :text => 'rust bucket', :author => 'PO'
10
- end
11
-
12
- def test_initailize
13
- assert_raise(ArgumentError) { Axlsx::Comment.new }
14
- end
15
-
16
- def test_author
17
- assert(@c1.author == 'author with special char <')
18
- assert(@c2.author == 'PO')
19
- end
20
-
21
- def test_text
22
- assert(@c1.text == 'text with special char <')
23
- assert(@c2.text == 'rust bucket')
24
- end
25
-
26
- def test_author_index
27
- assert_equal(@c1.author_index, 1)
28
- assert_equal(@c2.author_index, 0)
29
- end
30
-
31
- def test_visible
32
- assert_equal(false, @c1.visible)
33
- assert_equal(true, @c2.visible)
34
- end
35
- def test_ref
36
- assert(@c1.ref == 'A1')
37
- assert(@c2.ref == 'C3')
38
- end
39
-
40
- def test_vml_shape
41
- pos = Axlsx::name_to_indices(@c1.ref)
42
- assert(@c1.vml_shape.is_a?(Axlsx::VmlShape))
43
- assert(@c1.vml_shape.column == pos[0])
44
- assert(@c1.vml_shape.row == pos[1])
45
- assert(@c1.vml_shape.row == pos[1])
46
- assert_equal(pos[0], @c1.vml_shape.left_column)
47
- assert(@c1.vml_shape.top_row == pos[1])
48
- assert_equal(pos[0] + 2 , @c1.vml_shape.right_column)
49
- assert(@c1.vml_shape.bottom_row == pos[1]+4)
50
- end
51
-
52
- def test_to_xml_string
53
- doc = Nokogiri::XML(@c1.to_xml_string)
54
- assert_equal(doc.xpath("//comment[@ref='#{@c1.ref}']").size, 1)
55
- assert_equal(doc.xpath("//comment[@authorId='#{@c1.author_index.to_s}']").size, 1)
56
- assert_equal(doc.xpath("//t[text()='#{@c1.author}:\n']").size, 1)
57
- assert_equal(doc.xpath("//t[text()='#{@c1.text}']").size, 1)
58
- end
59
-
60
- def test_comment_text_contain_author_and_text
61
- comment = @ws.add_comment :ref => 'C4', :text => 'some text', :author => 'Bob'
62
- doc = Nokogiri::XML(comment.to_xml_string)
63
- assert_equal("Bob:\nsome text", doc.xpath("//comment/text").text)
64
- end
65
-
66
- def test_comment_text_does_not_contain_stray_colon_if_author_blank
67
- comment = @ws.add_comment :ref => 'C5', :text => 'some text', :author => ''
68
- doc = Nokogiri::XML(comment.to_xml_string)
69
- assert_equal("some text", doc.xpath("//comment/text").text)
70
- end
71
- end
72
-
@@ -1,57 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestComments < Test::Unit::TestCase
4
- def setup
5
- p = Axlsx::Package.new
6
- wb = p.workbook
7
- @ws = wb.add_worksheet
8
- @c1 = @ws.add_comment :ref => 'A1', :text => 'penut machine', :author => 'crank'
9
- @c2 = @ws.add_comment :ref => 'C3', :text => 'rust bucket', :author => 'PO'
10
- end
11
-
12
- def test_initialize
13
- assert_raise(ArgumentError) { Axlsx::Comments.new }
14
- assert(@ws.comments.vml_drawing.is_a?(Axlsx::VmlDrawing))
15
- end
16
-
17
- def test_add_comment
18
- assert_equal(@ws.comments.size, 2)
19
- assert_raise(ArgumentError) { @ws.comments.add_comment() }
20
- assert_raise(ArgumentError) { @ws.comments.add_comment(:text => 'Yes We Can', :ref => 'A1') }
21
- assert_raise(ArgumentError) { @ws.comments.add_comment(:author => 'bob', :ref => 'A1') }
22
- assert_raise(ArgumentError) { @ws.comments.add_comment(:author => 'bob', :text => 'Yes We Can')}
23
- assert_nothing_raised { @ws.comments.add_comment(:author => 'bob', :text => 'Yes We Can', :ref => 'A1') }
24
- assert_equal(@ws.comments.size, 3)
25
- end
26
- def test_authors
27
- assert_equal(@ws.comments.authors.size, @ws.comments.size)
28
- @ws.add_comment(:text => 'Yes We Can!', :author => 'bob', :ref => 'F1')
29
- assert_equal(@ws.comments.authors.size, 3)
30
- @ws.add_comment(:text => 'Yes We Can!', :author => 'bob', :ref => 'F1')
31
- assert_equal(@ws.comments.authors.size, 3, 'only unique authors are returned')
32
- end
33
- def test_pn
34
- assert_equal(@ws.comments.pn, Axlsx::COMMENT_PN % (@ws.index+1).to_s)
35
- end
36
-
37
- def test_index
38
- assert_equal(@ws.index, @ws.comments.index)
39
- end
40
-
41
- def test_to_xml_string
42
- doc = Nokogiri::XML(@ws.comments.to_xml_string)
43
- schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
44
- errors = []
45
- schema.validate(doc).each do |error|
46
- errors << error
47
- end
48
- assert_equal(0, errors.length)
49
-
50
- # TODO figure out why these xpath expressions dont work!
51
- # assert(doc.xpath("//comments"))
52
- # assert_equal(doc.xpath("//xmlns:author").size, @ws.comments.authors.size)
53
- # assert_equal(doc.xpath("//comment").size, @ws.comments.size)
54
- end
55
- end
56
-
57
-
@@ -1,224 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestConditionalFormatting < Test::Unit::TestCase
4
-
5
- def setup
6
- p = Axlsx::Package.new
7
- @ws = p.workbook.add_worksheet :name=>"hmmm"
8
- @cfs = @ws.add_conditional_formatting( "A1:A1", [{ :type => :cellIs, :dxfId => 0, :priority => 1, :operator => :greaterThan, :formula => "0.5" }])
9
- @cf = @cfs.first
10
- @cfr = @cf.rules.first
11
- end
12
-
13
- def test_initialize_with_options
14
- optioned = Axlsx::ConditionalFormatting.new( :sqref => "AA1:AB100", :rules => [1, 2] )
15
- assert_equal("AA1:AB100", optioned.sqref)
16
- assert_equal([1, 2], optioned.rules)
17
- end
18
- def test_add_as_rule
19
-
20
- color_scale = Axlsx::ColorScale.new do |cs|
21
- cs.colors.first.rgb = "FFDFDFDF"
22
- cs.colors.last.rgb = "FF00FF00"
23
- cs.value_objects.first.type = :percentile
24
- cs.value_objects.first.val = 5
25
- end
26
-
27
- data_bar = Axlsx::DataBar.new :color => "FFFF0000"
28
- icon_set = Axlsx::IconSet.new :iconSet => "5Rating"
29
- cfr = Axlsx::ConditionalFormattingRule.new( { :type => :containsText, :text => "TRUE",
30
- :dxfId => 0, :priority => 1,
31
- :formula => 'NOT(ISERROR(SEARCH("FALSE",AB1)))',
32
- :color_scale => color_scale,
33
- :data_bar => data_bar,
34
- :icon_set => icon_set})
35
-
36
- assert(cfr.data_bar.is_a?(Axlsx::DataBar))
37
- assert(cfr.icon_set.is_a?(Axlsx::IconSet))
38
- assert(cfr.color_scale.is_a?(Axlsx::ColorScale))
39
- cfs = @ws.add_conditional_formatting( "B2:B2", [cfr])
40
- doc = Nokogiri::XML.parse(cfs.last.to_xml_string)
41
- assert_equal(1, doc.xpath(".//conditionalFormatting[@sqref='B2:B2']//cfRule[@type='containsText'][@dxfId=0][@priority=1]").size)
42
- assert doc.xpath(".//conditionalFormatting//cfRule[@type='containsText'][@dxfId=0][@priority=1]//formula='NOT(ISERROR(SEARCH(\"FALSE\",AB1)))'")
43
-
44
- cfs.last.rules.last.type = :colorScale
45
- doc = Nokogiri::XML.parse(cfs.last.to_xml_string)
46
- assert_equal(doc.xpath(".//conditionalFormatting//cfRule//colorScale//cfvo").size, 2)
47
- assert_equal(doc.xpath(".//conditionalFormatting//cfRule//colorScale//color").size, 2)
48
-
49
- cfs.last.rules.last.type = :dataBar
50
- doc = Nokogiri::XML.parse(cfs.last.to_xml_string)
51
- assert_equal(doc.xpath(".//conditionalFormatting//cfRule//dataBar").size, 1)
52
- assert_equal(doc.xpath(".//conditionalFormatting//cfRule//dataBar//cfvo").size, 2)
53
- assert_equal(doc.xpath(".//conditionalFormatting//cfRule//dataBar//color[@rgb='FFFF0000']").size, 1)
54
-
55
- cfs.last.rules.last.type = :iconSet
56
- doc = Nokogiri::XML.parse(cfs.last.to_xml_string)
57
- assert_equal(doc.xpath(".//conditionalFormatting//cfRule//iconSet//cfvo").size, 3)
58
- assert_equal(doc.xpath(".//conditionalFormatting//cfRule//iconSet[@iconSet='5Rating']").size, 1)
59
-
60
- end
61
-
62
-
63
- def test_add_as_hash
64
-
65
- color_scale = Axlsx::ColorScale.new do |cs|
66
- cs.colors.first.rgb = "FFDFDFDF"
67
- cs.colors.last.rgb = "FF00FF00"
68
- cs.value_objects.first.type = :percentile
69
- cs.value_objects.first.val = 5
70
- end
71
-
72
- data_bar = Axlsx::DataBar.new :color => "FFFF0000"
73
- icon_set = Axlsx::IconSet.new :iconSet => "5Rating"
74
-
75
- cfs = @ws.add_conditional_formatting( "B2:B2", [{ :type => :containsText, :text => "TRUE",
76
- :dxfId => 0, :priority => 1,
77
- :formula => 'NOT(ISERROR(SEARCH("FALSE",AB1)))',
78
- :color_scale => color_scale,
79
- :data_bar => data_bar,
80
- :icon_set => icon_set}])
81
- doc = Nokogiri::XML.parse(cfs.last.to_xml_string)
82
- assert_equal(1, doc.xpath(".//conditionalFormatting[@sqref='B2:B2']//cfRule[@type='containsText'][@dxfId=0][@priority=1]").size)
83
- assert doc.xpath(".//conditionalFormatting//cfRule[@type='containsText'][@dxfId=0][@priority=1]//formula='NOT(ISERROR(SEARCH(\"FALSE\",AB1)))'")
84
-
85
- cfs.last.rules.last.type = :colorScale
86
- doc = Nokogiri::XML.parse(cfs.last.to_xml_string)
87
- assert_equal(doc.xpath(".//conditionalFormatting//cfRule//colorScale//cfvo").size, 2)
88
- assert_equal(doc.xpath(".//conditionalFormatting//cfRule//colorScale//color").size, 2)
89
-
90
- cfs.last.rules.last.type = :dataBar
91
- doc = Nokogiri::XML.parse(cfs.last.to_xml_string)
92
- assert_equal(doc.xpath(".//conditionalFormatting//cfRule//dataBar").size, 1)
93
- assert_equal(doc.xpath(".//conditionalFormatting//cfRule//dataBar//cfvo").size, 2)
94
- assert_equal(doc.xpath(".//conditionalFormatting//cfRule//dataBar//color[@rgb='FFFF0000']").size, 1)
95
-
96
- cfs.last.rules.last.type = :iconSet
97
- doc = Nokogiri::XML.parse(cfs.last.to_xml_string)
98
- assert_equal(doc.xpath(".//conditionalFormatting//cfRule//iconSet//cfvo").size, 3)
99
- assert_equal(doc.xpath(".//conditionalFormatting//cfRule//iconSet[@iconSet='5Rating']").size, 1)
100
-
101
- end
102
-
103
- def test_single_rule
104
- doc = Nokogiri::XML.parse(@cf.to_xml_string)
105
- assert_equal(1, doc.xpath(".//conditionalFormatting//cfRule[@type='cellIs'][@dxfId=0][@priority=1][@operator='greaterThan']").size)
106
- assert doc.xpath(".//conditionalFormatting//cfRule[@type='cellIs'][@dxfId=0][@priority=1][@operator='greaterThan']//formula='0.5'")
107
- end
108
-
109
- def test_many_options
110
- cf = Axlsx::ConditionalFormatting.new( :sqref => "B3:B4" )
111
- cf.add_rule({:type => :cellIs, :aboveAverage => false, :bottom => false, :dxfId => 0,
112
- :equalAverage => false, :priority => 2, :operator => :lessThan, :text => "",
113
- :percent => false, :rank => 0, :stdDev => 1, :stopIfTrue => true, :timePeriod => :today,
114
- :formula => "0.0"})
115
- doc = Nokogiri::XML.parse(cf.to_xml_string)
116
- assert_equal(1, doc.xpath(".//conditionalFormatting//cfRule[@type='cellIs'][@aboveAverage=0][@bottom=0][@dxfId=0][@equalAverage=0][@priority=2][@operator='lessThan'][@text=''][@percent=0][@rank=0][@stdDev=1][@stopIfTrue=1][@timePeriod='today']").size)
117
- assert doc.xpath(".//conditionalFormatting//cfRule[@type='cellIs'][@aboveAverage=0][@bottom=0][@dxfId=0][@equalAverage=0][@priority=2][@operator='lessThan'][@text=''][@percent=0][@rank=0][@stdDev=1][@stopIfTrue=1][@timePeriod='today']//formula=0.0")
118
- end
119
-
120
- def test_to_xml
121
- doc = Nokogiri::XML.parse(@ws.to_xml_string)
122
- assert_equal(1, doc.xpath("//xmlns:worksheet/xmlns:conditionalFormatting//xmlns:cfRule[@type='cellIs'][@dxfId=0][@priority=1][@operator='greaterThan']").size)
123
- assert doc.xpath("//xmlns:worksheet/xmlns:conditionalFormatting//xmlns:cfRule[@type='cellIs'][@dxfId=0][@priority=1][@operator='greaterThan']//xmlns:formula='0.5'")
124
- end
125
-
126
- def test_multiple_formats
127
- @ws.add_conditional_formatting "B3:B3", { :type => :cellIs, :dxfId => 0, :priority => 1, :operator => :greaterThan, :formula => "1" }
128
- doc = Nokogiri::XML.parse(@ws.to_xml_string)
129
- assert doc.xpath("//xmlns:worksheet/xmlns:conditionalFormatting//xmlns:cfRule[@type='cellIs'][@dxfId=0][@priority=1][@operator='greaterThan']//xmlns:formula='1'")
130
- assert doc.xpath("//xmlns:worksheet/xmlns:conditionalFormatting//xmlns:cfRule[@type='cellIs'][@dxfId=0][@priority=1][@operator='greaterThan']//xmlns:formula='0.5'")
131
- end
132
-
133
- def test_multiple_formulas
134
- @ws.add_conditional_formatting "B3:B3", { :type => :cellIs, :dxfId => 0, :priority => 1, :operator => :between, :formula => ["1 <> 2","5"] }
135
- doc = Nokogiri::XML.parse(@ws.to_xml_string)
136
- assert doc.xpath("//xmlns:worksheet/xmlns:conditionalFormatting//xmlns:cfRule[@type='cellIs'][@dxfId=0][@priority=1][@operator='between']//xmlns:formula='1 <> 2'")
137
- assert doc.xpath("//xmlns:worksheet/xmlns:conditionalFormatting//xmlns:cfRule[@type='cellIs'][@dxfId=0][@priority=1][@operator='between']//xmlns:formula='5'")
138
- end
139
-
140
- def test_sqref
141
- assert_raise(ArgumentError) { @cf.sqref = 10 }
142
- assert_nothing_raised { @cf.sqref = "A1:A1" }
143
- assert_equal(@cf.sqref, "A1:A1")
144
- end
145
-
146
- def test_type
147
- assert_raise(ArgumentError) { @cfr.type = "illegal" }
148
- assert_nothing_raised { @cfr.type = :containsBlanks }
149
- assert_equal(@cfr.type, :containsBlanks)
150
- end
151
-
152
- def test_above_average
153
- assert_raise(ArgumentError) { @cfr.aboveAverage = "illegal" }
154
- assert_nothing_raised { @cfr.aboveAverage = true }
155
- assert_equal(@cfr.aboveAverage, true)
156
- end
157
-
158
- def test_equal_average
159
- assert_raise(ArgumentError) { @cfr.equalAverage = "illegal" }
160
- assert_nothing_raised { @cfr.equalAverage = true }
161
- assert_equal(@cfr.equalAverage, true)
162
- end
163
-
164
- def test_bottom
165
- assert_raise(ArgumentError) { @cfr.bottom = "illegal" }
166
- assert_nothing_raised { @cfr.bottom = true }
167
- assert_equal(@cfr.bottom, true)
168
- end
169
-
170
- def test_operator
171
- assert_raise(ArgumentError) { @cfr.operator = "cellIs" }
172
- assert_nothing_raised { @cfr.operator = :notBetween }
173
- assert_equal(@cfr.operator, :notBetween)
174
- end
175
-
176
- def test_dxf_id
177
- assert_raise(ArgumentError) { @cfr.dxfId = "illegal" }
178
- assert_nothing_raised { @cfr.dxfId = 1 }
179
- assert_equal(@cfr.dxfId, 1)
180
- end
181
-
182
- def test_priority
183
- assert_raise(ArgumentError) { @cfr.priority = -1.0 }
184
- assert_nothing_raised { @cfr.priority = 1 }
185
- assert_equal(@cfr.priority, 1)
186
- end
187
-
188
- def test_text
189
- assert_raise(ArgumentError) { @cfr.text = 1.0 }
190
- assert_nothing_raised { @cfr.text = "testing" }
191
- assert_equal(@cfr.text, "testing")
192
- end
193
-
194
- def test_percent
195
- assert_raise(ArgumentError) { @cfr.percent = "10%" } #WRONG!
196
- assert_nothing_raised { @cfr.percent = true }
197
- assert_equal(@cfr.percent, true)
198
- end
199
-
200
- def test_rank
201
- assert_raise(ArgumentError) { @cfr.rank = -1 }
202
- assert_nothing_raised { @cfr.rank = 1 }
203
- assert_equal(@cfr.rank, 1)
204
- end
205
-
206
- def test_std_dev
207
- assert_raise(ArgumentError) { @cfr.stdDev = -1 }
208
- assert_nothing_raised { @cfr.stdDev = 1 }
209
- assert_equal(@cfr.stdDev, 1)
210
- end
211
-
212
- def test_stop_if_true
213
- assert_raise(ArgumentError) { @cfr.stopIfTrue = "illegal" }
214
- assert_nothing_raised { @cfr.stopIfTrue = false }
215
- assert_equal(@cfr.stopIfTrue, false)
216
- end
217
-
218
- def test_time_period
219
- assert_raise(ArgumentError) { @cfr.timePeriod = "illegal" }
220
- assert_nothing_raised { @cfr.timePeriod = :today }
221
- assert_equal(@cfr.timePeriod, :today)
222
- end
223
-
224
- end
@@ -1,46 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestDataBar < Test::Unit::TestCase
4
- def setup
5
- @data_bar = Axlsx::DataBar.new :color => "FF638EC6"
6
- end
7
-
8
- def test_defaults
9
- assert_equal @data_bar.minLength, 10
10
- assert_equal @data_bar.maxLength, 90
11
- assert_equal @data_bar.showValue, true
12
- end
13
-
14
- def test_override_default_cfvos
15
- data_bar = Axlsx::DataBar.new({:color => 'FF00FF00'}, {:type => :min, :val => "20"})
16
- assert_equal("20", data_bar.value_objects.first.val)
17
- assert_equal("0", data_bar.value_objects.last.val)
18
- end
19
-
20
-
21
- def test_minLength
22
- assert_raise(ArgumentError) { @data_bar.minLength = :invalid_type }
23
- assert_nothing_raised { @data_bar.minLength = 0}
24
- assert_equal(@data_bar.minLength, 0)
25
- end
26
-
27
- def test_maxLength
28
- assert_raise(ArgumentError) { @data_bar.maxLength = :invalid_type }
29
- assert_nothing_raised { @data_bar.maxLength = 0}
30
- assert_equal(@data_bar.maxLength, 0)
31
- end
32
-
33
- def test_showValue
34
- assert_raise(ArgumentError) { @data_bar.showValue = :invalid_type }
35
- assert_nothing_raised { @data_bar.showValue = false}
36
- assert_equal(@data_bar.showValue, false)
37
- end
38
-
39
- def test_to_xml_string
40
- doc = Nokogiri::XML.parse(@data_bar.to_xml_string)
41
- assert_equal(doc.xpath(".//dataBar[@minLength=10][@maxLength=90][@showValue=1]").size, 1)
42
- assert_equal(doc.xpath(".//dataBar//cfvo").size, 2)
43
- assert_equal(doc.xpath(".//dataBar//color").size, 1)
44
- end
45
-
46
- end
@@ -1,265 +0,0 @@
1
- # encoding: UTF-8
2
- require 'tc_helper.rb'
3
-
4
-
5
- class TestDataValidation < Test::Unit::TestCase
6
- def setup
7
- #inverse defaults
8
- @boolean_options = { :allowBlank => false, :showDropDown => true, :showErrorMessage => false, :showInputMessage => true }
9
- @nil_options = { :formula1 => 'foo', :formula2 => 'foo', :errorTitle => 'foo', :operator => :lessThan, :prompt => 'foo', :promptTitle => 'foo', :sqref => 'foo' }
10
- @type_option = { :type => :whole }
11
- @error_style_option = { :errorStyle => :warning }
12
-
13
- @string_options = { :formula1 => 'foo', :formula2 => 'foo', :error => 'foo', :errorTitle => 'foo', :prompt => 'foo', :promptTitle => 'foo', :sqref => 'foo' }
14
- @symbol_options = { :errorStyle => :warning, :operator => :lessThan, :type => :whole}
15
-
16
- @options = @boolean_options.merge(@nil_options).merge(@type_option).merge(@error_style_option)
17
-
18
- @dv = Axlsx::DataValidation.new(@options)
19
- end
20
-
21
- def test_initialize
22
- dv = Axlsx::DataValidation.new
23
-
24
- @boolean_options.each do |key, value|
25
- assert_equal(!value, dv.send(key.to_sym), "initialized default #{key} should be #{!value}")
26
- assert_equal(value, @dv.send(key.to_sym), "initialized options #{key} should be #{value}")
27
- end
28
-
29
- @nil_options.each do |key, value|
30
- assert_equal(nil, dv.send(key.to_sym), "initialized default #{key} should be nil")
31
- assert_equal(value, @dv.send(key.to_sym), "initialized options #{key} should be #{value}")
32
- end
33
-
34
- @type_option.each do |key, value|
35
- assert_equal(:none, dv.send(key.to_sym), "initialized default #{key} should be :none")
36
- assert_equal(value, @dv.send(key.to_sym), "initialized options #{key} should be #{value}")
37
- end
38
-
39
- @error_style_option.each do |key, value|
40
- assert_equal(:stop, dv.send(key.to_sym), "initialized default #{key} should be :stop")
41
- assert_equal(value, @dv.send(key.to_sym), "initialized options #{key} should be #{value}")
42
- end
43
- end
44
-
45
- def test_boolean_attribute_validation
46
- @boolean_options.each do |key, value|
47
- assert_raise(ArgumentError, "#{key} must be boolean") { @dv.send("#{key}=".to_sym, 'A') }
48
- assert_nothing_raised { @dv.send("#{key}=".to_sym, true) }
49
- end
50
- end
51
-
52
- def test_string_attribute_validation
53
- @string_options.each do |key, value|
54
- assert_raise(ArgumentError, "#{key} must be string") { @dv.send("#{key}=".to_sym, :symbol) }
55
- assert_nothing_raised { @dv.send("#{key}=".to_sym, "foo") }
56
- end
57
- end
58
-
59
- def test_symbol_attribute_validation
60
- @symbol_options.each do |key, value|
61
- assert_raise(ArgumentError, "#{key} must be symbol") { @dv.send("#{key}=".to_sym, "foo") }
62
- assert_nothing_raised { @dv.send("#{key}=".to_sym, value) }
63
- end
64
- end
65
-
66
- def test_formula1
67
- assert_raise(ArgumentError) { @dv.formula1 = 10 }
68
- assert_nothing_raised { @dv.formula1 = "=SUM(A1:A1)" }
69
- assert_equal(@dv.formula1, "=SUM(A1:A1)")
70
- end
71
-
72
- def test_formula2
73
- assert_raise(ArgumentError) { @dv.formula2 = 10 }
74
- assert_nothing_raised { @dv.formula2 = "=SUM(A1:A1)" }
75
- assert_equal(@dv.formula2, "=SUM(A1:A1)")
76
- end
77
-
78
- def test_allowBlank
79
- assert_raise(ArgumentError) { @dv.allowBlank = "foo´" }
80
- assert_nothing_raised { @dv.allowBlank = false }
81
- assert_equal(@dv.allowBlank, false)
82
- end
83
-
84
- def test_error
85
- assert_raise(ArgumentError) { @dv.error = :symbol }
86
- assert_nothing_raised { @dv.error = "This is a error message" }
87
- assert_equal(@dv.error, "This is a error message")
88
- end
89
-
90
- def test_errorStyle
91
- assert_raise(ArgumentError) { @dv.errorStyle = "foo" }
92
- assert_nothing_raised { @dv.errorStyle = :information }
93
- assert_equal(@dv.errorStyle, :information)
94
- end
95
-
96
- def test_errorTitle
97
- assert_raise(ArgumentError) { @dv.errorTitle = :symbol }
98
- assert_nothing_raised { @dv.errorTitle = "This is the error title" }
99
- assert_equal(@dv.errorTitle, "This is the error title")
100
- end
101
-
102
- def test_operator
103
- assert_raise(ArgumentError) { @dv.operator = "foo" }
104
- assert_nothing_raised { @dv.operator = :greaterThan }
105
- assert_equal(@dv.operator, :greaterThan)
106
- end
107
-
108
- def test_prompt
109
- assert_raise(ArgumentError) { @dv.prompt = :symbol }
110
- assert_nothing_raised { @dv.prompt = "This is a prompt message" }
111
- assert_equal(@dv.prompt, "This is a prompt message")
112
- end
113
-
114
- def test_promptTitle
115
- assert_raise(ArgumentError) { @dv.promptTitle = :symbol }
116
- assert_nothing_raised { @dv.promptTitle = "This is the prompt title" }
117
- assert_equal(@dv.promptTitle, "This is the prompt title")
118
- end
119
-
120
- def test_showDropDown
121
- assert_raise(ArgumentError) { @dv.showDropDown = "foo´" }
122
- assert_nothing_raised { @dv.showDropDown = false }
123
- assert_equal(@dv.showDropDown, false)
124
- end
125
-
126
- def test_showErrorMessage
127
- assert_raise(ArgumentError) { @dv.showErrorMessage = "foo´" }
128
- assert_nothing_raised { @dv.showErrorMessage = false }
129
- assert_equal(@dv.showErrorMessage, false)
130
- end
131
-
132
- def test_showInputMessage
133
- assert_raise(ArgumentError) { @dv.showInputMessage = "foo´" }
134
- assert_nothing_raised { @dv.showInputMessage = false }
135
- assert_equal(@dv.showInputMessage, false)
136
- end
137
-
138
- def test_sqref
139
- assert_raise(ArgumentError) { @dv.sqref = 10 }
140
- assert_nothing_raised { @dv.sqref = "A1:A1" }
141
- assert_equal(@dv.sqref, "A1:A1")
142
- end
143
-
144
- def test_type
145
- assert_raise(ArgumentError) { @dv.type = "foo" }
146
- assert_nothing_raised { @dv.type = :list }
147
- assert_equal(@dv.type, :list)
148
- end
149
-
150
- def test_whole_decimal_data_time_textLength_to_xml
151
- p = Axlsx::Package.new
152
- @ws = p.workbook.add_worksheet :name=>"data_validation"
153
- @ws.add_data_validation("A1", { :type => :whole, :operator => :between, :formula1 => '5', :formula2 => '10',
154
- :showErrorMessage => true, :errorTitle => 'Wrong input', :error => 'Only values between 5 and 10',
155
- :errorStyle => :information, :showInputMessage => true, :promptTitle => 'Be carful!',
156
- :prompt => 'Only values between 5 and 10'})
157
-
158
- doc = Nokogiri::XML.parse(@ws.to_xml_string)
159
-
160
- #test attributes
161
- assert_equal(1, doc.xpath("//xmlns:worksheet/xmlns:dataValidations[@count='1']/xmlns:dataValidation[@sqref='A1']
162
- [@promptTitle='Be carful!'][@prompt='Only values between 5 and 10'][@operator='between'][@errorTitle='Wrong input']
163
- [@error='Only values between 5 and 10'][@showErrorMessage=1][@allowBlank=1][@showInputMessage=1][@type='whole']
164
- [@errorStyle='information']").size)
165
- assert doc.xpath("//xmlns:worksheet/xmlns:dataValidations[@count='1']/xmlns:dataValidation[@sqref='A1']
166
- [@promptTitle='Be carful!'][@prompt='Only values between 5 and 10'][@operator='between'][@errorTitle='Wrong input']
167
- [@error='Only values between 5 and 10'][@showErrorMessage=1][@allowBlank=1][@showInputMessage=1]
168
- [@type='whole'][@errorStyle='information']")
169
-
170
- #test forumula1
171
- assert_equal(1, doc.xpath("//xmlns:worksheet/xmlns:dataValidations/xmlns:dataValidation/xmlns:formula1").size)
172
- assert doc.xpath("//xmlns:worksheet/xmlns:dataValidations/xmlns:dataValidation/xmlns:formula1='5'")
173
-
174
- #test forumula2
175
- assert_equal(1, doc.xpath("//xmlns:worksheet/xmlns:dataValidations/xmlns:dataValidation/xmlns:formula2").size)
176
- assert doc.xpath("//xmlns:worksheet/xmlns:dataValidations/xmlns:dataValidation/xmlns:formula2='10'")
177
- end
178
-
179
- def test_list_to_xml
180
- p = Axlsx::Package.new
181
- @ws = p.workbook.add_worksheet :name=>"data_validation"
182
- @ws.add_data_validation("A1", { :type => :list, :formula1 => 'A1:A5',
183
- :showErrorMessage => true, :errorTitle => 'Wrong input', :error => 'Only values from list',
184
- :errorStyle => :stop, :showInputMessage => true, :promptTitle => 'Be carful!',
185
- :prompt => 'Only values from list', :showDropDown => true})
186
-
187
- doc = Nokogiri::XML.parse(@ws.to_xml_string)
188
-
189
- #test attributes
190
- assert_equal(1, doc.xpath("//xmlns:worksheet/xmlns:dataValidations[@count='1']/xmlns:dataValidation[@sqref='A1']
191
- [@promptTitle='Be carful!'][@prompt='Only values from list'][@errorTitle='Wrong input'][@error='Only values from list']
192
- [@showErrorMessage=1][@allowBlank=1][@showInputMessage=1][@showDropDown=1][@type='list']
193
- [@errorStyle='stop']").size)
194
- assert doc.xpath("//xmlns:worksheet/xmlns:dataValidations[@count='1']/xmlns:dataValidation[@sqref='A1']
195
- [@promptTitle='Be carful!'][@prompt='Only values from list'][@errorTitle='Wrong input'][@error='Only values from list']
196
- [@showErrorMessage=1][@allowBlank=1][@showInputMessage=1][@showDropDown=1][@type='list'][@errorStyle='stop']")
197
-
198
- #test forumula1
199
- assert_equal(1, doc.xpath("//xmlns:worksheet/xmlns:dataValidations/xmlns:dataValidation/xmlns:formula1").size)
200
- assert doc.xpath("//xmlns:worksheet/xmlns:dataValidations/xmlns:dataValidation/xmlns:formula1='A1:A5'")
201
- end
202
-
203
- def test_custom_to_xml
204
- p = Axlsx::Package.new
205
- @ws = p.workbook.add_worksheet :name=>"data_validation"
206
- @ws.add_data_validation("A1", { :type => :custom, :formula1 => '=5/2',
207
- :showErrorMessage => true, :errorTitle => 'Wrong input', :error => 'Only values corresponding formula',
208
- :errorStyle => :stop, :showInputMessage => true, :promptTitle => 'Be carful!',
209
- :prompt => 'Only values corresponding formula'})
210
-
211
- doc = Nokogiri::XML.parse(@ws.to_xml_string)
212
-
213
- #test attributes
214
- assert_equal(1, doc.xpath("//xmlns:worksheet/xmlns:dataValidations[@count='1']/xmlns:dataValidation[@sqref='A1'][@promptTitle='Be carful!']
215
- [@prompt='Only values corresponding formula'][@errorTitle='Wrong input'][@error='Only values corresponding formula'][@showErrorMessage=1]
216
- [@allowBlank=1][@showInputMessage=1][@type='custom'][@errorStyle='stop']").size)
217
- assert doc.xpath("//xmlns:worksheet/xmlns:dataValidations[@count='1']/xmlns:dataValidation[@sqref='A1'][@promptTitle='Be carful!']
218
- [@prompt='Only values corresponding formula'][@errorTitle='Wrong input'][@error='Only values corresponding formula']
219
- [@showErrorMessage=1][@allowBlank=1][@showInputMessage=1][@type='custom'][@errorStyle='stop']")
220
-
221
- #test forumula1
222
- assert_equal(1, doc.xpath("//xmlns:worksheet/xmlns:dataValidations/xmlns:dataValidation/xmlns:formula1").size)
223
- assert doc.xpath("//xmlns:worksheet/xmlns:dataValidations/xmlns:dataValidation/xmlns:formula1='=5/2'")
224
- end
225
-
226
- def test_multiple_datavalidations_to_xml
227
- p = Axlsx::Package.new
228
- @ws = p.workbook.add_worksheet :name=>"data_validation"
229
- @ws.add_data_validation("A1", { :type => :whole, :operator => :between, :formula1 => '5', :formula2 => '10',
230
- :showErrorMessage => true, :errorTitle => 'Wrong input', :error => 'Only values between 5 and 10',
231
- :errorStyle => :information, :showInputMessage => true, :promptTitle => 'Be carful!',
232
- :prompt => 'Only values between 5 and 10'})
233
- @ws.add_data_validation("B1", { :type => :list, :formula1 => 'A1:A5',
234
- :showErrorMessage => true, :errorTitle => 'Wrong input', :error => 'Only values from list',
235
- :errorStyle => :stop, :showInputMessage => true, :promptTitle => 'Be carful!',
236
- :prompt => 'Only values from list', :showDropDown => true})
237
-
238
- doc = Nokogiri::XML.parse(@ws.to_xml_string)
239
-
240
- #test attributes
241
- assert_equal(1, doc.xpath("//xmlns:worksheet/xmlns:dataValidations[@count='2']/xmlns:dataValidation[@sqref='A1']
242
- [@promptTitle='Be carful!'][@prompt='Only values between 5 and 10'][@operator='between'][@errorTitle='Wrong input']
243
- [@error='Only values between 5 and 10'][@showErrorMessage=1][@allowBlank=1][@showInputMessage=1][@type='whole']
244
- [@errorStyle='information']").size)
245
- assert doc.xpath("//xmlns:worksheet/xmlns:dataValidations[@count='2']/xmlns:dataValidation[@sqref='A1']
246
- [@promptTitle='Be carful!'][@prompt='Only values between 5 and 10'][@operator='between'][@errorTitle='Wrong input']
247
- [@error='Only values between 5 and 10'][@showErrorMessage=1][@allowBlank=1][@showInputMessage=1]
248
- [@type='whole'][@errorStyle='information']")
249
-
250
- #test attributes
251
- assert_equal(1, doc.xpath("//xmlns:worksheet/xmlns:dataValidations[@count='2']/xmlns:dataValidation[@sqref='B1']
252
- [@promptTitle='Be carful!'][@prompt='Only values from list'][@errorTitle='Wrong input'][@error='Only values from list']
253
- [@showErrorMessage=1][@allowBlank=1][@showInputMessage=1][@showDropDown=1][@type='list']
254
- [@errorStyle='stop']").size)
255
- assert doc.xpath("//xmlns:worksheet/xmlns:dataValidations[@count='2']/xmlns:dataValidation[@sqref='B1']
256
- [@promptTitle='Be carful!'][@prompt='Only values from list'][@errorTitle='Wrong input'][@error='Only values from list']
257
- [@showErrorMessage=1][@allowBlank=1][@showInputMessage=1][@showDropDown=1][@type='list'][@errorStyle='stop']")
258
- end
259
-
260
- def test_empty_attributes
261
- v = Axlsx::DataValidation.new
262
- assert_equal(nil, v.send(:get_valid_attributes))
263
-
264
- end
265
- end