caxlsx 3.2.0 → 3.4.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 (301) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -9
  3. data/.yardopts_guide +18 -18
  4. data/CHANGELOG.md +394 -354
  5. data/LICENSE +21 -21
  6. data/README.md +184 -168
  7. data/Rakefile +28 -29
  8. data/examples/generate.rb +15 -15
  9. data/lib/axlsx/content_type/abstract_content_type.rb +29 -32
  10. data/lib/axlsx/content_type/content_type.rb +22 -26
  11. data/lib/axlsx/content_type/default.rb +21 -25
  12. data/lib/axlsx/content_type/override.rb +21 -25
  13. data/lib/axlsx/doc_props/app.rb +230 -235
  14. data/lib/axlsx/doc_props/core.rb +34 -39
  15. data/lib/axlsx/drawing/area_chart.rb +96 -99
  16. data/lib/axlsx/drawing/area_series.rb +107 -110
  17. data/lib/axlsx/drawing/ax_data_source.rb +21 -26
  18. data/lib/axlsx/drawing/axes.rb +60 -61
  19. data/lib/axlsx/drawing/axis.rb +185 -190
  20. data/lib/axlsx/drawing/bar_3D_chart.rb +145 -148
  21. data/lib/axlsx/drawing/bar_chart.rb +135 -138
  22. data/lib/axlsx/drawing/bar_series.rb +91 -97
  23. data/lib/axlsx/drawing/bubble_chart.rb +56 -59
  24. data/lib/axlsx/drawing/bubble_series.rb +60 -63
  25. data/lib/axlsx/drawing/cat_axis.rb +80 -85
  26. data/lib/axlsx/drawing/chart.rb +294 -276
  27. data/lib/axlsx/drawing/d_lbls.rb +92 -90
  28. data/lib/axlsx/drawing/drawing.rb +163 -167
  29. data/lib/axlsx/drawing/graphic_frame.rb +51 -54
  30. data/lib/axlsx/drawing/hyperlink.rb +97 -100
  31. data/lib/axlsx/drawing/line_3D_chart.rb +64 -68
  32. data/lib/axlsx/drawing/line_chart.rb +96 -99
  33. data/lib/axlsx/drawing/line_series.rb +107 -110
  34. data/lib/axlsx/drawing/marker.rb +80 -84
  35. data/lib/axlsx/drawing/num_data.rb +47 -52
  36. data/lib/axlsx/drawing/num_data_source.rb +58 -62
  37. data/lib/axlsx/drawing/num_val.rb +31 -34
  38. data/lib/axlsx/drawing/one_cell_anchor.rb +97 -99
  39. data/lib/axlsx/drawing/pic.rb +244 -211
  40. data/lib/axlsx/drawing/picture_locking.rb +39 -42
  41. data/lib/axlsx/drawing/pie_3D_chart.rb +42 -47
  42. data/lib/axlsx/drawing/pie_series.rb +69 -74
  43. data/lib/axlsx/drawing/scaling.rb +57 -60
  44. data/lib/axlsx/drawing/scatter_chart.rb +71 -74
  45. data/lib/axlsx/drawing/scatter_series.rb +126 -129
  46. data/lib/axlsx/drawing/ser_axis.rb +41 -45
  47. data/lib/axlsx/drawing/series.rb +67 -69
  48. data/lib/axlsx/drawing/series_title.rb +23 -25
  49. data/lib/axlsx/drawing/str_data.rb +37 -42
  50. data/lib/axlsx/drawing/str_val.rb +31 -34
  51. data/lib/axlsx/drawing/title.rb +104 -97
  52. data/lib/axlsx/drawing/two_cell_anchor.rb +95 -97
  53. data/lib/axlsx/drawing/val_axis.rb +34 -37
  54. data/lib/axlsx/drawing/view_3D.rb +115 -115
  55. data/lib/axlsx/drawing/vml_drawing.rb +39 -42
  56. data/lib/axlsx/drawing/vml_shape.rb +63 -66
  57. data/lib/axlsx/package.rb +397 -388
  58. data/lib/axlsx/rels/relationship.rb +127 -130
  59. data/lib/axlsx/rels/relationships.rb +29 -32
  60. data/lib/axlsx/stylesheet/border.rb +70 -73
  61. data/lib/axlsx/stylesheet/border_pr.rb +69 -71
  62. data/lib/axlsx/stylesheet/cell_alignment.rb +124 -132
  63. data/lib/axlsx/stylesheet/cell_protection.rb +38 -41
  64. data/lib/axlsx/stylesheet/cell_style.rb +68 -72
  65. data/lib/axlsx/stylesheet/color.rb +77 -76
  66. data/lib/axlsx/stylesheet/dxf.rb +75 -79
  67. data/lib/axlsx/stylesheet/fill.rb +31 -35
  68. data/lib/axlsx/stylesheet/font.rb +157 -156
  69. data/lib/axlsx/stylesheet/gradient_fill.rb +101 -103
  70. data/lib/axlsx/stylesheet/gradient_stop.rb +36 -37
  71. data/lib/axlsx/stylesheet/num_fmt.rb +83 -86
  72. data/lib/axlsx/stylesheet/pattern_fill.rb +71 -73
  73. data/lib/axlsx/stylesheet/styles.rb +543 -494
  74. data/lib/axlsx/stylesheet/table_style.rb +51 -54
  75. data/lib/axlsx/stylesheet/table_style_element.rb +74 -77
  76. data/lib/axlsx/stylesheet/table_styles.rb +42 -46
  77. data/lib/axlsx/stylesheet/xf.rb +144 -147
  78. data/lib/axlsx/util/accessors.rb +62 -64
  79. data/lib/axlsx/util/constants.rb +414 -410
  80. data/lib/axlsx/util/mime_type_utils.rb +24 -11
  81. data/lib/axlsx/util/options_parser.rb +15 -16
  82. data/lib/axlsx/util/serialized_attributes.rb +88 -89
  83. data/lib/axlsx/util/simple_typed_list.rb +180 -179
  84. data/lib/axlsx/util/storage.rb +142 -146
  85. data/lib/axlsx/util/validators.rb +315 -312
  86. data/lib/axlsx/util/zip_command.rb +71 -73
  87. data/lib/axlsx/version.rb +4 -5
  88. data/lib/axlsx/workbook/defined_name.rb +129 -128
  89. data/lib/axlsx/workbook/defined_names.rb +20 -21
  90. data/lib/axlsx/workbook/shared_strings_table.rb +74 -77
  91. data/lib/axlsx/workbook/workbook.rb +430 -395
  92. data/lib/axlsx/workbook/workbook_view.rb +75 -80
  93. data/lib/axlsx/workbook/workbook_views.rb +20 -22
  94. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +78 -77
  95. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
  96. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +243 -244
  97. data/lib/axlsx/workbook/worksheet/border_creator.rb +79 -0
  98. data/lib/axlsx/workbook/worksheet/break.rb +32 -35
  99. data/lib/axlsx/workbook/worksheet/cell.rb +552 -506
  100. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
  101. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
  102. data/lib/axlsx/workbook/worksheet/cfvos.rb +16 -18
  103. data/lib/axlsx/workbook/worksheet/col.rb +142 -145
  104. data/lib/axlsx/workbook/worksheet/col_breaks.rb +34 -35
  105. data/lib/axlsx/workbook/worksheet/color_scale.rb +108 -110
  106. data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
  107. data/lib/axlsx/workbook/worksheet/comment.rb +90 -91
  108. data/lib/axlsx/workbook/worksheet/comments.rb +78 -82
  109. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +81 -82
  110. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +216 -220
  111. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +23 -25
  112. data/lib/axlsx/workbook/worksheet/data_bar.rb +127 -129
  113. data/lib/axlsx/workbook/worksheet/data_validation.rb +266 -246
  114. data/lib/axlsx/workbook/worksheet/data_validations.rb +25 -28
  115. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +28 -30
  116. data/lib/axlsx/workbook/worksheet/dimension.rb +65 -64
  117. data/lib/axlsx/workbook/worksheet/header_footer.rb +51 -52
  118. data/lib/axlsx/workbook/worksheet/icon_set.rb +80 -81
  119. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
  120. data/lib/axlsx/workbook/worksheet/outline_pr.rb +32 -33
  121. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
  122. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +42 -44
  123. data/lib/axlsx/workbook/worksheet/page_setup.rb +237 -240
  124. data/lib/axlsx/workbook/worksheet/pane.rb +138 -139
  125. data/lib/axlsx/workbook/worksheet/pivot_table.rb +332 -296
  126. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +63 -66
  127. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +23 -24
  128. data/lib/axlsx/workbook/worksheet/print_options.rb +38 -39
  129. data/lib/axlsx/workbook/worksheet/protected_range.rb +46 -47
  130. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
  131. data/lib/axlsx/workbook/worksheet/rich_text.rb +53 -55
  132. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +266 -250
  133. data/lib/axlsx/workbook/worksheet/row.rb +173 -164
  134. data/lib/axlsx/workbook/worksheet/row_breaks.rb +32 -33
  135. data/lib/axlsx/workbook/worksheet/selection.rb +99 -101
  136. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +28 -29
  137. data/lib/axlsx/workbook/worksheet/sheet_data.rb +25 -27
  138. data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +18 -18
  139. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
  140. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +117 -118
  141. data/lib/axlsx/workbook/worksheet/sheet_view.rb +206 -213
  142. data/lib/axlsx/workbook/worksheet/table.rb +100 -102
  143. data/lib/axlsx/workbook/worksheet/table_style_info.rb +48 -49
  144. data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
  145. data/lib/axlsx/workbook/worksheet/worksheet.rb +857 -786
  146. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
  147. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +59 -58
  148. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +73 -74
  149. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
  150. data/lib/axlsx.rb +218 -185
  151. data/lib/caxlsx.rb +1 -2
  152. data/lib/schema/dc.xsd +118 -118
  153. data/lib/schema/dcmitype.xsd +51 -51
  154. data/lib/schema/dcterms.xsd +331 -331
  155. data/lib/schema/dml-chartDrawing.xsd +146 -146
  156. data/lib/schema/dml-compatibility.xsd +14 -14
  157. data/lib/schema/dml-lockedCanvas.xsd +11 -11
  158. data/lib/schema/dml-main.xsd +3048 -3048
  159. data/lib/schema/dml-picture.xsd +23 -23
  160. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
  161. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
  162. data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
  163. data/lib/schema/shared-bibliography.xsd +144 -144
  164. data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
  165. data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
  166. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
  167. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
  168. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
  169. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
  170. data/lib/schema/shared-relationshipReference.xsd +25 -25
  171. data/lib/schema/vml-main.xsd +569 -569
  172. data/lib/schema/vml-officeDrawing.xsd +509 -509
  173. data/lib/schema/vml-presentationDrawing.xsd +12 -12
  174. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
  175. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
  176. data/lib/schema/xml.xsd +116 -116
  177. metadata +5 -252
  178. data/test/benchmark.rb +0 -72
  179. data/test/content_type/tc_content_type.rb +0 -76
  180. data/test/content_type/tc_default.rb +0 -16
  181. data/test/content_type/tc_override.rb +0 -14
  182. data/test/doc_props/tc_app.rb +0 -43
  183. data/test/doc_props/tc_core.rb +0 -42
  184. data/test/drawing/tc_area_chart.rb +0 -39
  185. data/test/drawing/tc_area_series.rb +0 -71
  186. data/test/drawing/tc_axes.rb +0 -8
  187. data/test/drawing/tc_axis.rb +0 -112
  188. data/test/drawing/tc_bar_3D_chart.rb +0 -86
  189. data/test/drawing/tc_bar_chart.rb +0 -86
  190. data/test/drawing/tc_bar_series.rb +0 -46
  191. data/test/drawing/tc_bubble_chart.rb +0 -44
  192. data/test/drawing/tc_bubble_series.rb +0 -21
  193. data/test/drawing/tc_cat_axis.rb +0 -31
  194. data/test/drawing/tc_cat_axis_data.rb +0 -27
  195. data/test/drawing/tc_chart.rb +0 -123
  196. data/test/drawing/tc_d_lbls.rb +0 -57
  197. data/test/drawing/tc_data_source.rb +0 -23
  198. data/test/drawing/tc_drawing.rb +0 -80
  199. data/test/drawing/tc_graphic_frame.rb +0 -27
  200. data/test/drawing/tc_hyperlink.rb +0 -64
  201. data/test/drawing/tc_line_3d_chart.rb +0 -47
  202. data/test/drawing/tc_line_chart.rb +0 -39
  203. data/test/drawing/tc_line_series.rb +0 -71
  204. data/test/drawing/tc_marker.rb +0 -44
  205. data/test/drawing/tc_named_axis_data.rb +0 -27
  206. data/test/drawing/tc_num_data.rb +0 -31
  207. data/test/drawing/tc_num_val.rb +0 -29
  208. data/test/drawing/tc_one_cell_anchor.rb +0 -66
  209. data/test/drawing/tc_pic.rb +0 -103
  210. data/test/drawing/tc_picture_locking.rb +0 -72
  211. data/test/drawing/tc_pie_3D_chart.rb +0 -28
  212. data/test/drawing/tc_pie_series.rb +0 -33
  213. data/test/drawing/tc_scaling.rb +0 -36
  214. data/test/drawing/tc_scatter_chart.rb +0 -48
  215. data/test/drawing/tc_scatter_series.rb +0 -74
  216. data/test/drawing/tc_ser_axis.rb +0 -31
  217. data/test/drawing/tc_series.rb +0 -23
  218. data/test/drawing/tc_series_title.rb +0 -54
  219. data/test/drawing/tc_str_data.rb +0 -18
  220. data/test/drawing/tc_str_val.rb +0 -30
  221. data/test/drawing/tc_title.rb +0 -70
  222. data/test/drawing/tc_two_cell_anchor.rb +0 -36
  223. data/test/drawing/tc_val_axis.rb +0 -24
  224. data/test/drawing/tc_view_3D.rb +0 -54
  225. data/test/drawing/tc_vml_drawing.rb +0 -25
  226. data/test/drawing/tc_vml_shape.rb +0 -106
  227. data/test/fixtures/image1.gif +0 -0
  228. data/test/fixtures/image1.jpeg +0 -0
  229. data/test/fixtures/image1.jpg +0 -0
  230. data/test/fixtures/image1.png +0 -0
  231. data/test/fixtures/image1_fake.jpg +0 -0
  232. data/test/profile.rb +0 -24
  233. data/test/rels/tc_relationship.rb +0 -52
  234. data/test/rels/tc_relationships.rb +0 -37
  235. data/test/stylesheet/tc_border.rb +0 -37
  236. data/test/stylesheet/tc_border_pr.rb +0 -32
  237. data/test/stylesheet/tc_cell_alignment.rb +0 -81
  238. data/test/stylesheet/tc_cell_protection.rb +0 -29
  239. data/test/stylesheet/tc_cell_style.rb +0 -57
  240. data/test/stylesheet/tc_color.rb +0 -43
  241. data/test/stylesheet/tc_dxf.rb +0 -81
  242. data/test/stylesheet/tc_fill.rb +0 -18
  243. data/test/stylesheet/tc_font.rb +0 -133
  244. data/test/stylesheet/tc_gradient_fill.rb +0 -72
  245. data/test/stylesheet/tc_gradient_stop.rb +0 -31
  246. data/test/stylesheet/tc_num_fmt.rb +0 -30
  247. data/test/stylesheet/tc_pattern_fill.rb +0 -43
  248. data/test/stylesheet/tc_styles.rb +0 -309
  249. data/test/stylesheet/tc_table_style.rb +0 -44
  250. data/test/stylesheet/tc_table_style_element.rb +0 -45
  251. data/test/stylesheet/tc_table_styles.rb +0 -29
  252. data/test/stylesheet/tc_xf.rb +0 -120
  253. data/test/tc_axlsx.rb +0 -109
  254. data/test/tc_helper.rb +0 -10
  255. data/test/tc_package.rb +0 -317
  256. data/test/util/tc_mime_type_utils.rb +0 -13
  257. data/test/util/tc_serialized_attributes.rb +0 -19
  258. data/test/util/tc_simple_typed_list.rb +0 -77
  259. data/test/util/tc_validators.rb +0 -210
  260. data/test/workbook/tc_defined_name.rb +0 -49
  261. data/test/workbook/tc_shared_strings_table.rb +0 -59
  262. data/test/workbook/tc_workbook.rb +0 -165
  263. data/test/workbook/tc_workbook_view.rb +0 -50
  264. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
  265. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
  266. data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
  267. data/test/workbook/worksheet/tc_break.rb +0 -49
  268. data/test/workbook/worksheet/tc_cell.rb +0 -465
  269. data/test/workbook/worksheet/tc_cfvo.rb +0 -31
  270. data/test/workbook/worksheet/tc_col.rb +0 -93
  271. data/test/workbook/worksheet/tc_color_scale.rb +0 -58
  272. data/test/workbook/worksheet/tc_comment.rb +0 -72
  273. data/test/workbook/worksheet/tc_comments.rb +0 -57
  274. data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
  275. data/test/workbook/worksheet/tc_data_bar.rb +0 -46
  276. data/test/workbook/worksheet/tc_data_validation.rb +0 -265
  277. data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
  278. data/test/workbook/worksheet/tc_header_footer.rb +0 -151
  279. data/test/workbook/worksheet/tc_icon_set.rb +0 -45
  280. data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
  281. data/test/workbook/worksheet/tc_page_margins.rb +0 -97
  282. data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
  283. data/test/workbook/worksheet/tc_page_setup.rb +0 -143
  284. data/test/workbook/worksheet/tc_pane.rb +0 -54
  285. data/test/workbook/worksheet/tc_pivot_table.rb +0 -180
  286. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
  287. data/test/workbook/worksheet/tc_print_options.rb +0 -72
  288. data/test/workbook/worksheet/tc_protected_range.rb +0 -17
  289. data/test/workbook/worksheet/tc_rich_text.rb +0 -44
  290. data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
  291. data/test/workbook/worksheet/tc_row.rb +0 -160
  292. data/test/workbook/worksheet/tc_selection.rb +0 -55
  293. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
  294. data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
  295. data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
  296. data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
  297. data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
  298. data/test/workbook/worksheet/tc_table.rb +0 -77
  299. data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
  300. data/test/workbook/worksheet/tc_worksheet.rb +0 -632
  301. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
data/test/tc_package.rb DELETED
@@ -1,317 +0,0 @@
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('../fixtures/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('../fixtures/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('../fixtures/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
- @package.serialize(@fname)
131
- assert_zip_file_matches_package(@fname, @package)
132
- assert_created_with_rubyzip(@fname, @package)
133
- File.delete(@fname)
134
- end
135
-
136
- def test_serialization_with_zip_command
137
- @package.serialize(@fname, zip_command: "zip")
138
- assert_zip_file_matches_package(@fname, @package)
139
- assert_created_with_zip_command(@fname, @package)
140
- File.delete(@fname)
141
- end
142
-
143
- def test_serialization_with_zip_command_and_absolute_path
144
- fname = "#{Dir.tmpdir}/#{@fname}"
145
- @package.serialize(fname, zip_command: "zip")
146
- assert_zip_file_matches_package(fname, @package)
147
- assert_created_with_zip_command(fname, @package)
148
- File.delete(fname)
149
- end
150
-
151
- def test_serialization_with_invalid_zip_command
152
- assert_raises Axlsx::ZipCommand::ZipError do
153
- @package.serialize(@fname, zip_command: "invalid_zip")
154
- end
155
- end
156
-
157
- def assert_zip_file_matches_package(fname, package)
158
- zf = Zip::File.open(fname)
159
- package.send(:parts).each{ |part| zf.get_entry(part[:entry]) }
160
- end
161
-
162
- def assert_created_with_rubyzip(fname, package)
163
- assert_equal 2098, get_mtime(fname, package).year, "XLSX files created with RubyZip have 2098 as the file mtime"
164
- end
165
-
166
- def assert_created_with_zip_command(fname, package)
167
- assert_equal Time.now.utc.year, get_mtime(fname, package).year, "XLSX files created with a zip command have the current year as the file mtime"
168
- end
169
-
170
- def get_mtime(fname, package)
171
- zf = Zip::File.open(fname)
172
- part = package.send(:parts).first
173
- entry = zf.get_entry(part[:entry])
174
- entry.mtime.utc
175
- end
176
-
177
- def test_serialization_with_deprecated_argument
178
- warnings = capture_warnings do
179
- @package.serialize(@fname, false)
180
- end
181
- assert_equal 1, warnings.size
182
- assert_includes warnings.first, "confirm_valid as a boolean is deprecated"
183
- File.delete(@fname)
184
- end
185
-
186
- def test_serialization_with_deprecated_three_arguments
187
- warnings = capture_warnings do
188
- @package.serialize(@fname, true, zip_command: "zip")
189
- end
190
- assert_zip_file_matches_package(@fname, @package)
191
- assert_created_with_zip_command(@fname, @package)
192
- assert_equal 2, warnings.size
193
- assert_includes warnings.first, "with 3 arguments is deprecated"
194
- File.delete(@fname)
195
- end
196
-
197
- def capture_warnings(&block)
198
- original_warn = Kernel.instance_method(:warn)
199
- warnings = []
200
- Kernel.send(:define_method, :warn) { |string| warnings << string }
201
- block.call
202
- original_verbose = $VERBOSE
203
- $VERBOSE = nil
204
- Kernel.send(:define_method, :warn, original_warn)
205
- $VERBOSE = original_verbose
206
- warnings
207
- end
208
-
209
- # See comment for Package#zip_entry_for_part
210
- def test_serialization_creates_identical_files_at_any_time_if_created_at_is_set
211
- @package.core.created = Time.now
212
- zip_content_now = @package.to_stream.string
213
- Timecop.travel(3600) do
214
- zip_content_then = @package.to_stream.string
215
- assert zip_content_then == zip_content_now, "zip files are not identical"
216
- end
217
- end
218
-
219
- def test_serialization_creates_identical_files_for_identical_packages
220
- package_1, package_2 = 2.times.map do
221
- Axlsx::Package.new(:created_at => Time.utc(2013, 1, 1)).tap do |p|
222
- p.workbook.add_worksheet(:name => "Basic Worksheet") do |sheet|
223
- sheet.add_row [1, 2, 3]
224
- end
225
- end
226
- end
227
- assert package_1.to_stream.string == package_2.to_stream.string, "zip files are not identical"
228
- end
229
-
230
- def test_serialization_creates_files_with_excel_mime_type
231
- assert_equal(Marcel::MimeType.for(@package.to_stream),
232
- 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet')
233
- end
234
-
235
- def test_validation
236
- assert_equal(@package.validate.size, 0, @package.validate)
237
- Axlsx::Workbook.send(:class_variable_set, :@@date1904, 9900)
238
- assert(@package.validate.size > 0)
239
- end
240
-
241
- def test_parts
242
- p = @package.send(:parts)
243
- #all parts have an entry
244
- assert_equal(p.select{ |part| part[:entry] =~ /_rels\/\.rels/ }.size, 1, "rels missing")
245
- assert_equal(p.select{ |part| part[:entry] =~ /docProps\/core\.xml/ }.size, 1, "core missing")
246
- assert_equal(p.select{ |part| part[:entry] =~ /docProps\/app\.xml/ }.size, 1, "app missing")
247
- assert_equal(p.select{ |part| part[:entry] =~ /xl\/_rels\/workbook\.xml\.rels/ }.size, 1, "workbook rels missing")
248
- assert_equal(p.select{ |part| part[:entry] =~ /xl\/workbook\.xml/ }.size, 1, "workbook missing")
249
- assert_equal(p.select{ |part| part[:entry] =~ /\[Content_Types\]\.xml/ }.size, 1, "content types missing")
250
- assert_equal(p.select{ |part| part[:entry] =~ /xl\/styles\.xml/ }.size, 1, "styles missin")
251
- 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")
252
- assert_equal(p.select{ |part| part[:entry] =~ /xl\/drawings\/drawing\d\.xml/ }.size, @package.workbook.drawings.size, "one or more drawings missing")
253
- assert_equal(p.select{ |part| part[:entry] =~ /xl\/charts\/chart\d\.xml/ }.size, @package.workbook.charts.size, "one or more charts missing")
254
- assert_equal(p.select{ |part| part[:entry] =~ /xl\/worksheets\/sheet\d\.xml/ }.size, @package.workbook.worksheets.size, "one or more sheet missing")
255
- 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")
256
- assert_equal(p.select{ |part| part[:entry] =~ /xl\/comments\d\.xml/ }.size, @package.workbook.worksheets.size, "one or more sheet rels missing")
257
- 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")
258
- 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")
259
- 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")
260
-
261
-
262
- #no mystery parts
263
- assert_equal(25, p.size)
264
-
265
- end
266
-
267
- def test_shared_strings_requires_part
268
- @package.use_shared_strings = true
269
- @package.to_stream #ensure all cell_serializer paths are hit
270
- p = @package.send(:parts)
271
- assert_equal(p.select{ |part| part[:entry] =~/xl\/sharedStrings.xml/}.size, 1, "shared strings table missing")
272
- end
273
-
274
- def test_workbook_is_a_workbook
275
- assert @package.workbook.is_a? Axlsx::Workbook
276
- end
277
-
278
- def test_base_content_types
279
- ct = @package.send(:base_content_types)
280
- assert(ct.select { |c| c.ContentType == Axlsx::RELS_CT }.size == 1, "rels content type missing")
281
- assert(ct.select { |c| c.ContentType == Axlsx::XML_CT }.size == 1, "xml content type missing")
282
- assert(ct.select { |c| c.ContentType == Axlsx::APP_CT }.size == 1, "app content type missing")
283
- assert(ct.select { |c| c.ContentType == Axlsx::CORE_CT }.size == 1, "core content type missing")
284
- assert(ct.select { |c| c.ContentType == Axlsx::STYLES_CT }.size == 1, "styles content type missing")
285
- assert(ct.select { |c| c.ContentType == Axlsx::WORKBOOK_CT }.size == 1, "workbook content type missing")
286
- assert(ct.size == 6)
287
- end
288
-
289
- def test_content_type_added_with_shared_strings
290
- @package.use_shared_strings = true
291
- ct = @package.send(:content_types)
292
- assert(ct.select { |type| type.ContentType == Axlsx::SHARED_STRINGS_CT }.size == 1)
293
- end
294
-
295
- def test_name_to_indices
296
- assert(Axlsx::name_to_indices('A1') == [0,0])
297
- assert(Axlsx::name_to_indices('A100') == [0,99], 'needs to axcept rows that contain 0')
298
- end
299
-
300
- def test_to_stream
301
- stream = @package.to_stream
302
- assert(stream.is_a?(StringIO))
303
- # this is just a roundabout guess for a package as it is build now
304
- # in testing.
305
- assert(stream.size > 80000)
306
- # Stream (of zipped contents) should have appropriate default encoding
307
- assert stream.string.valid_encoding?
308
- assert_equal(stream.external_encoding, Encoding::ASCII_8BIT)
309
- # Cached ids should be cleared
310
- assert(Axlsx::Relationship.ids_cache.empty?)
311
- end
312
-
313
- def test_encrypt
314
- # this is no where near close to ready yet
315
- assert(@package.encrypt('your_mom.xlsxl', 'has a password') == false)
316
- end
317
- end
@@ -1,13 +0,0 @@
1
- require 'tc_helper.rb'
2
- class TestMimeTypeUtils < Test::Unit::TestCase
3
- def setup
4
- @test_img = File.dirname(__FILE__) + "/../fixtures/image1.jpeg"
5
- end
6
-
7
- def teardown
8
- end
9
-
10
- def test_mime_type_utils
11
- assert_equal(Axlsx::MimeTypeUtils::get_mime_type(@test_img), 'image/jpeg')
12
- end
13
- end
@@ -1,19 +0,0 @@
1
- require 'tc_helper.rb'
2
- class Funk
3
- include Axlsx::Accessors
4
- include Axlsx::SerializedAttributes
5
- serializable_attributes :camel_symbol, :boolean, :integer
6
-
7
- attr_accessor :camel_symbol, :boolean, :integer
8
- end
9
-
10
- class TestSeralizedAttributes < Test::Unit::TestCase
11
- def setup
12
- @object = Funk.new
13
- end
14
-
15
- def test_camel_symbol
16
- @object.camel_symbol = :foo_bar
17
- assert_equal('camelSymbol="fooBar" ', @object.serialized_attributes)
18
- end
19
- end
@@ -1,77 +0,0 @@
1
- require 'tc_helper.rb'
2
- class TestSimpleTypedList < Test::Unit::TestCase
3
- def setup
4
- @list = Axlsx::SimpleTypedList.new Integer
5
- end
6
-
7
- def teardown
8
- end
9
-
10
- def test_type_is_a_class_or_array_of_class
11
- assert_nothing_raised { Axlsx::SimpleTypedList.new Integer }
12
- assert_nothing_raised { Axlsx::SimpleTypedList.new [Integer,String] }
13
- assert_raise(ArgumentError) { Axlsx::SimpleTypedList.new }
14
- assert_raise(ArgumentError) { Axlsx::SimpleTypedList.new "1" }
15
- assert_raise(ArgumentError) { Axlsx::SimpleTypedList.new [Integer, "Class"] }
16
- end
17
-
18
- def test_indexed_based_assignment
19
- #should not allow nil assignment
20
- assert_raise(ArgumentError) { @list[0] = nil }
21
- assert_raise(ArgumentError) { @list[0] = "1" }
22
- assert_nothing_raised { @list[0] = 1 }
23
- end
24
-
25
- def test_concat_assignment
26
- assert_raise(ArgumentError) { @list << nil }
27
- assert_raise(ArgumentError) { @list << "1" }
28
- assert_nothing_raised { @list << 1 }
29
- end
30
-
31
- def test_concat_should_return_index
32
- assert( @list.size == 0 )
33
- assert( @list << 1 == 0 )
34
- assert( @list << 2 == 1 )
35
- @list.delete_at 0
36
- assert( @list << 3 == 1 )
37
- assert( @list.index(2) == 0 )
38
- end
39
-
40
- def test_push_should_return_index
41
- assert( @list.push(1) == 0 )
42
- assert( @list.push(2) == 1 )
43
- @list.delete_at 0
44
- assert( @list.push(3) == 1 )
45
- assert( @list.index(2) == 0 )
46
- end
47
-
48
- def test_locking
49
- @list.push 1
50
- @list.push 2
51
- @list.push 3
52
- @list.lock
53
-
54
- assert_raise(ArgumentError) { @list.delete 1 }
55
- assert_raise(ArgumentError) { @list.delete_at 1 }
56
- assert_raise(ArgumentError) { @list.delete_at 2 }
57
- @list.push 4
58
- assert_nothing_raised { @list.delete_at 3 }
59
- @list.unlock
60
- #ignore garbage
61
- assert_nothing_raised { @list.delete 0 }
62
- assert_nothing_raised { @list.delete 9 }
63
- end
64
-
65
- def test_delete
66
- @list.push 1
67
- assert(@list.size == 1)
68
- @list.delete 1
69
- assert(@list.empty?)
70
- end
71
-
72
- def test_equality
73
- @list.push 1
74
- @list.push 2
75
- assert_equal(@list.to_ary, [1,2])
76
- end
77
- end
@@ -1,210 +0,0 @@
1
- require 'tc_helper.rb'
2
- class TestValidators < Test::Unit::TestCase
3
- def setup
4
- end
5
- def teardown
6
- end
7
-
8
- def test_validators
9
- #unsigned_int
10
- assert_nothing_raised { Axlsx.validate_unsigned_int 1 }
11
- assert_nothing_raised { Axlsx.validate_unsigned_int(+1) }
12
- assert_raise(ArgumentError) { Axlsx.validate_unsigned_int(-1)}
13
- assert_raise(ArgumentError) { Axlsx.validate_unsigned_int('1') }
14
-
15
- #int
16
- assert_nothing_raised { Axlsx.validate_int(1) }
17
- assert_nothing_raised { Axlsx.validate_int(-1) }
18
- assert_raise(ArgumentError) { Axlsx.validate_int('a')}
19
- assert_raise(ArgumentError) { Axlsx.validate_int(Array) }
20
-
21
- #boolean (as 0 or 1, :true, :false, true, false, or "true," "false")
22
- [0,1,:true, :false, true, false, "true", "false"].each do |v|
23
- assert_nothing_raised { Axlsx.validate_boolean 0 }
24
- end
25
- assert_raise(ArgumentError) { Axlsx.validate_boolean 2 }
26
-
27
- #string
28
- assert_nothing_raised { Axlsx.validate_string "1" }
29
- assert_raise(ArgumentError) { Axlsx.validate_string 2 }
30
- assert_raise(ArgumentError) { Axlsx.validate_string false }
31
-
32
- #float
33
- assert_nothing_raised { Axlsx.validate_float 1.0 }
34
- assert_raise(ArgumentError) { Axlsx.validate_float 2 }
35
- assert_raise(ArgumentError) { Axlsx.validate_float false }
36
-
37
- #pattern_type
38
- assert_nothing_raised { Axlsx.validate_pattern_type :none }
39
- assert_raise(ArgumentError) { Axlsx.validate_pattern_type "none" }
40
- assert_raise(ArgumentError) { Axlsx.validate_pattern_type "crazy_pattern" }
41
- assert_raise(ArgumentError) { Axlsx.validate_pattern_type false }
42
-
43
- #gradient_type
44
- assert_nothing_raised { Axlsx.validate_gradient_type :path }
45
- assert_raise(ArgumentError) { Axlsx.validate_gradient_type nil }
46
- assert_raise(ArgumentError) { Axlsx.validate_gradient_type "fractal" }
47
- assert_raise(ArgumentError) { Axlsx.validate_gradient_type false }
48
-
49
- #horizontal alignment
50
- assert_nothing_raised { Axlsx.validate_horizontal_alignment :general }
51
- assert_raise(ArgumentError) { Axlsx.validate_horizontal_alignment nil }
52
- assert_raise(ArgumentError) { Axlsx.validate_horizontal_alignment "wavy" }
53
- assert_raise(ArgumentError) { Axlsx.validate_horizontal_alignment false }
54
-
55
- #vertical alignment
56
- assert_nothing_raised { Axlsx.validate_vertical_alignment :top }
57
- assert_raise(ArgumentError) { Axlsx.validate_vertical_alignment nil }
58
- assert_raise(ArgumentError) { Axlsx.validate_vertical_alignment "dynamic" }
59
- assert_raise(ArgumentError) { Axlsx.validate_vertical_alignment false }
60
-
61
- #contentType
62
- assert_nothing_raised { Axlsx.validate_content_type Axlsx::WORKBOOK_CT }
63
- assert_raise(ArgumentError) { Axlsx.validate_content_type nil }
64
- assert_raise(ArgumentError) { Axlsx.validate_content_type "http://some.url" }
65
- assert_raise(ArgumentError) { Axlsx.validate_content_type false }
66
-
67
- #relationshipType
68
- assert_nothing_raised { Axlsx.validate_relationship_type Axlsx::WORKBOOK_R }
69
- assert_raise(ArgumentError) { Axlsx.validate_relationship_type nil }
70
- assert_raise(ArgumentError) { Axlsx.validate_relationship_type "http://some.url" }
71
- assert_raise(ArgumentError) { Axlsx.validate_relationship_type false }
72
-
73
- #number_with_unit
74
- assert_nothing_raised { Axlsx.validate_number_with_unit "210mm" }
75
- assert_nothing_raised { Axlsx.validate_number_with_unit "8.5in" }
76
- assert_nothing_raised { Axlsx.validate_number_with_unit "29.7cm" }
77
- assert_nothing_raised { Axlsx.validate_number_with_unit "120pt" }
78
- assert_nothing_raised { Axlsx.validate_number_with_unit "0pc" }
79
- assert_nothing_raised { Axlsx.validate_number_with_unit "12.34pi" }
80
- assert_raise(ArgumentError) { Axlsx.validate_number_with_unit nil }
81
- assert_raise(ArgumentError) { Axlsx.validate_number_with_unit "210" }
82
- assert_raise(ArgumentError) { Axlsx.validate_number_with_unit 210 }
83
- assert_raise(ArgumentError) { Axlsx.validate_number_with_unit "mm" }
84
- assert_raise(ArgumentError) { Axlsx.validate_number_with_unit "-29cm" }
85
-
86
- #scale_10_400
87
- assert_nothing_raised { Axlsx.validate_scale_10_400 10 }
88
- assert_nothing_raised { Axlsx.validate_scale_10_400 100 }
89
- assert_nothing_raised { Axlsx.validate_scale_10_400 400 }
90
- assert_raise(ArgumentError) { Axlsx.validate_scale_10_400 9 }
91
- assert_raise(ArgumentError) { Axlsx.validate_scale_10_400 10.0 }
92
- assert_raise(ArgumentError) { Axlsx.validate_scale_10_400 400.1 }
93
- assert_raise(ArgumentError) { Axlsx.validate_scale_10_400 "99" }
94
-
95
- #scale_0_10_400
96
- assert_nothing_raised { Axlsx.validate_scale_0_10_400 0 }
97
- assert_nothing_raised { Axlsx.validate_scale_0_10_400 10 }
98
- assert_nothing_raised { Axlsx.validate_scale_0_10_400 100 }
99
- assert_nothing_raised { Axlsx.validate_scale_0_10_400 400 }
100
- assert_raise(ArgumentError) { Axlsx.validate_scale_0_10_400 9 }
101
- assert_raise(ArgumentError) { Axlsx.validate_scale_0_10_400 10.0 }
102
- assert_raise(ArgumentError) { Axlsx.validate_scale_0_10_400 400.1 }
103
- assert_raise(ArgumentError) { Axlsx.validate_scale_0_10_400 "99" }
104
-
105
- #page_orientation
106
- assert_nothing_raised { Axlsx.validate_page_orientation :default }
107
- assert_nothing_raised { Axlsx.validate_page_orientation :landscape }
108
- assert_nothing_raised { Axlsx.validate_page_orientation :portrait }
109
- assert_raise(ArgumentError) { Axlsx.validate_page_orientation nil }
110
- assert_raise(ArgumentError) { Axlsx.validate_page_orientation 1 }
111
- assert_raise(ArgumentError) { Axlsx.validate_page_orientation "landscape" }
112
-
113
- #data_validation_error_style
114
- [:information, :stop, :warning].each do |sym|
115
- assert_nothing_raised { Axlsx.validate_data_validation_error_style sym }
116
- end
117
- assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style :other_symbol }
118
- assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 'warning' }
119
- assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 0 }
120
-
121
- #data_validation_operator
122
- [:lessThan, :lessThanOrEqual, :equal, :notEqual, :greaterThanOrEqual, :greaterThan, :between, :notBetween].each do |sym|
123
- assert_nothing_raised { Axlsx.validate_data_validation_operator sym }
124
- end
125
- assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style :other_symbol }
126
- assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 'lessThan' }
127
- assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 0 }
128
-
129
- #data_validation_type
130
- [:custom, :data, :decimal, :list, :none, :textLength, :date, :time, :whole].each do |sym|
131
- assert_nothing_raised { Axlsx.validate_data_validation_type sym }
132
- end
133
- assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style :other_symbol }
134
- assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 'decimal' }
135
- assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 0 }
136
-
137
- #sheet_view_type
138
- [:normal, :page_break_preview, :page_layout].each do |sym|
139
- assert_nothing_raised { Axlsx.validate_sheet_view_type sym }
140
- end
141
- assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style :other_symbol }
142
- assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 'page_layout' }
143
- assert_raise(ArgumentError) { Axlsx.validate_data_validation_error_style 0 }
144
-
145
- #active_pane_type
146
- [:bottom_left, :bottom_right, :top_left, :top_right].each do |sym|
147
- assert_nothing_raised { Axlsx.validate_pane_type sym }
148
- end
149
- assert_raise(ArgumentError) { Axlsx.validate_pane_type :other_symbol }
150
- assert_raise(ArgumentError) { Axlsx.validate_pane_type 'bottom_left' }
151
- assert_raise(ArgumentError) { Axlsx.validate_pane_type 0 }
152
-
153
- #split_state_type
154
- [:frozen, :frozen_split, :split].each do |sym|
155
- assert_nothing_raised { Axlsx.validate_split_state_type sym }
156
- end
157
- assert_raise(ArgumentError) { Axlsx.validate_split_state_type :other_symbol }
158
- assert_raise(ArgumentError) { Axlsx.validate_split_state_type 'frozen_split' }
159
- assert_raise(ArgumentError) { Axlsx.validate_split_state_type 0 }
160
-
161
- #display_blanks_as
162
- [:gap, :span, :zero].each do |sym|
163
- assert_nothing_raised { Axlsx.validate_display_blanks_as sym }
164
- end
165
- assert_raise(ArgumentError) { Axlsx.validate_display_blanks_as :other_symbol }
166
- assert_raise(ArgumentError) { Axlsx.validate_display_blanks_as 'other_blank' }
167
- assert_raise(ArgumentError) { Axlsx.validate_display_blanks_as 0 }
168
-
169
- #view_visibility
170
- [:visible, :hidden, :very_hidden].each do |sym|
171
- assert_nothing_raised { Axlsx.validate_view_visibility sym }
172
- end
173
- assert_raise(ArgumentError) { Axlsx.validate_view_visibility :other_symbol }
174
- assert_raise(ArgumentError) { Axlsx.validate_view_visibility 'other_visibility' }
175
- assert_raise(ArgumentError) { Axlsx.validate_view_visibility 0 }
176
-
177
- #marker_symbol
178
- [:default, :circle, :dash, :diamond, :dot, :picture, :plus, :square, :star, :triangle, :x].each do |sym|
179
- assert_nothing_raised { Axlsx.validate_marker_symbol sym }
180
- end
181
- assert_raise(ArgumentError) { Axlsx.validate_marker_symbol :other_symbol }
182
- assert_raise(ArgumentError) { Axlsx.validate_marker_symbol 'other_marker' }
183
- assert_raise(ArgumentError) { Axlsx.validate_marker_symbol 0 }
184
- end
185
-
186
- def test_validate_integerish
187
- assert_raise(ArgumentError) { Axlsx.validate_integerish Axlsx }
188
- [1, 1.4, "a"].each { |test_value| assert_nothing_raised { Axlsx.validate_integerish test_value } }
189
- end
190
- def test_validate_family
191
- assert_raise(ArgumentError) { Axlsx.validate_family 0 }
192
- (1..5).each do |item|
193
- assert_nothing_raised { Axlsx.validate_family item }
194
- end
195
- end
196
-
197
- def test_validate_u
198
- assert_raise(ArgumentError) { Axlsx.validate_cell_u :hoge }
199
- [:none, :single, :double, :singleAccounting, :doubleAccounting].each do |sym|
200
- assert_nothing_raised { Axlsx.validate_cell_u sym }
201
- end
202
- end
203
-
204
- def test_range_validation
205
- # exclusive
206
- assert_raise(ArgumentError) { Axlsx::RangeValidator.validate('foo', 1, 10, 10, false) }
207
- # inclusive by default
208
- assert_nothing_raised { Axlsx::RangeValidator.validate('foo', 1, 10, 10) }
209
- end
210
- end
@@ -1,49 +0,0 @@
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