l_axlsx 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (321) hide show
  1. data/.yardopts +9 -0
  2. data/.yardopts_guide +19 -0
  3. data/CHANGELOG.md +239 -0
  4. data/LICENSE +22 -0
  5. data/README.md +259 -0
  6. data/Rakefile +30 -0
  7. data/examples/2010_comments.rb +17 -0
  8. data/examples/IMAGE1UP.JPEG +0 -0
  9. data/examples/anchor_swapping.rb +28 -0
  10. data/examples/auto_filter.rb +16 -0
  11. data/examples/basic_charts.rb +58 -0
  12. data/examples/chart_colors.rb +88 -0
  13. data/examples/colored_links.rb +59 -0
  14. data/examples/conditional_formatting/example_conditional_formatting.rb +74 -0
  15. data/examples/conditional_formatting/getting_barred.rb +37 -0
  16. data/examples/conditional_formatting/hitting_the_high_notes.rb +37 -0
  17. data/examples/conditional_formatting/scaled_colors.rb +39 -0
  18. data/examples/conditional_formatting/stop_and_go.rb +37 -0
  19. data/examples/data_validation.rb +50 -0
  20. data/examples/example.rb +828 -0
  21. data/examples/extractive.rb +45 -0
  22. data/examples/image1.jpeg +0 -0
  23. data/examples/ios_preview.rb +14 -0
  24. data/examples/merge_cells.rb +17 -0
  25. data/examples/no_grid_with_borders.rb +18 -0
  26. data/examples/page_setup.rb +11 -0
  27. data/examples/pivot_table.rb +39 -0
  28. data/examples/pivot_test.rb +63 -0
  29. data/examples/sheet_protection.rb +10 -0
  30. data/examples/skydrive/real_example.rb +63 -0
  31. data/examples/split.rb +16 -0
  32. data/examples/styles.rb +66 -0
  33. data/examples/underline.rb +13 -0
  34. data/examples/wrap_text.rb +21 -0
  35. data/lib/axlsx.rb +166 -0
  36. data/lib/axlsx/content_type/abstract_content_type.rb +32 -0
  37. data/lib/axlsx/content_type/content_type.rb +26 -0
  38. data/lib/axlsx/content_type/default.rb +25 -0
  39. data/lib/axlsx/content_type/override.rb +25 -0
  40. data/lib/axlsx/doc_props/app.rb +235 -0
  41. data/lib/axlsx/doc_props/core.rb +39 -0
  42. data/lib/axlsx/drawing/ax_data_source.rb +26 -0
  43. data/lib/axlsx/drawing/axes.rb +61 -0
  44. data/lib/axlsx/drawing/axis.rb +190 -0
  45. data/lib/axlsx/drawing/bar_3D_chart.rb +151 -0
  46. data/lib/axlsx/drawing/bar_series.rb +82 -0
  47. data/lib/axlsx/drawing/bubble_chart.rb +59 -0
  48. data/lib/axlsx/drawing/bubble_series.rb +63 -0
  49. data/lib/axlsx/drawing/cat_axis.rb +85 -0
  50. data/lib/axlsx/drawing/chart.rb +232 -0
  51. data/lib/axlsx/drawing/d_lbls.rb +90 -0
  52. data/lib/axlsx/drawing/drawing.rb +164 -0
  53. data/lib/axlsx/drawing/graphic_frame.rb +54 -0
  54. data/lib/axlsx/drawing/hyperlink.rb +100 -0
  55. data/lib/axlsx/drawing/line_3D_chart.rb +68 -0
  56. data/lib/axlsx/drawing/line_chart.rb +99 -0
  57. data/lib/axlsx/drawing/line_series.rb +93 -0
  58. data/lib/axlsx/drawing/marker.rb +84 -0
  59. data/lib/axlsx/drawing/num_data.rb +52 -0
  60. data/lib/axlsx/drawing/num_data_source.rb +62 -0
  61. data/lib/axlsx/drawing/num_val.rb +32 -0
  62. data/lib/axlsx/drawing/one_cell_anchor.rb +98 -0
  63. data/lib/axlsx/drawing/pic.rb +204 -0
  64. data/lib/axlsx/drawing/picture_locking.rb +42 -0
  65. data/lib/axlsx/drawing/pie_3D_chart.rb +47 -0
  66. data/lib/axlsx/drawing/pie_series.rb +74 -0
  67. data/lib/axlsx/drawing/scaling.rb +60 -0
  68. data/lib/axlsx/drawing/scatter_chart.rb +74 -0
  69. data/lib/axlsx/drawing/scatter_series.rb +65 -0
  70. data/lib/axlsx/drawing/ser_axis.rb +45 -0
  71. data/lib/axlsx/drawing/series.rb +69 -0
  72. data/lib/axlsx/drawing/series_title.rb +23 -0
  73. data/lib/axlsx/drawing/str_data.rb +42 -0
  74. data/lib/axlsx/drawing/str_val.rb +32 -0
  75. data/lib/axlsx/drawing/title.rb +78 -0
  76. data/lib/axlsx/drawing/two_cell_anchor.rb +92 -0
  77. data/lib/axlsx/drawing/val_axis.rb +37 -0
  78. data/lib/axlsx/drawing/view_3D.rb +115 -0
  79. data/lib/axlsx/drawing/vml_drawing.rb +42 -0
  80. data/lib/axlsx/drawing/vml_shape.rb +66 -0
  81. data/lib/axlsx/package.rb +363 -0
  82. data/lib/axlsx/rels/relationship.rb +129 -0
  83. data/lib/axlsx/rels/relationships.rb +29 -0
  84. data/lib/axlsx/stylesheet/border.rb +71 -0
  85. data/lib/axlsx/stylesheet/border_pr.rb +71 -0
  86. data/lib/axlsx/stylesheet/cell_alignment.rb +132 -0
  87. data/lib/axlsx/stylesheet/cell_protection.rb +41 -0
  88. data/lib/axlsx/stylesheet/cell_style.rb +72 -0
  89. data/lib/axlsx/stylesheet/color.rb +76 -0
  90. data/lib/axlsx/stylesheet/dxf.rb +79 -0
  91. data/lib/axlsx/stylesheet/fill.rb +35 -0
  92. data/lib/axlsx/stylesheet/font.rb +148 -0
  93. data/lib/axlsx/stylesheet/gradient_fill.rb +103 -0
  94. data/lib/axlsx/stylesheet/gradient_stop.rb +37 -0
  95. data/lib/axlsx/stylesheet/num_fmt.rb +77 -0
  96. data/lib/axlsx/stylesheet/pattern_fill.rb +73 -0
  97. data/lib/axlsx/stylesheet/styles.rb +420 -0
  98. data/lib/axlsx/stylesheet/table_style.rb +54 -0
  99. data/lib/axlsx/stylesheet/table_style_element.rb +77 -0
  100. data/lib/axlsx/stylesheet/table_styles.rb +46 -0
  101. data/lib/axlsx/stylesheet/xf.rb +147 -0
  102. data/lib/axlsx/util/accessors.rb +64 -0
  103. data/lib/axlsx/util/constants.rb +397 -0
  104. data/lib/axlsx/util/options_parser.rb +16 -0
  105. data/lib/axlsx/util/parser.rb +44 -0
  106. data/lib/axlsx/util/serialized_attributes.rb +89 -0
  107. data/lib/axlsx/util/simple_typed_list.rb +179 -0
  108. data/lib/axlsx/util/storage.rb +146 -0
  109. data/lib/axlsx/util/string.rb +7 -0
  110. data/lib/axlsx/util/validators.rb +307 -0
  111. data/lib/axlsx/version.rb +5 -0
  112. data/lib/axlsx/workbook/defined_name.rb +128 -0
  113. data/lib/axlsx/workbook/defined_names.rb +21 -0
  114. data/lib/axlsx/workbook/shared_strings_table.rb +77 -0
  115. data/lib/axlsx/workbook/workbook.rb +361 -0
  116. data/lib/axlsx/workbook/workbook_view.rb +78 -0
  117. data/lib/axlsx/workbook/workbook_views.rb +22 -0
  118. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -0
  119. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -0
  120. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -0
  121. data/lib/axlsx/workbook/worksheet/break.rb +35 -0
  122. data/lib/axlsx/workbook/worksheet/cell.rb +471 -0
  123. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +154 -0
  124. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -0
  125. data/lib/axlsx/workbook/worksheet/cfvos.rb +15 -0
  126. data/lib/axlsx/workbook/worksheet/col.rb +141 -0
  127. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -0
  128. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -0
  129. data/lib/axlsx/workbook/worksheet/cols.rb +20 -0
  130. data/lib/axlsx/workbook/worksheet/comment.rb +91 -0
  131. data/lib/axlsx/workbook/worksheet/comments.rb +82 -0
  132. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -0
  133. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -0
  134. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -0
  135. data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -0
  136. data/lib/axlsx/workbook/worksheet/data_validation.rb +246 -0
  137. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -0
  138. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -0
  139. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -0
  140. data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -0
  141. data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -0
  142. data/lib/axlsx/workbook/worksheet/merged_cells.rb +35 -0
  143. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -0
  144. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -0
  145. data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -0
  146. data/lib/axlsx/workbook/worksheet/pane.rb +139 -0
  147. data/lib/axlsx/workbook/worksheet/pivot_table.rb +266 -0
  148. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -0
  149. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -0
  150. data/lib/axlsx/workbook/worksheet/print_options.rb +39 -0
  151. data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -0
  152. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +34 -0
  153. data/lib/axlsx/workbook/worksheet/rich_text.rb +35 -0
  154. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +254 -0
  155. data/lib/axlsx/workbook/worksheet/row.rb +154 -0
  156. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -0
  157. data/lib/axlsx/workbook/worksheet/selection.rb +101 -0
  158. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -0
  159. data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -0
  160. data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +60 -0
  161. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +69 -0
  162. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -0
  163. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -0
  164. data/lib/axlsx/workbook/worksheet/table.rb +102 -0
  165. data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -0
  166. data/lib/axlsx/workbook/worksheet/tables.rb +31 -0
  167. data/lib/axlsx/workbook/worksheet/worksheet.rb +798 -0
  168. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -0
  169. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -0
  170. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -0
  171. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -0
  172. data/lib/schema/dc.xsd +118 -0
  173. data/lib/schema/dcmitype.xsd +52 -0
  174. data/lib/schema/dcterms.xsd +331 -0
  175. data/lib/schema/dml-chart.xsd +1499 -0
  176. data/lib/schema/dml-chartDrawing.xsd +146 -0
  177. data/lib/schema/dml-compatibility.xsd +14 -0
  178. data/lib/schema/dml-diagram.xsd +1091 -0
  179. data/lib/schema/dml-lockedCanvas.xsd +11 -0
  180. data/lib/schema/dml-main.xsd +3048 -0
  181. data/lib/schema/dml-picture.xsd +23 -0
  182. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -0
  183. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -0
  184. data/lib/schema/opc-contentTypes.xsd +42 -0
  185. data/lib/schema/opc-coreProperties.xsd +54 -0
  186. data/lib/schema/opc-digSig.xsd +49 -0
  187. data/lib/schema/opc-relationships.xsd +33 -0
  188. data/lib/schema/pml.xsd +1676 -0
  189. data/lib/schema/shared-additionalCharacteristics.xsd +28 -0
  190. data/lib/schema/shared-bibliography.xsd +144 -0
  191. data/lib/schema/shared-commonSimpleTypes.xsd +166 -0
  192. data/lib/schema/shared-customXmlDataProperties.xsd +25 -0
  193. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -0
  194. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -0
  195. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -0
  196. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -0
  197. data/lib/schema/shared-math.xsd +582 -0
  198. data/lib/schema/shared-relationshipReference.xsd +25 -0
  199. data/lib/schema/sml.xsd +4434 -0
  200. data/lib/schema/vml-main.xsd +569 -0
  201. data/lib/schema/vml-officeDrawing.xsd +509 -0
  202. data/lib/schema/vml-presentationDrawing.xsd +12 -0
  203. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -0
  204. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -0
  205. data/lib/schema/wml.xsd +3644 -0
  206. data/lib/schema/xml.xsd +116 -0
  207. data/test/benchmark.rb +72 -0
  208. data/test/content_type/tc_content_type.rb +76 -0
  209. data/test/content_type/tc_default.rb +16 -0
  210. data/test/content_type/tc_override.rb +14 -0
  211. data/test/doc_props/tc_app.rb +43 -0
  212. data/test/doc_props/tc_core.rb +42 -0
  213. data/test/drawing/tc_axes.rb +8 -0
  214. data/test/drawing/tc_axis.rb +112 -0
  215. data/test/drawing/tc_bar_3D_chart.rb +71 -0
  216. data/test/drawing/tc_bar_series.rb +37 -0
  217. data/test/drawing/tc_bubble_chart.rb +44 -0
  218. data/test/drawing/tc_bubble_series.rb +21 -0
  219. data/test/drawing/tc_cat_axis.rb +31 -0
  220. data/test/drawing/tc_cat_axis_data.rb +27 -0
  221. data/test/drawing/tc_chart.rb +110 -0
  222. data/test/drawing/tc_d_lbls.rb +57 -0
  223. data/test/drawing/tc_data_source.rb +23 -0
  224. data/test/drawing/tc_drawing.rb +80 -0
  225. data/test/drawing/tc_graphic_frame.rb +27 -0
  226. data/test/drawing/tc_hyperlink.rb +64 -0
  227. data/test/drawing/tc_line_3d_chart.rb +47 -0
  228. data/test/drawing/tc_line_chart.rb +39 -0
  229. data/test/drawing/tc_line_series.rb +38 -0
  230. data/test/drawing/tc_marker.rb +44 -0
  231. data/test/drawing/tc_named_axis_data.rb +27 -0
  232. data/test/drawing/tc_num_data.rb +31 -0
  233. data/test/drawing/tc_num_val.rb +29 -0
  234. data/test/drawing/tc_one_cell_anchor.rb +66 -0
  235. data/test/drawing/tc_pic.rb +107 -0
  236. data/test/drawing/tc_picture_locking.rb +72 -0
  237. data/test/drawing/tc_pie_3D_chart.rb +28 -0
  238. data/test/drawing/tc_pie_series.rb +32 -0
  239. data/test/drawing/tc_scaling.rb +36 -0
  240. data/test/drawing/tc_scatter_chart.rb +48 -0
  241. data/test/drawing/tc_scatter_series.rb +21 -0
  242. data/test/drawing/tc_ser_axis.rb +31 -0
  243. data/test/drawing/tc_series.rb +23 -0
  244. data/test/drawing/tc_series_title.rb +33 -0
  245. data/test/drawing/tc_str_data.rb +18 -0
  246. data/test/drawing/tc_str_val.rb +21 -0
  247. data/test/drawing/tc_title.rb +49 -0
  248. data/test/drawing/tc_two_cell_anchor.rb +36 -0
  249. data/test/drawing/tc_val_axis.rb +24 -0
  250. data/test/drawing/tc_view_3D.rb +54 -0
  251. data/test/drawing/tc_vml_drawing.rb +25 -0
  252. data/test/drawing/tc_vml_shape.rb +106 -0
  253. data/test/profile.rb +24 -0
  254. data/test/rels/tc_relationship.rb +44 -0
  255. data/test/rels/tc_relationships.rb +37 -0
  256. data/test/stylesheet/tc_border.rb +37 -0
  257. data/test/stylesheet/tc_border_pr.rb +32 -0
  258. data/test/stylesheet/tc_cell_alignment.rb +81 -0
  259. data/test/stylesheet/tc_cell_protection.rb +29 -0
  260. data/test/stylesheet/tc_cell_style.rb +57 -0
  261. data/test/stylesheet/tc_color.rb +43 -0
  262. data/test/stylesheet/tc_dxf.rb +81 -0
  263. data/test/stylesheet/tc_fill.rb +18 -0
  264. data/test/stylesheet/tc_font.rb +121 -0
  265. data/test/stylesheet/tc_gradient_fill.rb +72 -0
  266. data/test/stylesheet/tc_gradient_stop.rb +31 -0
  267. data/test/stylesheet/tc_num_fmt.rb +30 -0
  268. data/test/stylesheet/tc_pattern_fill.rb +43 -0
  269. data/test/stylesheet/tc_styles.rb +235 -0
  270. data/test/stylesheet/tc_table_style.rb +44 -0
  271. data/test/stylesheet/tc_table_style_element.rb +45 -0
  272. data/test/stylesheet/tc_table_styles.rb +29 -0
  273. data/test/stylesheet/tc_xf.rb +120 -0
  274. data/test/tc_axlsx.rb +72 -0
  275. data/test/tc_helper.rb +10 -0
  276. data/test/tc_package.rb +233 -0
  277. data/test/util/tc_serialized_attributes.rb +19 -0
  278. data/test/util/tc_simple_typed_list.rb +77 -0
  279. data/test/util/tc_validators.rb +186 -0
  280. data/test/workbook/tc_defined_name.rb +49 -0
  281. data/test/workbook/tc_shared_strings_table.rb +44 -0
  282. data/test/workbook/tc_workbook.rb +139 -0
  283. data/test/workbook/tc_workbook_view.rb +50 -0
  284. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -0
  285. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -0
  286. data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -0
  287. data/test/workbook/worksheet/tc_break.rb +49 -0
  288. data/test/workbook/worksheet/tc_cell.rb +345 -0
  289. data/test/workbook/worksheet/tc_cfvo.rb +31 -0
  290. data/test/workbook/worksheet/tc_col.rb +78 -0
  291. data/test/workbook/worksheet/tc_color_scale.rb +58 -0
  292. data/test/workbook/worksheet/tc_comment.rb +72 -0
  293. data/test/workbook/worksheet/tc_comments.rb +57 -0
  294. data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -0
  295. data/test/workbook/worksheet/tc_data_bar.rb +46 -0
  296. data/test/workbook/worksheet/tc_data_validation.rb +265 -0
  297. data/test/workbook/worksheet/tc_date_time_converter.rb +124 -0
  298. data/test/workbook/worksheet/tc_header_footer.rb +151 -0
  299. data/test/workbook/worksheet/tc_icon_set.rb +45 -0
  300. data/test/workbook/worksheet/tc_page_margins.rb +97 -0
  301. data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -0
  302. data/test/workbook/worksheet/tc_page_setup.rb +143 -0
  303. data/test/workbook/worksheet/tc_pane.rb +54 -0
  304. data/test/workbook/worksheet/tc_pivot_table.rb +120 -0
  305. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +54 -0
  306. data/test/workbook/worksheet/tc_print_options.rb +72 -0
  307. data/test/workbook/worksheet/tc_protected_range.rb +17 -0
  308. data/test/workbook/worksheet/tc_rich_text.rb +44 -0
  309. data/test/workbook/worksheet/tc_rich_text_run.rb +172 -0
  310. data/test/workbook/worksheet/tc_row.rb +117 -0
  311. data/test/workbook/worksheet/tc_selection.rb +55 -0
  312. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -0
  313. data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -0
  314. data/test/workbook/worksheet/tc_sheet_pr.rb +27 -0
  315. data/test/workbook/worksheet/tc_sheet_protection.rb +117 -0
  316. data/test/workbook/worksheet/tc_sheet_view.rb +214 -0
  317. data/test/workbook/worksheet/tc_table.rb +68 -0
  318. data/test/workbook/worksheet/tc_table_style_info.rb +53 -0
  319. data/test/workbook/worksheet/tc_worksheet.rb +563 -0
  320. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -0
  321. metadata +583 -0
@@ -0,0 +1,72 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestAxlsx < Test::Unit::TestCase
4
+
5
+ def setup_wide
6
+ @wide_test_points = { "A3" => 0,
7
+ "Z3" => 25,
8
+ "B3" => 1,
9
+ "AA3" => 1 * 26 + 0,
10
+ "AAA3" => 1 * 26**2 + 1 * 26 + 0,
11
+ "AAZ3" => 1 * 26**2 + 1 * 26 + 25,
12
+ "ABA3" => 1 * 26**2 + 2 * 26 + 0,
13
+ "BZU3" => 2 * 26**2 + 26 * 26 + 20
14
+ }
15
+ end
16
+
17
+ def test_cell_range_empty_if_no_cell
18
+ assert_equal(Axlsx.cell_range([]), "")
19
+ end
20
+
21
+ def test_do_not_trust_input_by_default
22
+ assert_equal false, Axlsx.trust_input
23
+ end
24
+
25
+
26
+ def test_trust_input_can_be_set_to_true
27
+ Axlsx.trust_input = true
28
+ assert_equal true, Axlsx.trust_input
29
+ end
30
+ def test_cell_range_relative
31
+ p = Axlsx::Package.new
32
+ ws = p.workbook.add_worksheet
33
+ row = ws.add_row
34
+ c1 = row.add_cell
35
+ c2 = row.add_cell
36
+ assert_equal(Axlsx.cell_range([c2, c1], false), "A1:B1")
37
+ end
38
+
39
+ def test_cell_range_absolute
40
+ p = Axlsx::Package.new
41
+ ws = p.workbook.add_worksheet :name => "Sheet <'>\" 1"
42
+ row = ws.add_row
43
+ c1 = row.add_cell
44
+ c2 = row.add_cell
45
+ assert_equal(Axlsx.cell_range([c2, c1], true), "'Sheet &lt;''&gt;&quot; 1'!$A$1:$B$1")
46
+ end
47
+
48
+ def test_name_to_indices
49
+ setup_wide
50
+ @wide_test_points.each do |key, value|
51
+ assert_equal(Axlsx.name_to_indices(key), [value,2])
52
+ end
53
+ end
54
+
55
+ def test_col_ref
56
+ setup_wide
57
+ @wide_test_points.each do |key, value|
58
+ assert_equal(Axlsx.col_ref(value), key.gsub(/\d+/, ''))
59
+ end
60
+ end
61
+
62
+ def test_cell_r
63
+ # todo
64
+ end
65
+
66
+ def test_range_to_a
67
+ assert_equal([['A1', 'B1', 'C1']], Axlsx::range_to_a('A1:C1'))
68
+ assert_equal([['A1', 'B1', 'C1'], ['A2', 'B2', 'C2']], Axlsx::range_to_a('A1:C2'))
69
+ assert_equal([['Z5', 'AA5', 'AB5'], ['Z6', 'AA6', 'AB6']], Axlsx::range_to_a('Z5:AB6'))
70
+ end
71
+
72
+ end
@@ -0,0 +1,10 @@
1
+ $LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../lib"
2
+ require 'simplecov'
3
+ SimpleCov.start do
4
+ add_filter "/test/"
5
+ add_filter "/vendor/"
6
+ end
7
+
8
+ require 'test/unit'
9
+ require "timecop"
10
+ require "axlsx.rb"
@@ -0,0 +1,233 @@
1
+ # encoding: UTF-8
2
+ require 'tc_helper.rb'
3
+
4
+ class TestPackage < Test::Unit::TestCase
5
+ def setup
6
+ @package = Axlsx::Package.new
7
+ ws = @package.workbook.add_worksheet
8
+ ws.add_row ['Can', 'we', 'build it?']
9
+ ws.add_row ['Yes!', 'We', 'can!']
10
+ ws.outline_level_rows 0, 1
11
+ ws.outline_level_columns 0, 1
12
+ ws.add_hyperlink :ref => ws.rows.first.cells.last, :location => 'https://github.com/randym'
13
+ ws.workbook.add_defined_name("#{ws.name}!A1:C2", :name => '_xlnm.Print_Titles', :hidden => true)
14
+ ws.workbook.add_view active_tab: 1, first_sheet: 0
15
+ ws.protect_range('A1:C1')
16
+ ws.protect_range(ws.rows.last.cells)
17
+ ws.add_comment :author => 'alice', :text => 'Hi Bob', :ref => 'A12'
18
+ ws.add_comment :author => 'bob', :text => 'Hi Alice', :ref => 'F19'
19
+ ws.sheet_view do |vs|
20
+ vs.pane do |p|
21
+ p.active_pane = :top_right
22
+ p.state = :split
23
+ p.x_split = 11080
24
+ p.y_split = 5000
25
+ p.top_left_cell = 'C44'
26
+ end
27
+
28
+ vs.add_selection(:top_left, { :active_cell => 'A2', :sqref => 'A2' })
29
+ vs.add_selection(:top_right, { :active_cell => 'I10', :sqref => 'I10' })
30
+ vs.add_selection(:bottom_left, { :active_cell => 'E55', :sqref => 'E55' })
31
+ vs.add_selection(:bottom_right, { :active_cell => 'I57', :sqref => 'I57' })
32
+ end
33
+
34
+ ws.add_chart(Axlsx::Pie3DChart, :title => "これは?", :start_at => [0,3]) do |chart|
35
+ chart.add_series :data=>[1,2,3], :labels=>["a", "b", "c"]
36
+ chart.d_lbls.show_val = true
37
+ chart.d_lbls.d_lbl_pos = :outEnd
38
+ chart.d_lbls.show_percent = true
39
+ end
40
+
41
+ ws.add_chart(Axlsx::Line3DChart, :title => "axis labels") do |chart|
42
+ chart.valAxis.title = 'bob'
43
+ chart.d_lbls.show_val = true
44
+ end
45
+
46
+ ws.add_chart(Axlsx::Bar3DChart, :title => 'bar chart') do |chart|
47
+ chart.add_series :data => [1,4,5], :labels => %w(A B C)
48
+ chart.d_lbls.show_percent = true
49
+ end
50
+
51
+ ws.add_chart(Axlsx::ScatterChart, :title => 'scat man') do |chart|
52
+ chart.add_series :xData => [1,2,3,4], :yData => [4,3,2,1]
53
+ chart.d_lbls.show_val = true
54
+ end
55
+
56
+ ws.add_chart(Axlsx::BubbleChart, :title => 'bubble chart') do |chart|
57
+ chart.add_series :xData => [1,2,3,4], :yData => [4,3,2,1], :yData => [1,3,2,4]
58
+ chart.d_lbls.show_val = true
59
+ end
60
+
61
+ @fname = 'axlsx_test_serialization.xlsx'
62
+ img = File.expand_path('../../examples/image1.jpeg', __FILE__)
63
+ ws.add_image(:image_src => img, :noSelect => true, :noMove => true, :hyperlink=>"http://axlsx.blogspot.com") do |image|
64
+ image.width=720
65
+ image.height=666
66
+ image.hyperlink.tooltip = "Labeled Link"
67
+ image.start_at 5, 5
68
+ image.end_at 10, 10
69
+ end
70
+ ws.add_image :image_src => File.expand_path('../../examples/image1.gif', __FILE__) do |image|
71
+ image.start_at 0, 20
72
+ image.width=360
73
+ image.height=333
74
+ end
75
+ ws.add_image :image_src => File.expand_path('../../examples/image1.png', __FILE__) do |image|
76
+ image.start_at 9, 20
77
+ image.width = 180
78
+ image.height = 167
79
+ end
80
+ ws.add_table 'A1:C1'
81
+
82
+ ws.add_pivot_table 'G5:G6', 'A1:B3'
83
+
84
+ ws.add_page_break "B2"
85
+
86
+ end
87
+
88
+ def test_use_autowidth
89
+ @package.use_autowidth = false
90
+ assert(@package.workbook.use_autowidth == false)
91
+ end
92
+
93
+ def test_core_accessor
94
+ assert_equal(@package.core, @package.instance_values["core"])
95
+ assert_raise(NoMethodError) {@package.core = nil }
96
+ end
97
+
98
+ def test_app_accessor
99
+ assert_equal(@package.app, @package.instance_values["app"])
100
+ assert_raise(NoMethodError) {@package.app = nil }
101
+ end
102
+
103
+ def test_use_shared_strings
104
+ assert_equal(@package.use_shared_strings, nil)
105
+ assert_raise(ArgumentError) {@package.use_shared_strings 9}
106
+ assert_nothing_raised {@package.use_shared_strings = true}
107
+ assert_equal(@package.use_shared_strings, @package.workbook.use_shared_strings)
108
+ end
109
+
110
+ def test_default_objects_are_created
111
+ assert(@package.instance_values["app"].is_a?(Axlsx::App), 'App object not created')
112
+ assert(@package.instance_values["core"].is_a?(Axlsx::Core), 'Core object not created')
113
+ assert(@package.workbook.is_a?(Axlsx::Workbook), 'Workbook object not created')
114
+ assert(Axlsx::Package.new.workbook.worksheets.size == 0, 'Workbook should not have sheets by default')
115
+ end
116
+
117
+ def test_created_at_is_propagated_to_core
118
+ time = Time.utc(2013, 1, 1, 12, 0)
119
+ p = Axlsx::Package.new :created_at => time
120
+ assert_equal(time, p.core.created)
121
+ end
122
+
123
+ def test_serialization
124
+ assert_nothing_raised do
125
+ begin
126
+ @package.serialize(@fname)
127
+ zf = Zip::File.open(@fname)
128
+ @package.send(:parts).each{ |part| zf.get_entry(part[:entry]) }
129
+ File.delete(@fname)
130
+ rescue Errno::EACCES
131
+ puts "WARNING:: test_serialization requires write access."
132
+ end
133
+ end
134
+ end
135
+
136
+ # See comment for Package#zip_entry_for_part
137
+ def test_serialization_creates_identical_files_at_any_time_if_created_at_is_set
138
+ @package.core.created = Time.now
139
+ zip_content_now = @package.to_stream.string
140
+ Timecop.travel(3600) do
141
+ zip_content_then = @package.to_stream.string
142
+ assert zip_content_then == zip_content_now, "zip files are not identical"
143
+ end
144
+ end
145
+
146
+ def test_serialization_creates_identical_files_for_identical_packages
147
+ package_1, package_2 = 2.times.map do
148
+ Axlsx::Package.new(:created_at => Time.utc(2013, 1, 1)).tap do |p|
149
+ p.workbook.add_worksheet(:name => "Basic Worksheet") do |sheet|
150
+ sheet.add_row [1, 2, 3]
151
+ end
152
+ end
153
+ end
154
+ assert package_1.to_stream.string == package_2.to_stream.string, "zip files are not identical"
155
+ end
156
+
157
+ def test_validation
158
+ assert_equal(@package.validate.size, 0, @package.validate)
159
+ Axlsx::Workbook.send(:class_variable_set, :@@date1904, 9900)
160
+ assert(@package.validate.size > 0)
161
+ end
162
+
163
+ def test_parts
164
+ p = @package.send(:parts)
165
+ #all parts have an entry
166
+ assert_equal(p.select{ |part| part[:entry] =~ /_rels\/\.rels/ }.size, 1, "rels missing")
167
+ assert_equal(p.select{ |part| part[:entry] =~ /docProps\/core\.xml/ }.size, 1, "core missing")
168
+ assert_equal(p.select{ |part| part[:entry] =~ /docProps\/app\.xml/ }.size, 1, "app missing")
169
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/_rels\/workbook\.xml\.rels/ }.size, 1, "workbook rels missing")
170
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/workbook\.xml/ }.size, 1, "workbook missing")
171
+ assert_equal(p.select{ |part| part[:entry] =~ /\[Content_Types\]\.xml/ }.size, 1, "content types missing")
172
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/styles\.xml/ }.size, 1, "styles missin")
173
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/drawings\/_rels\/drawing\d\.xml\.rels/ }.size, @package.workbook.drawings.size, "one or more drawing rels missing")
174
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/drawings\/drawing\d\.xml/ }.size, @package.workbook.drawings.size, "one or more drawings missing")
175
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/charts\/chart\d\.xml/ }.size, @package.workbook.charts.size, "one or more charts missing")
176
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/worksheets\/sheet\d\.xml/ }.size, @package.workbook.worksheets.size, "one or more sheet missing")
177
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/worksheets\/_rels\/sheet\d\.xml\.rels/ }.size, @package.workbook.worksheets.size, "one or more sheet rels missing")
178
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/comments\d\.xml/ }.size, @package.workbook.worksheets.size, "one or more sheet rels missing")
179
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/pivotTables\/pivotTable\d\.xml/ }.size, @package.workbook.worksheets.first.pivot_tables.size, "one or more pivot tables missing")
180
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/pivotTables\/_rels\/pivotTable\d\.xml.rels/ }.size, @package.workbook.worksheets.first.pivot_tables.size, "one or more pivot tables rels missing")
181
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/pivotCache\/pivotCacheDefinition\d\.xml/ }.size, @package.workbook.worksheets.first.pivot_tables.size, "one or more pivot tables missing")
182
+
183
+
184
+ #no mystery parts
185
+ assert_equal(25, p.size)
186
+
187
+ end
188
+
189
+ def test_shared_strings_requires_part
190
+ @package.use_shared_strings = true
191
+ p = @package.send(:parts)
192
+ assert_equal(p.select{ |part| part[:entry] =~/xl\/sharedStrings.xml/}.size, 1, "shared strings table missing")
193
+ end
194
+
195
+ def test_workbook_is_a_workbook
196
+ assert @package.workbook.is_a? Axlsx::Workbook
197
+ end
198
+
199
+ def test_base_content_types
200
+ ct = @package.send(:base_content_types)
201
+ assert(ct.select { |c| c.ContentType == Axlsx::RELS_CT }.size == 1, "rels content type missing")
202
+ assert(ct.select { |c| c.ContentType == Axlsx::XML_CT }.size == 1, "xml content type missing")
203
+ assert(ct.select { |c| c.ContentType == Axlsx::APP_CT }.size == 1, "app content type missing")
204
+ assert(ct.select { |c| c.ContentType == Axlsx::CORE_CT }.size == 1, "core content type missing")
205
+ assert(ct.select { |c| c.ContentType == Axlsx::STYLES_CT }.size == 1, "styles content type missing")
206
+ assert(ct.select { |c| c.ContentType == Axlsx::WORKBOOK_CT }.size == 1, "workbook content type missing")
207
+ assert(ct.size == 6)
208
+ end
209
+
210
+ def test_content_type_added_with_shared_strings
211
+ @package.use_shared_strings = true
212
+ ct = @package.send(:content_types)
213
+ assert(ct.select { |type| type.ContentType == Axlsx::SHARED_STRINGS_CT }.size == 1)
214
+ end
215
+
216
+ def test_name_to_indices
217
+ assert(Axlsx::name_to_indices('A1') == [0,0])
218
+ assert(Axlsx::name_to_indices('A100') == [0,99], 'needs to axcept rows that contain 0')
219
+ end
220
+
221
+ def test_to_stream
222
+ stream = @package.to_stream
223
+ assert(stream.is_a?(StringIO))
224
+ # this is just a roundabout guess for a package as it is build now
225
+ # in testing.
226
+ assert(stream.size > 80000)
227
+ end
228
+
229
+ def test_encrypt
230
+ # this is no where near close to ready yet
231
+ assert(@package.encrypt('your_mom.xlsxl', 'has a password') == false)
232
+ end
233
+ end
@@ -0,0 +1,19 @@
1
+ require 'tc_helper.rb'
2
+ class Funk
3
+ include Axlsx::Accessors
4
+ include Axlsx::SerializedAttributes
5
+ serializable_attributes :camel_symbol, :boolean, :integer
6
+
7
+ attr_accessor :camel_symbol, :boolean, :integer
8
+ end
9
+
10
+ class TestSeralizedAttributes < Test::Unit::TestCase
11
+ def setup
12
+ @object = Funk.new
13
+ end
14
+
15
+ def test_camel_symbol
16
+ @object.camel_symbol = :foo_bar
17
+ assert_equal('camelSymbol="fooBar" ', @object.serialized_attributes)
18
+ end
19
+ end
@@ -0,0 +1,77 @@
1
+ require 'tc_helper.rb'
2
+ class TestSimpleTypedList < Test::Unit::TestCase
3
+ def setup
4
+ @list = Axlsx::SimpleTypedList.new Fixnum
5
+ end
6
+
7
+ def teardown
8
+ end
9
+
10
+ def test_type_is_a_class_or_array_of_class
11
+ assert_nothing_raised { Axlsx::SimpleTypedList.new Integer }
12
+ assert_nothing_raised { Axlsx::SimpleTypedList.new [Integer,String] }
13
+ assert_raise(ArgumentError) { Axlsx::SimpleTypedList.new }
14
+ assert_raise(ArgumentError) { Axlsx::SimpleTypedList.new "1" }
15
+ assert_raise(ArgumentError) { Axlsx::SimpleTypedList.new [Integer, "Class"] }
16
+ end
17
+
18
+ def test_indexed_based_assignment
19
+ #should not allow nil assignment
20
+ assert_raise(ArgumentError) { @list[0] = nil }
21
+ assert_raise(ArgumentError) { @list[0] = "1" }
22
+ assert_nothing_raised { @list[0] = 1 }
23
+ end
24
+
25
+ def test_concat_assignment
26
+ assert_raise(ArgumentError) { @list << nil }
27
+ assert_raise(ArgumentError) { @list << "1" }
28
+ assert_nothing_raised { @list << 1 }
29
+ end
30
+
31
+ def test_concat_should_return_index
32
+ assert( @list.size == 0 )
33
+ assert( @list << 1 == 0 )
34
+ assert( @list << 2 == 1 )
35
+ @list.delete_at 0
36
+ assert( @list << 3 == 1 )
37
+ assert( @list.index(2) == 0 )
38
+ end
39
+
40
+ def test_push_should_return_index
41
+ assert( @list.push(1) == 0 )
42
+ assert( @list.push(2) == 1 )
43
+ @list.delete_at 0
44
+ assert( @list.push(3) == 1 )
45
+ assert( @list.index(2) == 0 )
46
+ end
47
+
48
+ def test_locking
49
+ @list.push 1
50
+ @list.push 2
51
+ @list.push 3
52
+ @list.lock
53
+
54
+ assert_raise(ArgumentError) { @list.delete 1 }
55
+ assert_raise(ArgumentError) { @list.delete_at 1 }
56
+ assert_raise(ArgumentError) { @list.delete_at 2 }
57
+ @list.push 4
58
+ assert_nothing_raised { @list.delete_at 3 }
59
+ @list.unlock
60
+ #ignore garbage
61
+ assert_nothing_raised { @list.delete 0 }
62
+ assert_nothing_raised { @list.delete 9 }
63
+ end
64
+
65
+ def test_delete
66
+ @list.push 1
67
+ assert(@list.size == 1)
68
+ @list.delete 1
69
+ assert(@list.empty?)
70
+ end
71
+
72
+ def test_equality
73
+ @list.push 1
74
+ @list.push 2
75
+ assert_equal(@list.to_ary, [1,2])
76
+ end
77
+ end
@@ -0,0 +1,186 @@
1
+ require 'tc_helper.rb'
2
+ class TestValidators < Test::Unit::TestCase
3
+ def setup
4
+ end
5
+ def teardown
6
+ end
7
+
8
+ def test_validators
9
+ #unsigned_int
10
+ assert_nothing_raised { Axlsx.validate_unsigned_int 1 }
11
+ assert_nothing_raised { Axlsx.validate_unsigned_int(+1) }
12
+ assert_raise(ArgumentError) { Axlsx.validate_unsigned_int(-1)}
13
+ assert_raise(ArgumentError) { Axlsx.validate_unsigned_int('1') }
14
+
15
+ #int
16
+ assert_nothing_raised { Axlsx.validate_int(1) }
17
+ assert_nothing_raised { Axlsx.validate_int(-1) }
18
+ assert_raise(ArgumentError) { Axlsx.validate_int('a')}
19
+ assert_raise(ArgumentError) { Axlsx.validate_int(Array) }
20
+
21
+ #boolean (as 0 or 1, :true, :false, true, false, or "true," "false")
22
+ [0,1,:true, :false, true, false, "true", "false"].each do |v|
23
+ assert_nothing_raised { Axlsx.validate_boolean 0 }
24
+ end
25
+ assert_raise(ArgumentError) { Axlsx.validate_boolean 2 }
26
+
27
+ #string
28
+ assert_nothing_raised { Axlsx.validate_string "1" }
29
+ assert_raise(ArgumentError) { Axlsx.validate_string 2 }
30
+ assert_raise(ArgumentError) { Axlsx.validate_string false }
31
+
32
+ #float
33
+ assert_nothing_raised { Axlsx.validate_float 1.0 }
34
+ assert_raise(ArgumentError) { Axlsx.validate_float 2 }
35
+ assert_raise(ArgumentError) { Axlsx.validate_float false }
36
+
37
+ #pattern_type
38
+ assert_nothing_raised { Axlsx.validate_pattern_type :none }
39
+ assert_raise(ArgumentError) { Axlsx.validate_pattern_type "none" }
40
+ assert_raise(ArgumentError) { Axlsx.validate_pattern_type "crazy_pattern" }
41
+ assert_raise(ArgumentError) { Axlsx.validate_pattern_type false }
42
+
43
+ #gradient_type
44
+ assert_nothing_raised { Axlsx.validate_gradient_type :path }
45
+ assert_raise(ArgumentError) { Axlsx.validate_gradient_type nil }
46
+ assert_raise(ArgumentError) { Axlsx.validate_gradient_type "fractal" }
47
+ assert_raise(ArgumentError) { Axlsx.validate_gradient_type false }
48
+
49
+ #horizontal alignment
50
+ assert_nothing_raised { Axlsx.validate_horizontal_alignment :general }
51
+ assert_raise(ArgumentError) { Axlsx.validate_horizontal_alignment nil }
52
+ assert_raise(ArgumentError) { Axlsx.validate_horizontal_alignment "wavy" }
53
+ assert_raise(ArgumentError) { Axlsx.validate_horizontal_alignment false }
54
+
55
+ #vertical alignment
56
+ assert_nothing_raised { Axlsx.validate_vertical_alignment :top }
57
+ assert_raise(ArgumentError) { Axlsx.validate_vertical_alignment nil }
58
+ assert_raise(ArgumentError) { Axlsx.validate_vertical_alignment "dynamic" }
59
+ assert_raise(ArgumentError) { Axlsx.validate_vertical_alignment false }
60
+
61
+ #contentType
62
+ assert_nothing_raised { Axlsx.validate_content_type Axlsx::WORKBOOK_CT }
63
+ assert_raise(ArgumentError) { Axlsx.validate_content_type nil }
64
+ assert_raise(ArgumentError) { Axlsx.validate_content_type "http://some.url" }
65
+ assert_raise(ArgumentError) { Axlsx.validate_content_type false }
66
+
67
+ #relationshipType
68
+ assert_nothing_raised { Axlsx.validate_relationship_type Axlsx::WORKBOOK_R }
69
+ assert_raise(ArgumentError) { Axlsx.validate_relationship_type nil }
70
+ assert_raise(ArgumentError) { Axlsx.validate_relationship_type "http://some.url" }
71
+ assert_raise(ArgumentError) { Axlsx.validate_relationship_type false }
72
+
73
+ #number_with_unit
74
+ assert_nothing_raised { Axlsx.validate_number_with_unit "210mm" }
75
+ assert_nothing_raised { Axlsx.validate_number_with_unit "8.5in" }
76
+ assert_nothing_raised { Axlsx.validate_number_with_unit "29.7cm" }
77
+ assert_nothing_raised { Axlsx.validate_number_with_unit "120pt" }
78
+ assert_nothing_raised { Axlsx.validate_number_with_unit "0pc" }
79
+ assert_nothing_raised { Axlsx.validate_number_with_unit "12.34pi" }
80
+ assert_raise(ArgumentError) { Axlsx.validate_number_with_unit nil }
81
+ assert_raise(ArgumentError) { Axlsx.validate_number_with_unit "210" }
82
+ assert_raise(ArgumentError) { Axlsx.validate_number_with_unit 210 }
83
+ assert_raise(ArgumentError) { Axlsx.validate_number_with_unit "mm" }
84
+ assert_raise(ArgumentError) { Axlsx.validate_number_with_unit "-29cm" }
85
+
86
+ #scale_10_400
87
+ assert_nothing_raised { Axlsx.validate_scale_10_400 10 }
88
+ assert_nothing_raised { Axlsx.validate_scale_10_400 100 }
89
+ assert_nothing_raised { Axlsx.validate_scale_10_400 400 }
90
+ assert_raise(ArgumentError) { Axlsx.validate_scale_10_400 9 }
91
+ assert_raise(ArgumentError) { Axlsx.validate_scale_10_400 10.0 }
92
+ assert_raise(ArgumentError) { Axlsx.validate_scale_10_400 400.1 }
93
+ assert_raise(ArgumentError) { Axlsx.validate_scale_10_400 "99" }
94
+
95
+ #scale_0_10_400
96
+ assert_nothing_raised { Axlsx.validate_scale_0_10_400 0 }
97
+ assert_nothing_raised { Axlsx.validate_scale_0_10_400 10 }
98
+ assert_nothing_raised { Axlsx.validate_scale_0_10_400 100 }
99
+ assert_nothing_raised { Axlsx.validate_scale_0_10_400 400 }
100
+ assert_raise(ArgumentError) { Axlsx.validate_scale_0_10_400 9 }
101
+ assert_raise(ArgumentError) { Axlsx.validate_scale_0_10_400 10.0 }
102
+ assert_raise(ArgumentError) { Axlsx.validate_scale_0_10_400 400.1 }
103
+ assert_raise(ArgumentError) { Axlsx.validate_scale_0_10_400 "99" }
104
+
105
+ #page_orientation
106
+ assert_nothing_raised { Axlsx.validate_page_orientation :default }
107
+ assert_nothing_raised { Axlsx.validate_page_orientation :landscape }
108
+ assert_nothing_raised { Axlsx.validate_page_orientation :portrait }
109
+ assert_raise(ArgumentError) { Axlsx.validate_page_orientation nil }
110
+ assert_raise(ArgumentError) { Axlsx.validate_page_orientation 1 }
111
+ assert_raise(ArgumentError) { Axlsx.validate_page_orientation "landscape" }
112
+
113
+ #data_validation_error_style
114
+ [:information, :stop, :warning].each do |sym|
115
+ assert_nothing_raised { Axlsx.validate_data_validation_error_style sym }
116
+ end
117
+ assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style :other_symbol }
118
+ assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 'warning' }
119
+ assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 0 }
120
+
121
+ #data_validation_operator
122
+ [:lessThan, :lessThanOrEqual, :equal, :notEqual, :greaterThanOrEqual, :greaterThan, :between, :notBetween].each do |sym|
123
+ assert_nothing_raised { Axlsx.validate_data_validation_operator sym }
124
+ end
125
+ assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style :other_symbol }
126
+ assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 'lessThan' }
127
+ assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 0 }
128
+
129
+ #data_validation_type
130
+ [:custom, :data, :decimal, :list, :none, :textLength, :time, :whole].each do |sym|
131
+ assert_nothing_raised { Axlsx.validate_data_validation_type sym }
132
+ end
133
+ assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style :other_symbol }
134
+ assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 'decimal' }
135
+ assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 0 }
136
+
137
+ #sheet_view_type
138
+ [:normal, :page_break_preview, :page_layout].each do |sym|
139
+ assert_nothing_raised { Axlsx.validate_sheet_view_type sym }
140
+ end
141
+ assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style :other_symbol }
142
+ assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 'page_layout' }
143
+ assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 0 }
144
+
145
+ #active_pane_type
146
+ [:bottom_left, :bottom_right, :top_left, :top_right].each do |sym|
147
+ assert_nothing_raised { Axlsx.validate_pane_type sym }
148
+ end
149
+ assert_raise(ArgumentError) { Axlsx.validate_pane_type :other_symbol }
150
+ assert_raise(ArgumentError) { Axlsx.validate_pane_type 'bottom_left' }
151
+ assert_raise(ArgumentError) { Axlsx.validate_pane_type 0 }
152
+
153
+ #split_state_type
154
+ [:frozen, :frozen_split, :split].each do |sym|
155
+ assert_nothing_raised { Axlsx.validate_split_state_type sym }
156
+ end
157
+ assert_raise(ArgumentError) { Axlsx.validate_split_state_type :other_symbol }
158
+ assert_raise(ArgumentError) { Axlsx.validate_split_state_type 'frozen_split' }
159
+ assert_raise(ArgumentError) { Axlsx.validate_split_state_type 0 }
160
+ end
161
+
162
+ def test_validate_integerish
163
+ assert_raise(ArgumentError) { Axlsx.validate_integerish Axlsx }
164
+ [1, 1.4, "a"].each { |test_value| assert_nothing_raised { Axlsx.validate_integerish test_value } }
165
+ end
166
+ def test_validate_family
167
+ assert_raise(ArgumentError) { Axlsx.validate_family 0 }
168
+ (1..5).each do |item|
169
+ assert_nothing_raised { Axlsx.validate_family item }
170
+ end
171
+ end
172
+
173
+ def test_validate_u
174
+ assert_raise(ArgumentError) { Axlsx.validate_cell_u :hoge }
175
+ [:none, :single, :double, :singleAccounting, :doubleAccounting].each do |sym|
176
+ assert_nothing_raised { Axlsx.validate_cell_u sym }
177
+ end
178
+ end
179
+
180
+ def test_range_validation
181
+ # exclusive
182
+ assert_raise(ArgumentError) { Axlsx::RangeValidator.validate('foo', 1, 10, 10, false) }
183
+ # inclusive by default
184
+ assert_nothing_raised { Axlsx::RangeValidator.validate('foo', 1, 10, 10) }
185
+ end
186
+ end