dg-axlsx 2.1.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 (324) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +9 -0
  3. data/.yardopts_guide +19 -0
  4. data/CHANGELOG.md +239 -0
  5. data/LICENSE +22 -0
  6. data/README.md +259 -0
  7. data/Rakefile +30 -0
  8. data/examples/2010_comments.rb +17 -0
  9. data/examples/anchor_swapping.rb +28 -0
  10. data/examples/auto_filter.rb +25 -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 +89 -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 +875 -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 +168 -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 +269 -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 +110 -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 +213 -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 +84 -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/mime_type_utils.rb +11 -0
  105. data/lib/axlsx/util/options_parser.rb +16 -0
  106. data/lib/axlsx/util/parser.rb +44 -0
  107. data/lib/axlsx/util/serialized_attributes.rb +89 -0
  108. data/lib/axlsx/util/simple_typed_list.rb +179 -0
  109. data/lib/axlsx/util/storage.rb +146 -0
  110. data/lib/axlsx/util/string.rb +7 -0
  111. data/lib/axlsx/util/validators.rb +311 -0
  112. data/lib/axlsx/version.rb +5 -0
  113. data/lib/axlsx/workbook/defined_name.rb +128 -0
  114. data/lib/axlsx/workbook/defined_names.rb +21 -0
  115. data/lib/axlsx/workbook/shared_strings_table.rb +77 -0
  116. data/lib/axlsx/workbook/workbook.rb +361 -0
  117. data/lib/axlsx/workbook/workbook_view.rb +78 -0
  118. data/lib/axlsx/workbook/workbook_views.rb +22 -0
  119. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -0
  120. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -0
  121. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -0
  122. data/lib/axlsx/workbook/worksheet/break.rb +35 -0
  123. data/lib/axlsx/workbook/worksheet/cell.rb +475 -0
  124. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +154 -0
  125. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -0
  126. data/lib/axlsx/workbook/worksheet/cfvos.rb +15 -0
  127. data/lib/axlsx/workbook/worksheet/col.rb +141 -0
  128. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -0
  129. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -0
  130. data/lib/axlsx/workbook/worksheet/cols.rb +20 -0
  131. data/lib/axlsx/workbook/worksheet/comment.rb +91 -0
  132. data/lib/axlsx/workbook/worksheet/comments.rb +82 -0
  133. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -0
  134. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -0
  135. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -0
  136. data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -0
  137. data/lib/axlsx/workbook/worksheet/data_validation.rb +246 -0
  138. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -0
  139. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -0
  140. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -0
  141. data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -0
  142. data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -0
  143. data/lib/axlsx/workbook/worksheet/merged_cells.rb +35 -0
  144. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -0
  145. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -0
  146. data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -0
  147. data/lib/axlsx/workbook/worksheet/pane.rb +139 -0
  148. data/lib/axlsx/workbook/worksheet/pivot_table.rb +266 -0
  149. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -0
  150. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -0
  151. data/lib/axlsx/workbook/worksheet/print_options.rb +39 -0
  152. data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -0
  153. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +34 -0
  154. data/lib/axlsx/workbook/worksheet/rich_text.rb +35 -0
  155. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +254 -0
  156. data/lib/axlsx/workbook/worksheet/row.rb +154 -0
  157. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -0
  158. data/lib/axlsx/workbook/worksheet/selection.rb +101 -0
  159. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -0
  160. data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -0
  161. data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +60 -0
  162. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +79 -0
  163. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -0
  164. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -0
  165. data/lib/axlsx/workbook/worksheet/table.rb +102 -0
  166. data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -0
  167. data/lib/axlsx/workbook/worksheet/tables.rb +31 -0
  168. data/lib/axlsx/workbook/worksheet/worksheet.rb +798 -0
  169. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -0
  170. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -0
  171. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -0
  172. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -0
  173. data/lib/dg-axlsx.rb +1 -0
  174. data/lib/schema/dc.xsd +118 -0
  175. data/lib/schema/dcmitype.xsd +52 -0
  176. data/lib/schema/dcterms.xsd +331 -0
  177. data/lib/schema/dml-chart.xsd +1499 -0
  178. data/lib/schema/dml-chartDrawing.xsd +146 -0
  179. data/lib/schema/dml-compatibility.xsd +14 -0
  180. data/lib/schema/dml-diagram.xsd +1091 -0
  181. data/lib/schema/dml-lockedCanvas.xsd +11 -0
  182. data/lib/schema/dml-main.xsd +3048 -0
  183. data/lib/schema/dml-picture.xsd +23 -0
  184. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -0
  185. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -0
  186. data/lib/schema/opc-contentTypes.xsd +42 -0
  187. data/lib/schema/opc-coreProperties.xsd +54 -0
  188. data/lib/schema/opc-digSig.xsd +49 -0
  189. data/lib/schema/opc-relationships.xsd +33 -0
  190. data/lib/schema/pml.xsd +1676 -0
  191. data/lib/schema/shared-additionalCharacteristics.xsd +28 -0
  192. data/lib/schema/shared-bibliography.xsd +144 -0
  193. data/lib/schema/shared-commonSimpleTypes.xsd +166 -0
  194. data/lib/schema/shared-customXmlDataProperties.xsd +25 -0
  195. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -0
  196. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -0
  197. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -0
  198. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -0
  199. data/lib/schema/shared-math.xsd +582 -0
  200. data/lib/schema/shared-relationshipReference.xsd +25 -0
  201. data/lib/schema/sml.xsd +4434 -0
  202. data/lib/schema/vml-main.xsd +569 -0
  203. data/lib/schema/vml-officeDrawing.xsd +509 -0
  204. data/lib/schema/vml-presentationDrawing.xsd +12 -0
  205. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -0
  206. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -0
  207. data/lib/schema/wml.xsd +3644 -0
  208. data/lib/schema/xml.xsd +116 -0
  209. data/test/benchmark.rb +72 -0
  210. data/test/content_type/tc_content_type.rb +76 -0
  211. data/test/content_type/tc_default.rb +16 -0
  212. data/test/content_type/tc_override.rb +14 -0
  213. data/test/doc_props/tc_app.rb +43 -0
  214. data/test/doc_props/tc_core.rb +42 -0
  215. data/test/drawing/tc_axes.rb +8 -0
  216. data/test/drawing/tc_axis.rb +112 -0
  217. data/test/drawing/tc_bar_3D_chart.rb +71 -0
  218. data/test/drawing/tc_bar_series.rb +37 -0
  219. data/test/drawing/tc_bubble_chart.rb +44 -0
  220. data/test/drawing/tc_bubble_series.rb +21 -0
  221. data/test/drawing/tc_cat_axis.rb +31 -0
  222. data/test/drawing/tc_cat_axis_data.rb +27 -0
  223. data/test/drawing/tc_chart.rb +110 -0
  224. data/test/drawing/tc_d_lbls.rb +57 -0
  225. data/test/drawing/tc_data_source.rb +23 -0
  226. data/test/drawing/tc_drawing.rb +80 -0
  227. data/test/drawing/tc_graphic_frame.rb +27 -0
  228. data/test/drawing/tc_hyperlink.rb +64 -0
  229. data/test/drawing/tc_line_3d_chart.rb +47 -0
  230. data/test/drawing/tc_line_chart.rb +39 -0
  231. data/test/drawing/tc_line_series.rb +71 -0
  232. data/test/drawing/tc_marker.rb +44 -0
  233. data/test/drawing/tc_named_axis_data.rb +27 -0
  234. data/test/drawing/tc_num_data.rb +31 -0
  235. data/test/drawing/tc_num_val.rb +29 -0
  236. data/test/drawing/tc_one_cell_anchor.rb +66 -0
  237. data/test/drawing/tc_pic.rb +106 -0
  238. data/test/drawing/tc_picture_locking.rb +72 -0
  239. data/test/drawing/tc_pie_3D_chart.rb +28 -0
  240. data/test/drawing/tc_pie_series.rb +32 -0
  241. data/test/drawing/tc_scaling.rb +36 -0
  242. data/test/drawing/tc_scatter_chart.rb +48 -0
  243. data/test/drawing/tc_scatter_series.rb +45 -0
  244. data/test/drawing/tc_ser_axis.rb +31 -0
  245. data/test/drawing/tc_series.rb +23 -0
  246. data/test/drawing/tc_series_title.rb +33 -0
  247. data/test/drawing/tc_str_data.rb +18 -0
  248. data/test/drawing/tc_str_val.rb +21 -0
  249. data/test/drawing/tc_title.rb +49 -0
  250. data/test/drawing/tc_two_cell_anchor.rb +36 -0
  251. data/test/drawing/tc_val_axis.rb +24 -0
  252. data/test/drawing/tc_view_3D.rb +54 -0
  253. data/test/drawing/tc_vml_drawing.rb +25 -0
  254. data/test/drawing/tc_vml_shape.rb +106 -0
  255. data/test/profile.rb +24 -0
  256. data/test/rels/tc_relationship.rb +44 -0
  257. data/test/rels/tc_relationships.rb +37 -0
  258. data/test/stylesheet/tc_border.rb +37 -0
  259. data/test/stylesheet/tc_border_pr.rb +32 -0
  260. data/test/stylesheet/tc_cell_alignment.rb +81 -0
  261. data/test/stylesheet/tc_cell_protection.rb +29 -0
  262. data/test/stylesheet/tc_cell_style.rb +57 -0
  263. data/test/stylesheet/tc_color.rb +43 -0
  264. data/test/stylesheet/tc_dxf.rb +81 -0
  265. data/test/stylesheet/tc_fill.rb +18 -0
  266. data/test/stylesheet/tc_font.rb +121 -0
  267. data/test/stylesheet/tc_gradient_fill.rb +72 -0
  268. data/test/stylesheet/tc_gradient_stop.rb +31 -0
  269. data/test/stylesheet/tc_num_fmt.rb +30 -0
  270. data/test/stylesheet/tc_pattern_fill.rb +43 -0
  271. data/test/stylesheet/tc_styles.rb +235 -0
  272. data/test/stylesheet/tc_table_style.rb +44 -0
  273. data/test/stylesheet/tc_table_style_element.rb +45 -0
  274. data/test/stylesheet/tc_table_styles.rb +29 -0
  275. data/test/stylesheet/tc_xf.rb +120 -0
  276. data/test/tc_axlsx.rb +72 -0
  277. data/test/tc_helper.rb +10 -0
  278. data/test/tc_package.rb +233 -0
  279. data/test/util/tc_mime_type_utils.rb +13 -0
  280. data/test/util/tc_serialized_attributes.rb +19 -0
  281. data/test/util/tc_simple_typed_list.rb +77 -0
  282. data/test/util/tc_validators.rb +210 -0
  283. data/test/workbook/tc_defined_name.rb +49 -0
  284. data/test/workbook/tc_shared_strings_table.rb +58 -0
  285. data/test/workbook/tc_workbook.rb +139 -0
  286. data/test/workbook/tc_workbook_view.rb +50 -0
  287. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -0
  288. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -0
  289. data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -0
  290. data/test/workbook/worksheet/tc_break.rb +49 -0
  291. data/test/workbook/worksheet/tc_cell.rb +358 -0
  292. data/test/workbook/worksheet/tc_cfvo.rb +31 -0
  293. data/test/workbook/worksheet/tc_col.rb +78 -0
  294. data/test/workbook/worksheet/tc_color_scale.rb +58 -0
  295. data/test/workbook/worksheet/tc_comment.rb +72 -0
  296. data/test/workbook/worksheet/tc_comments.rb +57 -0
  297. data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -0
  298. data/test/workbook/worksheet/tc_data_bar.rb +46 -0
  299. data/test/workbook/worksheet/tc_data_validation.rb +265 -0
  300. data/test/workbook/worksheet/tc_date_time_converter.rb +124 -0
  301. data/test/workbook/worksheet/tc_header_footer.rb +151 -0
  302. data/test/workbook/worksheet/tc_icon_set.rb +45 -0
  303. data/test/workbook/worksheet/tc_page_margins.rb +97 -0
  304. data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -0
  305. data/test/workbook/worksheet/tc_page_setup.rb +143 -0
  306. data/test/workbook/worksheet/tc_pane.rb +54 -0
  307. data/test/workbook/worksheet/tc_pivot_table.rb +120 -0
  308. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +54 -0
  309. data/test/workbook/worksheet/tc_print_options.rb +72 -0
  310. data/test/workbook/worksheet/tc_protected_range.rb +17 -0
  311. data/test/workbook/worksheet/tc_rich_text.rb +44 -0
  312. data/test/workbook/worksheet/tc_rich_text_run.rb +172 -0
  313. data/test/workbook/worksheet/tc_row.rb +117 -0
  314. data/test/workbook/worksheet/tc_selection.rb +55 -0
  315. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -0
  316. data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -0
  317. data/test/workbook/worksheet/tc_sheet_pr.rb +49 -0
  318. data/test/workbook/worksheet/tc_sheet_protection.rb +117 -0
  319. data/test/workbook/worksheet/tc_sheet_view.rb +214 -0
  320. data/test/workbook/worksheet/tc_table.rb +68 -0
  321. data/test/workbook/worksheet/tc_table_style_info.rb +53 -0
  322. data/test/workbook/worksheet/tc_worksheet.rb +577 -0
  323. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -0
  324. metadata +583 -0
@@ -0,0 +1,45 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestTableStyleElement < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @item = Axlsx::TableStyleElement.new
7
+ end
8
+
9
+ def teardown
10
+ end
11
+
12
+ def test_initialiation
13
+ assert_equal(@item.type, nil)
14
+ assert_equal(@item.size, nil)
15
+ assert_equal(@item.dxfId, nil)
16
+ options = { :type => :headerRow, :size => 10, :dxfId => 1 }
17
+
18
+ tse = Axlsx::TableStyleElement.new options
19
+ options.each { |key, value| assert_equal(tse.send(key.to_sym), value) }
20
+ end
21
+
22
+ def test_type
23
+ assert_raise(ArgumentError) { @item.type = -1.1 }
24
+ assert_nothing_raised { @item.type = :blankRow }
25
+ assert_equal(@item.type, :blankRow)
26
+ end
27
+
28
+ def test_size
29
+ assert_raise(ArgumentError) { @item.size = -1.1 }
30
+ assert_nothing_raised { @item.size = 2 }
31
+ assert_equal(@item.size, 2)
32
+ end
33
+
34
+ def test_dxfId
35
+ assert_raise(ArgumentError) { @item.dxfId = -1.1 }
36
+ assert_nothing_raised { @item.dxfId = 7 }
37
+ assert_equal(@item.dxfId, 7)
38
+ end
39
+
40
+ def test_to_xml_string
41
+ doc = Nokogiri::XML(@item.to_xml_string)
42
+ @item.type = :headerRow
43
+ assert(doc.xpath("//tableStyleElement[@type='#{@item.type.to_s}']"))
44
+ end
45
+ end
@@ -0,0 +1,29 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestTableStyles < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @item = Axlsx::TableStyles.new
7
+ end
8
+
9
+ def teardown
10
+ end
11
+
12
+ def test_initialiation
13
+ assert_equal(@item.defaultTableStyle, "TableStyleMedium9")
14
+ assert_equal(@item.defaultPivotStyle, "PivotStyleLight16")
15
+ end
16
+
17
+ def test_defaultTableStyle
18
+ assert_raise(ArgumentError) { @item.defaultTableStyle = -1.1 }
19
+ assert_nothing_raised { @item.defaultTableStyle = "anyones guess" }
20
+ assert_equal(@item.defaultTableStyle, "anyones guess")
21
+ end
22
+
23
+ def test_defaultPivotStyle
24
+ assert_raise(ArgumentError) { @item.defaultPivotStyle = -1.1 }
25
+ assert_nothing_raised { @item.defaultPivotStyle = "anyones guess" }
26
+ assert_equal(@item.defaultPivotStyle, "anyones guess")
27
+ end
28
+
29
+ end
@@ -0,0 +1,120 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestXf < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @item = Axlsx::Xf.new
7
+ end
8
+
9
+ def teardown
10
+ end
11
+
12
+ def test_initialiation
13
+ assert_equal(@item.alignment, nil)
14
+ assert_equal(@item.protection, nil)
15
+ assert_equal(@item.numFmtId, nil)
16
+ assert_equal(@item.fontId, nil)
17
+ assert_equal(@item.fillId, nil)
18
+ assert_equal(@item.borderId, nil)
19
+ assert_equal(@item.xfId, nil)
20
+ assert_equal(@item.quotePrefix, nil)
21
+ assert_equal(@item.pivotButton, nil)
22
+ assert_equal(@item.applyNumberFormat, nil)
23
+ assert_equal(@item.applyFont, nil)
24
+ assert_equal(@item.applyFill, nil)
25
+ assert_equal(@item.applyBorder, nil)
26
+ assert_equal(@item.applyAlignment, nil)
27
+ assert_equal(@item.applyProtection, nil)
28
+ end
29
+
30
+ def test_alignment
31
+ assert_raise(ArgumentError) { @item.alignment = -1.1 }
32
+ assert_nothing_raised { @item.alignment = Axlsx::CellAlignment.new }
33
+ assert(@item.alignment.is_a?(Axlsx::CellAlignment))
34
+ end
35
+
36
+ def test_protection
37
+ assert_raise(ArgumentError) { @item.protection = -1.1 }
38
+ assert_nothing_raised { @item.protection = Axlsx::CellProtection.new }
39
+ assert(@item.protection.is_a?(Axlsx::CellProtection))
40
+ end
41
+
42
+ def test_numFmtId
43
+ assert_raise(ArgumentError) { @item.numFmtId = -1.1 }
44
+ assert_nothing_raised { @item.numFmtId = 0 }
45
+ assert_equal(@item.numFmtId, 0)
46
+ end
47
+
48
+ def test_fillId
49
+ assert_raise(ArgumentError) { @item.fillId = -1.1 }
50
+ assert_nothing_raised { @item.fillId = 0 }
51
+ assert_equal(@item.fillId, 0)
52
+ end
53
+
54
+ def test_fontId
55
+ assert_raise(ArgumentError) { @item.fontId = -1.1 }
56
+ assert_nothing_raised { @item.fontId = 0 }
57
+ assert_equal(@item.fontId, 0)
58
+ end
59
+
60
+ def test_borderId
61
+ assert_raise(ArgumentError) { @item.borderId = -1.1 }
62
+ assert_nothing_raised { @item.borderId = 0 }
63
+ assert_equal(@item.borderId, 0)
64
+ end
65
+
66
+ def test_xfId
67
+ assert_raise(ArgumentError) { @item.xfId = -1.1 }
68
+ assert_nothing_raised { @item.xfId = 0 }
69
+ assert_equal(@item.xfId, 0)
70
+ end
71
+
72
+ def test_quotePrefix
73
+ assert_raise(ArgumentError) { @item.quotePrefix = -1.1 }
74
+ assert_nothing_raised { @item.quotePrefix = false }
75
+ assert_equal(@item.quotePrefix, false)
76
+ end
77
+
78
+ def test_pivotButton
79
+ assert_raise(ArgumentError) { @item.pivotButton = -1.1 }
80
+ assert_nothing_raised { @item.pivotButton = false }
81
+ assert_equal(@item.pivotButton, false)
82
+ end
83
+
84
+ def test_applyNumberFormat
85
+ assert_raise(ArgumentError) { @item.applyNumberFormat = -1.1 }
86
+ assert_nothing_raised { @item.applyNumberFormat = false }
87
+ assert_equal(@item.applyNumberFormat, false)
88
+ end
89
+
90
+ def test_applyFont
91
+ assert_raise(ArgumentError) { @item.applyFont = -1.1 }
92
+ assert_nothing_raised { @item.applyFont = false }
93
+ assert_equal(@item.applyFont, false)
94
+ end
95
+
96
+ def test_applyFill
97
+ assert_raise(ArgumentError) { @item.applyFill = -1.1 }
98
+ assert_nothing_raised { @item.applyFill = false }
99
+ assert_equal(@item.applyFill, false)
100
+ end
101
+
102
+ def test_applyBorder
103
+ assert_raise(ArgumentError) { @item.applyBorder = -1.1 }
104
+ assert_nothing_raised { @item.applyBorder = false }
105
+ assert_equal(@item.applyBorder, false)
106
+ end
107
+
108
+ def test_applyAlignment
109
+ assert_raise(ArgumentError) { @item.applyAlignment = -1.1 }
110
+ assert_nothing_raised { @item.applyAlignment = false }
111
+ assert_equal(@item.applyAlignment, false)
112
+ end
113
+
114
+ def test_applyProtection
115
+ assert_raise(ArgumentError) { @item.applyProtection = -1.1 }
116
+ assert_nothing_raised { @item.applyProtection = false }
117
+ assert_equal(@item.applyProtection, false)
118
+ end
119
+
120
+ end
@@ -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 => [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