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,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
@@ -0,0 +1,44 @@
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
+ ws = @p.workbook.add_worksheet
8
+ ws.add_row ['a', 1, 'b']
9
+ ws.add_row ['b', 1, 'c']
10
+ ws.add_row ['c', 1, 'd']
11
+ end
12
+
13
+ def test_workbook_has_shared_strings
14
+ assert(@p.workbook.shared_strings.is_a?(Axlsx::SharedStringsTable), "shared string table was not created")
15
+ end
16
+
17
+ def test_count
18
+ sst = @p.workbook.shared_strings
19
+ assert_equal(sst.count, 6)
20
+ end
21
+
22
+ def test_unique_count
23
+ sst = @p.workbook.shared_strings
24
+ assert_equal(sst.unique_count, 4)
25
+ end
26
+
27
+ def test_uses_workbook_xml_space
28
+ assert_equal(@p.workbook.xml_space, @p.workbook.shared_strings.xml_space)
29
+ @p.workbook.xml_space = :default
30
+ assert_equal(:default, @p.workbook.shared_strings.xml_space)
31
+ end
32
+
33
+ def test_valid_document
34
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
35
+ doc = Nokogiri::XML(@p.workbook.shared_strings.to_xml_string)
36
+ errors = []
37
+ schema.validate(doc).each do |error|
38
+ puts error.message
39
+ errors << error
40
+ end
41
+ assert_equal(errors.size, 0, "sharedStirngs.xml Invalid" + errors.map{ |e| e.message }.to_s)
42
+ end
43
+
44
+ end
@@ -0,0 +1,139 @@
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
+
37
+ def test_sheet_by_name_retrieval
38
+ @wb.add_worksheet(:name=>'foo')
39
+ @wb.add_worksheet(:name=>'bar')
40
+ assert_equal('foo', @wb.sheet_by_name('foo').name)
41
+
42
+ end
43
+ def test_date1904
44
+ assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
45
+ @wb.date1904 = :false
46
+ assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
47
+ Axlsx::Workbook.date1904 = :true
48
+ assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
49
+ end
50
+
51
+ def test_add_defined_name
52
+ @wb.add_defined_name 'Sheet1!1:1', :name => '_xlnm.Print_Titles', :hidden => true
53
+ assert_equal(1, @wb.defined_names.size)
54
+ end
55
+
56
+ def test_add_view
57
+ @wb.add_view visibility: :hidden, window_width: 800
58
+ assert_equal(1, @wb.views.size)
59
+ end
60
+
61
+ def test_shared_strings
62
+ assert_equal(@wb.use_shared_strings, nil)
63
+ assert_raise(ArgumentError) {@wb.use_shared_strings = 'bpb'}
64
+ assert_nothing_raised {@wb.use_shared_strings = :true}
65
+ end
66
+
67
+ def test_add_worksheet
68
+ assert(@wb.worksheets.empty?, "worbook has no worksheets by default")
69
+ ws = @wb.add_worksheet(:name=>"bob")
70
+ assert_equal(@wb.worksheets.size, 1, "add_worksheet adds a worksheet!")
71
+ assert_equal(@wb.worksheets.first, ws, "the worksheet returned is the worksheet added")
72
+ assert_equal(ws.name, "bob", "name option gets passed to worksheet")
73
+ end
74
+
75
+ def test_insert_worksheet
76
+ @wb.add_worksheet(:name => 'A')
77
+ @wb.add_worksheet(:name => 'B')
78
+ ws3 = @wb.insert_worksheet(0, :name => 'C')
79
+ assert_equal(ws3.name, @wb.worksheets.first.name)
80
+ end
81
+
82
+ def test_relationships
83
+ #current relationship size is 1 due to style relation
84
+ assert(@wb.relationships.size == 1)
85
+ @wb.add_worksheet
86
+ assert(@wb.relationships.size == 2)
87
+ @wb.use_shared_strings = true
88
+ assert(@wb.relationships.size == 3)
89
+ end
90
+
91
+ def test_to_xml
92
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
93
+ doc = Nokogiri::XML(@wb.to_xml_string)
94
+ errors = []
95
+ schema.validate(doc).each do |error|
96
+ errors.push error
97
+ puts error.message
98
+ end
99
+ assert(errors.empty?, "error free validation")
100
+ end
101
+ def test_range_requires__valid_sheet
102
+ ws = @wb.add_worksheet :name=>'fish'
103
+ ws.add_row [1,2,3]
104
+ ws.add_row [4,5,6]
105
+ assert_raise(ArgumentError, "no sheet name part") { @wb["A1:C2"]}
106
+ assert_equal @wb['fish!A1:C2'].size, 6
107
+ end
108
+
109
+ def test_to_xml_adds_worksheet_when_worksheets_is_empty
110
+ assert(@wb.worksheets.empty?)
111
+ @wb.to_xml_string
112
+ assert(@wb.worksheets.size == 1)
113
+ end
114
+
115
+ def test_to_xml_string_defined_names
116
+ @wb.add_worksheet do |sheet|
117
+ sheet.add_row [1, "two"]
118
+ sheet.auto_filter = "A1:B1"
119
+ end
120
+ doc = Nokogiri::XML(@wb.to_xml_string)
121
+ assert_equal(doc.xpath('//xmlns:workbook/xmlns:definedNames/xmlns:definedName').inner_text, @wb.worksheets[0].auto_filter.defined_name)
122
+ end
123
+
124
+ def test_to_xml_string_book_views
125
+ @wb.add_worksheet do |sheet|
126
+ sheet.add_row [1, "two"]
127
+ end
128
+ @wb.add_view active_tab: 0, first_sheet: 0
129
+ doc = Nokogiri::XML(@wb.to_xml_string)
130
+ assert_equal(1, doc.xpath('//xmlns:workbook/xmlns:bookViews/xmlns:workbookView[@activeTab=0]').size)
131
+ end
132
+
133
+ def test_to_xml_uses_correct_rIds_for_pivotCache
134
+ ws = @wb.add_worksheet
135
+ pivot_table = ws.add_pivot_table('G5:G6', 'A1:D5')
136
+ doc = Nokogiri::XML(@wb.to_xml_string)
137
+ assert_equal pivot_table.cache_definition.rId, doc.xpath("//xmlns:pivotCache").first["r:id"]
138
+ end
139
+ end
@@ -0,0 +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
@@ -0,0 +1,38 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestAutoFilter < Test::Unit::TestCase
4
+
5
+ def setup
6
+ ws = Axlsx::Package.new.workbook.add_worksheet
7
+ 3.times { |index| ws.add_row [1*index,2*index,3*index] }
8
+ @auto_filter = ws.auto_filter
9
+ @auto_filter.range = 'A1:C3'
10
+ @auto_filter.add_column 0, :filters, :filter_items => [1]
11
+ end
12
+
13
+ def test_defined_name
14
+ assert_equal("'Sheet1'!$A$1:$C$3", @auto_filter.defined_name)
15
+ end
16
+
17
+ def test_to_xml_string
18
+ doc = Nokogiri::XML(@auto_filter.to_xml_string)
19
+ assert(doc.xpath("autoFilter[@ref='#{@auto_filter.range}']"))
20
+ end
21
+
22
+ def test_columns
23
+ assert @auto_filter.columns.is_a?(Axlsx::SimpleTypedList)
24
+ assert_equal @auto_filter.columns.allowed_types, [Axlsx::FilterColumn]
25
+ end
26
+
27
+ def test_add_column
28
+ @auto_filter.add_column(0, :filters) do |column|
29
+ assert column.is_a? FilterColumn
30
+ end
31
+ end
32
+
33
+ def test_applya
34
+ assert_equal nil, @auto_filter.worksheet.rows.last.hidden
35
+ @auto_filter.apply
36
+ assert_equal true, @auto_filter.worksheet.rows.last.hidden
37
+ end
38
+ end
@@ -0,0 +1,76 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestFilterColumn < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @filter_column = Axlsx::FilterColumn.new(0, :filters, :filter_items => [200])
7
+ end
8
+
9
+
10
+ def test_initialize_col_id
11
+ assert_raise ArgumentError do
12
+ Axlsx::FilterColumn.new(0, :bobs_house_of_filter)
13
+ end
14
+ assert_raise ArgumentError do
15
+ Axlsx::FilterColumn.new(:penut, :filters)
16
+ end
17
+ end
18
+
19
+ def test_initailize_filter_type
20
+ assert @filter_column.filter.is_a?(Axlsx::Filters)
21
+ assert_equal 1, @filter_column.filter.filter_items.size
22
+ end
23
+
24
+ def test_initialize_filter_type_filters_with_options
25
+ assert_equal 200, @filter_column.filter.filter_items.first.val
26
+ end
27
+
28
+ def test_initialize_with_block
29
+ filter_column = Axlsx::FilterColumn.new(0, :filters) do |filters|
30
+ filters.filter_items = [700, 100, 5]
31
+ end
32
+ assert_equal 3, filter_column.filter.filter_items.size
33
+ assert_equal 700, filter_column.filter.filter_items.first.val
34
+ assert_equal 5, filter_column.filter.filter_items.last.val
35
+ end
36
+
37
+ def test_default_show_button
38
+ assert_equal true, @filter_column.show_button
39
+ end
40
+
41
+ def test_default_hidden_button
42
+ assert_equal false, @filter_column.hidden_button
43
+ end
44
+
45
+ def test_show_button
46
+ assert_raise ArgumentError do
47
+ @filter_column.show_button = :foo
48
+ end
49
+ assert_nothing_raised { @filter_column.show_button = false }
50
+ end
51
+
52
+ def test_hidden_button
53
+ assert_raise ArgumentError do
54
+ @filter_column.hidden_button = :hoge
55
+ end
56
+ assert_nothing_raised { @filter_column.hidden_button = true }
57
+ end
58
+
59
+ def test_col_id=
60
+ assert_raise ArgumentError do
61
+ @filter_column.col_id = :bar
62
+ end
63
+ assert_nothing_raised { @filter_column.col_id = 7 }
64
+ end
65
+
66
+ def test_to_xml_string
67
+ doc = Nokogiri::XML(@filter_column.to_xml_string)
68
+ assert doc.xpath("//filterColumn[@colId=#{@filter_column.col_id}]")
69
+ assert doc.xpath("//filterColumn[@hiddenButton=#{@filter_column.hidden_button}]")
70
+ assert doc.xpath("//filterColumn[@showButton=#{@filter_column.show_button}]")
71
+
72
+
73
+
74
+ assert doc.xpath("//filterColumn/filters")
75
+ end
76
+ end
@@ -0,0 +1,50 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestFilters < Test::Unit::TestCase
4
+ def setup
5
+ @filters = Axlsx::Filters.new(:filter_items => [1, 'a'],
6
+ :date_group_items =>[ { :date_time_grouping => :year, :year => 2011, :month => 11, :day => 11, :hour => 0, :minute => 0, :second => 0 } ] ,
7
+ :blank => true)
8
+ end
9
+
10
+ def test_blank
11
+ assert_equal true, @filters.blank
12
+ assert_raise(ArgumentError) { @filters.blank = :only_if_you_want_it }
13
+ @filters.blank = true
14
+ assert_equal true, @filters.blank
15
+ end
16
+
17
+ def test_calendar_type
18
+ assert_raise(ArgumentError) { @filters.calendar_type = 'monkey calendar' }
19
+ @filters.calendar_type = 'japan'
20
+ assert_equal('japan', @filters.calendar_type)
21
+ end
22
+
23
+ def test_filters_items
24
+ assert @filters.filter_items.is_a?(Array)
25
+ assert_equal 2, @filters.filter_items.size
26
+ end
27
+
28
+ def test_date_group_items
29
+ assert @filters.date_group_items.is_a?(Array)
30
+ assert_equal 1, @filters.date_group_items.size
31
+ end
32
+
33
+ def test_apply_is_false_for_matching_values
34
+ keeper = Object.new
35
+ def keeper.value; 'a'; end
36
+ assert_equal false, @filters.apply(keeper)
37
+ end
38
+
39
+ def test_apply_is_true_for_non_matching_values
40
+ hidden = Object.new
41
+ def hidden.value; 'b'; end
42
+ assert_equal true, @filters.apply(hidden)
43
+ end
44
+
45
+ def test_to_xml_string
46
+ doc = Nokogiri::XML(@filters.to_xml_string)
47
+ assert_equal(1, doc.xpath('//filters[@blank=1]').size)
48
+ end
49
+ end
50
+