axlsx-alt 3.0.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 (330) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +9 -0
  3. data/.yardopts_guide +19 -0
  4. data/CHANGELOG.md +244 -0
  5. data/LICENSE +22 -0
  6. data/README.md +180 -0
  7. data/Rakefile +29 -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 +67 -0
  20. data/examples/example.rb +885 -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 +171 -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/area_chart.rb +99 -0
  43. data/lib/axlsx/drawing/area_series.rb +110 -0
  44. data/lib/axlsx/drawing/ax_data_source.rb +26 -0
  45. data/lib/axlsx/drawing/axes.rb +61 -0
  46. data/lib/axlsx/drawing/axis.rb +190 -0
  47. data/lib/axlsx/drawing/bar_3D_chart.rb +151 -0
  48. data/lib/axlsx/drawing/bar_chart.rb +143 -0
  49. data/lib/axlsx/drawing/bar_series.rb +82 -0
  50. data/lib/axlsx/drawing/bubble_chart.rb +59 -0
  51. data/lib/axlsx/drawing/bubble_series.rb +63 -0
  52. data/lib/axlsx/drawing/cat_axis.rb +85 -0
  53. data/lib/axlsx/drawing/chart.rb +276 -0
  54. data/lib/axlsx/drawing/d_lbls.rb +90 -0
  55. data/lib/axlsx/drawing/drawing.rb +167 -0
  56. data/lib/axlsx/drawing/graphic_frame.rb +54 -0
  57. data/lib/axlsx/drawing/hyperlink.rb +100 -0
  58. data/lib/axlsx/drawing/line_3D_chart.rb +68 -0
  59. data/lib/axlsx/drawing/line_chart.rb +99 -0
  60. data/lib/axlsx/drawing/line_series.rb +110 -0
  61. data/lib/axlsx/drawing/marker.rb +84 -0
  62. data/lib/axlsx/drawing/num_data.rb +52 -0
  63. data/lib/axlsx/drawing/num_data_source.rb +62 -0
  64. data/lib/axlsx/drawing/num_val.rb +34 -0
  65. data/lib/axlsx/drawing/one_cell_anchor.rb +99 -0
  66. data/lib/axlsx/drawing/pic.rb +211 -0
  67. data/lib/axlsx/drawing/picture_locking.rb +42 -0
  68. data/lib/axlsx/drawing/pie_3D_chart.rb +47 -0
  69. data/lib/axlsx/drawing/pie_series.rb +74 -0
  70. data/lib/axlsx/drawing/scaling.rb +60 -0
  71. data/lib/axlsx/drawing/scatter_chart.rb +74 -0
  72. data/lib/axlsx/drawing/scatter_series.rb +98 -0
  73. data/lib/axlsx/drawing/ser_axis.rb +45 -0
  74. data/lib/axlsx/drawing/series.rb +69 -0
  75. data/lib/axlsx/drawing/series_title.rb +23 -0
  76. data/lib/axlsx/drawing/str_data.rb +42 -0
  77. data/lib/axlsx/drawing/str_val.rb +34 -0
  78. data/lib/axlsx/drawing/title.rb +96 -0
  79. data/lib/axlsx/drawing/two_cell_anchor.rb +97 -0
  80. data/lib/axlsx/drawing/val_axis.rb +37 -0
  81. data/lib/axlsx/drawing/view_3D.rb +115 -0
  82. data/lib/axlsx/drawing/vml_drawing.rb +42 -0
  83. data/lib/axlsx/drawing/vml_shape.rb +66 -0
  84. data/lib/axlsx/package.rb +358 -0
  85. data/lib/axlsx/rels/relationship.rb +137 -0
  86. data/lib/axlsx/rels/relationships.rb +32 -0
  87. data/lib/axlsx/stylesheet/border.rb +71 -0
  88. data/lib/axlsx/stylesheet/border_pr.rb +71 -0
  89. data/lib/axlsx/stylesheet/cell_alignment.rb +132 -0
  90. data/lib/axlsx/stylesheet/cell_protection.rb +41 -0
  91. data/lib/axlsx/stylesheet/cell_style.rb +72 -0
  92. data/lib/axlsx/stylesheet/color.rb +76 -0
  93. data/lib/axlsx/stylesheet/dxf.rb +79 -0
  94. data/lib/axlsx/stylesheet/fill.rb +35 -0
  95. data/lib/axlsx/stylesheet/font.rb +148 -0
  96. data/lib/axlsx/stylesheet/gradient_fill.rb +103 -0
  97. data/lib/axlsx/stylesheet/gradient_stop.rb +37 -0
  98. data/lib/axlsx/stylesheet/num_fmt.rb +86 -0
  99. data/lib/axlsx/stylesheet/pattern_fill.rb +73 -0
  100. data/lib/axlsx/stylesheet/styles.rb +420 -0
  101. data/lib/axlsx/stylesheet/table_style.rb +54 -0
  102. data/lib/axlsx/stylesheet/table_style_element.rb +77 -0
  103. data/lib/axlsx/stylesheet/table_styles.rb +46 -0
  104. data/lib/axlsx/stylesheet/xf.rb +147 -0
  105. data/lib/axlsx/util/accessors.rb +64 -0
  106. data/lib/axlsx/util/constants.rb +400 -0
  107. data/lib/axlsx/util/mime_type_utils.rb +11 -0
  108. data/lib/axlsx/util/options_parser.rb +16 -0
  109. data/lib/axlsx/util/parser.rb +44 -0
  110. data/lib/axlsx/util/serialized_attributes.rb +89 -0
  111. data/lib/axlsx/util/simple_typed_list.rb +179 -0
  112. data/lib/axlsx/util/storage.rb +146 -0
  113. data/lib/axlsx/util/validators.rb +312 -0
  114. data/lib/axlsx/version.rb +3 -0
  115. data/lib/axlsx/workbook/defined_name.rb +128 -0
  116. data/lib/axlsx/workbook/defined_names.rb +21 -0
  117. data/lib/axlsx/workbook/shared_strings_table.rb +77 -0
  118. data/lib/axlsx/workbook/workbook.rb +379 -0
  119. data/lib/axlsx/workbook/workbook_view.rb +80 -0
  120. data/lib/axlsx/workbook/workbook_views.rb +22 -0
  121. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -0
  122. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -0
  123. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -0
  124. data/lib/axlsx/workbook/worksheet/break.rb +35 -0
  125. data/lib/axlsx/workbook/worksheet/cell.rb +478 -0
  126. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -0
  127. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -0
  128. data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -0
  129. data/lib/axlsx/workbook/worksheet/col.rb +141 -0
  130. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -0
  131. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -0
  132. data/lib/axlsx/workbook/worksheet/cols.rb +23 -0
  133. data/lib/axlsx/workbook/worksheet/comment.rb +90 -0
  134. data/lib/axlsx/workbook/worksheet/comments.rb +97 -0
  135. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -0
  136. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -0
  137. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -0
  138. data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -0
  139. data/lib/axlsx/workbook/worksheet/data_validation.rb +246 -0
  140. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -0
  141. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -0
  142. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -0
  143. data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -0
  144. data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -0
  145. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -0
  146. data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -0
  147. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -0
  148. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -0
  149. data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -0
  150. data/lib/axlsx/workbook/worksheet/pane.rb +139 -0
  151. data/lib/axlsx/workbook/worksheet/pivot_table.rb +289 -0
  152. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -0
  153. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -0
  154. data/lib/axlsx/workbook/worksheet/print_options.rb +39 -0
  155. data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -0
  156. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -0
  157. data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -0
  158. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -0
  159. data/lib/axlsx/workbook/worksheet/row.rb +161 -0
  160. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -0
  161. data/lib/axlsx/workbook/worksheet/selection.rb +101 -0
  162. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -0
  163. data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -0
  164. data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +60 -0
  165. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -0
  166. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -0
  167. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -0
  168. data/lib/axlsx/workbook/worksheet/table.rb +102 -0
  169. data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -0
  170. data/lib/axlsx/workbook/worksheet/tables.rb +34 -0
  171. data/lib/axlsx/workbook/worksheet/worksheet.rb +756 -0
  172. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -0
  173. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -0
  174. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -0
  175. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -0
  176. data/lib/schema/dc.xsd +118 -0
  177. data/lib/schema/dcmitype.xsd +52 -0
  178. data/lib/schema/dcterms.xsd +331 -0
  179. data/lib/schema/dml-chart.xsd +1499 -0
  180. data/lib/schema/dml-chartDrawing.xsd +146 -0
  181. data/lib/schema/dml-compatibility.xsd +14 -0
  182. data/lib/schema/dml-diagram.xsd +1091 -0
  183. data/lib/schema/dml-lockedCanvas.xsd +11 -0
  184. data/lib/schema/dml-main.xsd +3048 -0
  185. data/lib/schema/dml-picture.xsd +23 -0
  186. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -0
  187. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -0
  188. data/lib/schema/opc-contentTypes.xsd +42 -0
  189. data/lib/schema/opc-coreProperties.xsd +54 -0
  190. data/lib/schema/opc-digSig.xsd +49 -0
  191. data/lib/schema/opc-relationships.xsd +33 -0
  192. data/lib/schema/pml.xsd +1676 -0
  193. data/lib/schema/shared-additionalCharacteristics.xsd +28 -0
  194. data/lib/schema/shared-bibliography.xsd +144 -0
  195. data/lib/schema/shared-commonSimpleTypes.xsd +166 -0
  196. data/lib/schema/shared-customXmlDataProperties.xsd +25 -0
  197. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -0
  198. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -0
  199. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -0
  200. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -0
  201. data/lib/schema/shared-math.xsd +582 -0
  202. data/lib/schema/shared-relationshipReference.xsd +25 -0
  203. data/lib/schema/sml.xsd +4434 -0
  204. data/lib/schema/vml-main.xsd +569 -0
  205. data/lib/schema/vml-officeDrawing.xsd +509 -0
  206. data/lib/schema/vml-presentationDrawing.xsd +12 -0
  207. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -0
  208. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -0
  209. data/lib/schema/wml.xsd +3644 -0
  210. data/lib/schema/xml.xsd +116 -0
  211. data/test/benchmark.rb +72 -0
  212. data/test/content_type/tc_content_type.rb +76 -0
  213. data/test/content_type/tc_default.rb +16 -0
  214. data/test/content_type/tc_override.rb +14 -0
  215. data/test/doc_props/tc_app.rb +43 -0
  216. data/test/doc_props/tc_core.rb +42 -0
  217. data/test/drawing/tc_area_chart.rb +39 -0
  218. data/test/drawing/tc_area_series.rb +71 -0
  219. data/test/drawing/tc_axes.rb +8 -0
  220. data/test/drawing/tc_axis.rb +112 -0
  221. data/test/drawing/tc_bar_3D_chart.rb +71 -0
  222. data/test/drawing/tc_bar_chart.rb +71 -0
  223. data/test/drawing/tc_bar_series.rb +37 -0
  224. data/test/drawing/tc_bubble_chart.rb +44 -0
  225. data/test/drawing/tc_bubble_series.rb +21 -0
  226. data/test/drawing/tc_cat_axis.rb +31 -0
  227. data/test/drawing/tc_cat_axis_data.rb +27 -0
  228. data/test/drawing/tc_chart.rb +123 -0
  229. data/test/drawing/tc_d_lbls.rb +57 -0
  230. data/test/drawing/tc_data_source.rb +23 -0
  231. data/test/drawing/tc_drawing.rb +80 -0
  232. data/test/drawing/tc_graphic_frame.rb +27 -0
  233. data/test/drawing/tc_hyperlink.rb +64 -0
  234. data/test/drawing/tc_line_3d_chart.rb +47 -0
  235. data/test/drawing/tc_line_chart.rb +39 -0
  236. data/test/drawing/tc_line_series.rb +71 -0
  237. data/test/drawing/tc_marker.rb +44 -0
  238. data/test/drawing/tc_named_axis_data.rb +27 -0
  239. data/test/drawing/tc_num_data.rb +31 -0
  240. data/test/drawing/tc_num_val.rb +29 -0
  241. data/test/drawing/tc_one_cell_anchor.rb +66 -0
  242. data/test/drawing/tc_pic.rb +103 -0
  243. data/test/drawing/tc_picture_locking.rb +72 -0
  244. data/test/drawing/tc_pie_3D_chart.rb +28 -0
  245. data/test/drawing/tc_pie_series.rb +32 -0
  246. data/test/drawing/tc_scaling.rb +36 -0
  247. data/test/drawing/tc_scatter_chart.rb +48 -0
  248. data/test/drawing/tc_scatter_series.rb +56 -0
  249. data/test/drawing/tc_ser_axis.rb +31 -0
  250. data/test/drawing/tc_series.rb +23 -0
  251. data/test/drawing/tc_series_title.rb +33 -0
  252. data/test/drawing/tc_str_data.rb +18 -0
  253. data/test/drawing/tc_str_val.rb +30 -0
  254. data/test/drawing/tc_title.rb +54 -0
  255. data/test/drawing/tc_two_cell_anchor.rb +36 -0
  256. data/test/drawing/tc_val_axis.rb +24 -0
  257. data/test/drawing/tc_view_3D.rb +54 -0
  258. data/test/drawing/tc_vml_drawing.rb +25 -0
  259. data/test/drawing/tc_vml_shape.rb +106 -0
  260. data/test/profile.rb +24 -0
  261. data/test/rels/tc_relationship.rb +44 -0
  262. data/test/rels/tc_relationships.rb +37 -0
  263. data/test/stylesheet/tc_border.rb +37 -0
  264. data/test/stylesheet/tc_border_pr.rb +32 -0
  265. data/test/stylesheet/tc_cell_alignment.rb +81 -0
  266. data/test/stylesheet/tc_cell_protection.rb +29 -0
  267. data/test/stylesheet/tc_cell_style.rb +57 -0
  268. data/test/stylesheet/tc_color.rb +43 -0
  269. data/test/stylesheet/tc_dxf.rb +81 -0
  270. data/test/stylesheet/tc_fill.rb +18 -0
  271. data/test/stylesheet/tc_font.rb +121 -0
  272. data/test/stylesheet/tc_gradient_fill.rb +72 -0
  273. data/test/stylesheet/tc_gradient_stop.rb +31 -0
  274. data/test/stylesheet/tc_num_fmt.rb +30 -0
  275. data/test/stylesheet/tc_pattern_fill.rb +43 -0
  276. data/test/stylesheet/tc_styles.rb +235 -0
  277. data/test/stylesheet/tc_table_style.rb +44 -0
  278. data/test/stylesheet/tc_table_style_element.rb +45 -0
  279. data/test/stylesheet/tc_table_styles.rb +29 -0
  280. data/test/stylesheet/tc_xf.rb +120 -0
  281. data/test/tc_axlsx.rb +103 -0
  282. data/test/tc_helper.rb +12 -0
  283. data/test/tc_package.rb +245 -0
  284. data/test/util/tc_mime_type_utils.rb +13 -0
  285. data/test/util/tc_serialized_attributes.rb +19 -0
  286. data/test/util/tc_simple_typed_list.rb +77 -0
  287. data/test/util/tc_validators.rb +210 -0
  288. data/test/workbook/tc_defined_name.rb +49 -0
  289. data/test/workbook/tc_shared_strings_table.rb +59 -0
  290. data/test/workbook/tc_workbook.rb +160 -0
  291. data/test/workbook/tc_workbook_view.rb +50 -0
  292. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -0
  293. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -0
  294. data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -0
  295. data/test/workbook/worksheet/tc_break.rb +49 -0
  296. data/test/workbook/worksheet/tc_cell.rb +387 -0
  297. data/test/workbook/worksheet/tc_cfvo.rb +31 -0
  298. data/test/workbook/worksheet/tc_col.rb +78 -0
  299. data/test/workbook/worksheet/tc_color_scale.rb +58 -0
  300. data/test/workbook/worksheet/tc_comment.rb +72 -0
  301. data/test/workbook/worksheet/tc_comments.rb +57 -0
  302. data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -0
  303. data/test/workbook/worksheet/tc_data_bar.rb +46 -0
  304. data/test/workbook/worksheet/tc_data_validation.rb +265 -0
  305. data/test/workbook/worksheet/tc_date_time_converter.rb +124 -0
  306. data/test/workbook/worksheet/tc_header_footer.rb +151 -0
  307. data/test/workbook/worksheet/tc_icon_set.rb +45 -0
  308. data/test/workbook/worksheet/tc_outline_pr.rb +19 -0
  309. data/test/workbook/worksheet/tc_page_margins.rb +97 -0
  310. data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -0
  311. data/test/workbook/worksheet/tc_page_setup.rb +143 -0
  312. data/test/workbook/worksheet/tc_pane.rb +54 -0
  313. data/test/workbook/worksheet/tc_pivot_table.rb +135 -0
  314. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +54 -0
  315. data/test/workbook/worksheet/tc_print_options.rb +72 -0
  316. data/test/workbook/worksheet/tc_protected_range.rb +17 -0
  317. data/test/workbook/worksheet/tc_rich_text.rb +44 -0
  318. data/test/workbook/worksheet/tc_rich_text_run.rb +172 -0
  319. data/test/workbook/worksheet/tc_row.rb +122 -0
  320. data/test/workbook/worksheet/tc_selection.rb +55 -0
  321. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -0
  322. data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -0
  323. data/test/workbook/worksheet/tc_sheet_pr.rb +49 -0
  324. data/test/workbook/worksheet/tc_sheet_protection.rb +117 -0
  325. data/test/workbook/worksheet/tc_sheet_view.rb +214 -0
  326. data/test/workbook/worksheet/tc_table.rb +67 -0
  327. data/test/workbook/worksheet/tc_table_style_info.rb +53 -0
  328. data/test/workbook/worksheet/tc_worksheet.rb +597 -0
  329. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -0
  330. metadata +601 -0
@@ -0,0 +1,44 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestTableStyle < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @item = Axlsx::TableStyle.new "fisher"
7
+ end
8
+
9
+ def teardown
10
+ end
11
+
12
+ def test_initialiation
13
+ assert_equal(@item.name, "fisher")
14
+ assert_equal(@item.pivot, nil)
15
+ assert_equal(@item.table, nil)
16
+ ts = Axlsx::TableStyle.new 'price', :pivot => true, :table => true
17
+ assert_equal(ts.name, 'price')
18
+ assert_equal(ts.pivot, true)
19
+ assert_equal(ts.table, true)
20
+ end
21
+
22
+ def test_name
23
+ assert_raise(ArgumentError) { @item.name = -1.1 }
24
+ assert_nothing_raised { @item.name = "lovely table style" }
25
+ assert_equal(@item.name, "lovely table style")
26
+ end
27
+
28
+ def test_pivot
29
+ assert_raise(ArgumentError) { @item.pivot = -1.1 }
30
+ assert_nothing_raised { @item.pivot = true }
31
+ assert_equal(@item.pivot, true)
32
+ end
33
+
34
+ def test_table
35
+ assert_raise(ArgumentError) { @item.table = -1.1 }
36
+ assert_nothing_raised { @item.table = true }
37
+ assert_equal(@item.table, true)
38
+ end
39
+
40
+ def test_to_xml_string
41
+ doc = Nokogiri::XML(@item.to_xml_string)
42
+ assert(doc.xpath("//tableStyle[@name='#{@item.name}']"))
43
+ end
44
+ end
@@ -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,103 @@
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_cell_range_row
49
+ p = Axlsx::Package.new
50
+ ws = p.workbook.add_worksheet
51
+ row = ws.add_row
52
+ row.add_cell
53
+ row.add_cell
54
+ row.add_cell
55
+ assert_equal("A1:C1", Axlsx.cell_range(row, false))
56
+ end
57
+
58
+ def test_name_to_indices
59
+ setup_wide
60
+ @wide_test_points.each do |key, value|
61
+ assert_equal(Axlsx.name_to_indices(key), [value,2])
62
+ end
63
+ end
64
+
65
+ def test_col_ref
66
+ setup_wide
67
+ @wide_test_points.each do |key, value|
68
+ assert_equal(Axlsx.col_ref(value), key.gsub(/\d+/, ''))
69
+ end
70
+ end
71
+
72
+ def test_cell_r
73
+ # todo
74
+ end
75
+
76
+ def test_range_to_a
77
+ assert_equal([['A1', 'B1', 'C1']], Axlsx::range_to_a('A1:C1'))
78
+ assert_equal([['A1', 'B1', 'C1'], ['A2', 'B2', 'C2']], Axlsx::range_to_a('A1:C2'))
79
+ assert_equal([['Z5', 'AA5', 'AB5'], ['Z6', 'AA6', 'AB6']], Axlsx::range_to_a('Z5:AB6'))
80
+ end
81
+
82
+ def test_sanitize_frozen_control_strippped
83
+ needs_sanitize = "legit\x08".freeze # Backspace control char
84
+
85
+ assert_equal(Axlsx.sanitize(needs_sanitize), 'legit', 'should strip control chars')
86
+ end
87
+
88
+ def test_sanitize_unfrozen_control_strippped
89
+ needs_sanitize = "legit\x08" # Backspace control char
90
+ sanitized_str = Axlsx.sanitize(needs_sanitize)
91
+
92
+ assert_equal(sanitized_str, 'legit', 'should strip control chars')
93
+ assert_equal(sanitized_str.object_id, sanitized_str.object_id, 'should preserve object')
94
+ end
95
+
96
+ def test_sanitize_unfrozen_no_sanitize
97
+ legit_str = 'legit'
98
+ sanitized_str = Axlsx.sanitize(legit_str)
99
+
100
+ assert_equal(sanitized_str, legit_str, 'should preserve value')
101
+ assert_equal(sanitized_str.object_id, legit_str.object_id, 'should preserve object')
102
+ end
103
+ end
@@ -0,0 +1,12 @@
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"
11
+ # MIME detection for Microsoft Office 2007+ formats
12
+ require 'mimemagic/overlay'
@@ -0,0 +1,245 @@
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
+ @rt = Axlsx::RichText.new
11
+ @rt.add_run "run 1", :b => true, :i => false
12
+ ws.add_row [@rt]
13
+
14
+ ws.rows.last.add_cell('b', :type => :text)
15
+
16
+ ws.outline_level_rows 0, 1
17
+ ws.outline_level_columns 0, 1
18
+ ws.add_hyperlink :ref => ws.rows.first.cells.last, :location => 'https://github.com/randym'
19
+ ws.workbook.add_defined_name("#{ws.name}!A1:C2", :name => '_xlnm.Print_Titles', :hidden => true)
20
+ ws.workbook.add_view active_tab: 1, first_sheet: 0
21
+ ws.protect_range('A1:C1')
22
+ ws.protect_range(ws.rows.last.cells)
23
+ ws.add_comment :author => 'alice', :text => 'Hi Bob', :ref => 'A12'
24
+ ws.add_comment :author => 'bob', :text => 'Hi Alice', :ref => 'F19'
25
+ ws.sheet_view do |vs|
26
+ vs.pane do |p|
27
+ p.active_pane = :top_right
28
+ p.state = :split
29
+ p.x_split = 11080
30
+ p.y_split = 5000
31
+ p.top_left_cell = 'C44'
32
+ end
33
+
34
+ vs.add_selection(:top_left, { :active_cell => 'A2', :sqref => 'A2' })
35
+ vs.add_selection(:top_right, { :active_cell => 'I10', :sqref => 'I10' })
36
+ vs.add_selection(:bottom_left, { :active_cell => 'E55', :sqref => 'E55' })
37
+ vs.add_selection(:bottom_right, { :active_cell => 'I57', :sqref => 'I57' })
38
+ end
39
+
40
+ ws.add_chart(Axlsx::Pie3DChart, :title => "これは?", :start_at => [0,3]) do |chart|
41
+ chart.add_series :data=>[1,2,3], :labels=>["a", "b", "c"]
42
+ chart.d_lbls.show_val = true
43
+ chart.d_lbls.d_lbl_pos = :outEnd
44
+ chart.d_lbls.show_percent = true
45
+ end
46
+
47
+ ws.add_chart(Axlsx::Line3DChart, :title => "axis labels") do |chart|
48
+ chart.valAxis.title = 'bob'
49
+ chart.d_lbls.show_val = true
50
+ end
51
+
52
+ ws.add_chart(Axlsx::Bar3DChart, :title => 'bar chart') do |chart|
53
+ chart.add_series :data => [1,4,5], :labels => %w(A B C)
54
+ chart.d_lbls.show_percent = true
55
+ end
56
+
57
+ ws.add_chart(Axlsx::ScatterChart, :title => 'scat man') do |chart|
58
+ chart.add_series :xData => [1,2,3,4], :yData => [4,3,2,1]
59
+ chart.d_lbls.show_val = true
60
+ end
61
+
62
+ ws.add_chart(Axlsx::BubbleChart, :title => 'bubble chart') do |chart|
63
+ chart.add_series :xData => [1,2,3,4], :yData => [1,3,2,4]
64
+ chart.d_lbls.show_val = true
65
+ end
66
+
67
+ @fname = 'axlsx_test_serialization.xlsx'
68
+ img = File.expand_path('../../examples/image1.jpeg', __FILE__)
69
+ ws.add_image(:image_src => img, :noSelect => true, :noMove => true, :hyperlink=>"http://axlsx.blogspot.com") do |image|
70
+ image.width=720
71
+ image.height=666
72
+ image.hyperlink.tooltip = "Labeled Link"
73
+ image.start_at 5, 5
74
+ image.end_at 10, 10
75
+ end
76
+ ws.add_image :image_src => File.expand_path('../../examples/image1.gif', __FILE__) do |image|
77
+ image.start_at 0, 20
78
+ image.width=360
79
+ image.height=333
80
+ end
81
+ ws.add_image :image_src => File.expand_path('../../examples/image1.png', __FILE__) do |image|
82
+ image.start_at 9, 20
83
+ image.width = 180
84
+ image.height = 167
85
+ end
86
+ ws.add_table 'A1:C1'
87
+
88
+ ws.add_pivot_table 'G5:G6', 'A1:B3'
89
+
90
+ ws.add_page_break "B2"
91
+
92
+ end
93
+
94
+ def test_use_autowidth
95
+ @package.use_autowidth = false
96
+ assert(@package.workbook.use_autowidth == false)
97
+ end
98
+
99
+ def test_core_accessor
100
+ assert_equal(@package.core, @package.instance_values["core"])
101
+ assert_raise(NoMethodError) {@package.core = nil }
102
+ end
103
+
104
+ def test_app_accessor
105
+ assert_equal(@package.app, @package.instance_values["app"])
106
+ assert_raise(NoMethodError) {@package.app = nil }
107
+ end
108
+
109
+ def test_use_shared_strings
110
+ assert_equal(@package.use_shared_strings, nil)
111
+ assert_raise(ArgumentError) {@package.use_shared_strings 9}
112
+ assert_nothing_raised {@package.use_shared_strings = true}
113
+ assert_equal(@package.use_shared_strings, @package.workbook.use_shared_strings)
114
+ end
115
+
116
+ def test_default_objects_are_created
117
+ assert(@package.instance_values["app"].is_a?(Axlsx::App), 'App object not created')
118
+ assert(@package.instance_values["core"].is_a?(Axlsx::Core), 'Core object not created')
119
+ assert(@package.workbook.is_a?(Axlsx::Workbook), 'Workbook object not created')
120
+ assert(Axlsx::Package.new.workbook.worksheets.size == 0, 'Workbook should not have sheets by default')
121
+ end
122
+
123
+ def test_created_at_is_propagated_to_core
124
+ time = Time.utc(2013, 1, 1, 12, 0)
125
+ p = Axlsx::Package.new :created_at => time
126
+ assert_equal(time, p.core.created)
127
+ end
128
+
129
+ def test_serialization
130
+ assert_nothing_raised do
131
+ begin
132
+ @package.serialize(@fname)
133
+ zf = Zip::File.open(@fname)
134
+ @package.send(:parts).each{ |part| zf.get_entry(part[:entry]) }
135
+ File.delete(@fname)
136
+ rescue Errno::EACCES
137
+ puts "WARNING:: test_serialization requires write access."
138
+ end
139
+ end
140
+ end
141
+
142
+ # See comment for Package#zip_entry_for_part
143
+ def test_serialization_creates_identical_files_at_any_time_if_created_at_is_set
144
+ @package.core.created = Time.now
145
+ zip_content_now = @package.to_stream.string
146
+ Timecop.travel(3600) do
147
+ zip_content_then = @package.to_stream.string
148
+ assert zip_content_then == zip_content_now, "zip files are not identical"
149
+ end
150
+ end
151
+
152
+ def test_serialization_creates_identical_files_for_identical_packages
153
+ package_1, package_2 = 2.times.map do
154
+ Axlsx::Package.new(:created_at => Time.utc(2013, 1, 1)).tap do |p|
155
+ p.workbook.add_worksheet(:name => "Basic Worksheet") do |sheet|
156
+ sheet.add_row [1, 2, 3]
157
+ end
158
+ end
159
+ end
160
+ assert package_1.to_stream.string == package_2.to_stream.string, "zip files are not identical"
161
+ end
162
+
163
+ def test_serialization_creates_files_with_excel_mime_type
164
+ assert_equal(MimeMagic.by_magic(@package.to_stream).type,
165
+ 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
166
+ end
167
+
168
+ def test_validation
169
+ assert_equal(@package.validate.size, 0, @package.validate)
170
+ Axlsx::Workbook.send(:class_variable_set, :@@date1904, 9900)
171
+ assert(@package.validate.size > 0)
172
+ end
173
+
174
+ def test_parts
175
+ p = @package.send(:parts)
176
+ #all parts have an entry
177
+ assert_equal(p.select{ |part| part[:entry] =~ /_rels\/\.rels/ }.size, 1, "rels missing")
178
+ assert_equal(p.select{ |part| part[:entry] =~ /docProps\/core\.xml/ }.size, 1, "core missing")
179
+ assert_equal(p.select{ |part| part[:entry] =~ /docProps\/app\.xml/ }.size, 1, "app missing")
180
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/_rels\/workbook\.xml\.rels/ }.size, 1, "workbook rels missing")
181
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/workbook\.xml/ }.size, 1, "workbook missing")
182
+ assert_equal(p.select{ |part| part[:entry] =~ /\[Content_Types\]\.xml/ }.size, 1, "content types missing")
183
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/styles\.xml/ }.size, 1, "styles missin")
184
+ 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")
185
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/drawings\/drawing\d\.xml/ }.size, @package.workbook.drawings.size, "one or more drawings missing")
186
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/charts\/chart\d\.xml/ }.size, @package.workbook.charts.size, "one or more charts missing")
187
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/worksheets\/sheet\d\.xml/ }.size, @package.workbook.worksheets.size, "one or more sheet missing")
188
+ 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")
189
+ assert_equal(p.select{ |part| part[:entry] =~ /xl\/comments\d\.xml/ }.size, @package.workbook.worksheets.size, "one or more sheet rels missing")
190
+ 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")
191
+ 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")
192
+ 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")
193
+
194
+
195
+ #no mystery parts
196
+ assert_equal(25, p.size)
197
+
198
+ end
199
+
200
+ def test_shared_strings_requires_part
201
+ @package.use_shared_strings = true
202
+ @package.to_stream #ensure all cell_serializer paths are hit
203
+ p = @package.send(:parts)
204
+ assert_equal(p.select{ |part| part[:entry] =~/xl\/sharedStrings.xml/}.size, 1, "shared strings table missing")
205
+ end
206
+
207
+ def test_workbook_is_a_workbook
208
+ assert @package.workbook.is_a? Axlsx::Workbook
209
+ end
210
+
211
+ def test_base_content_types
212
+ ct = @package.send(:base_content_types)
213
+ assert(ct.select { |c| c.ContentType == Axlsx::RELS_CT }.size == 1, "rels content type missing")
214
+ assert(ct.select { |c| c.ContentType == Axlsx::XML_CT }.size == 1, "xml content type missing")
215
+ assert(ct.select { |c| c.ContentType == Axlsx::APP_CT }.size == 1, "app content type missing")
216
+ assert(ct.select { |c| c.ContentType == Axlsx::CORE_CT }.size == 1, "core content type missing")
217
+ assert(ct.select { |c| c.ContentType == Axlsx::STYLES_CT }.size == 1, "styles content type missing")
218
+ assert(ct.select { |c| c.ContentType == Axlsx::WORKBOOK_CT }.size == 1, "workbook content type missing")
219
+ assert(ct.size == 6)
220
+ end
221
+
222
+ def test_content_type_added_with_shared_strings
223
+ @package.use_shared_strings = true
224
+ ct = @package.send(:content_types)
225
+ assert(ct.select { |type| type.ContentType == Axlsx::SHARED_STRINGS_CT }.size == 1)
226
+ end
227
+
228
+ def test_name_to_indices
229
+ assert(Axlsx::name_to_indices('A1') == [0,0])
230
+ assert(Axlsx::name_to_indices('A100') == [0,99], 'needs to axcept rows that contain 0')
231
+ end
232
+
233
+ def test_to_stream
234
+ stream = @package.to_stream
235
+ assert(stream.is_a?(StringIO))
236
+ # this is just a roundabout guess for a package as it is build now
237
+ # in testing.
238
+ assert(stream.size > 80000)
239
+ end
240
+
241
+ def test_encrypt
242
+ # this is no where near close to ready yet
243
+ assert(@package.encrypt('your_mom.xlsxl', 'has a password') == false)
244
+ end
245
+ end