caxlsx 3.2.0 → 3.3.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 (300) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -9
  3. data/.yardopts_guide +18 -18
  4. data/CHANGELOG.md +385 -354
  5. data/LICENSE +21 -21
  6. data/README.md +165 -168
  7. data/Rakefile +29 -29
  8. data/examples/generate.rb +15 -15
  9. data/lib/axlsx/content_type/abstract_content_type.rb +32 -32
  10. data/lib/axlsx/content_type/content_type.rb +26 -26
  11. data/lib/axlsx/content_type/default.rb +25 -25
  12. data/lib/axlsx/content_type/override.rb +25 -25
  13. data/lib/axlsx/doc_props/app.rb +235 -235
  14. data/lib/axlsx/doc_props/core.rb +39 -39
  15. data/lib/axlsx/drawing/area_chart.rb +99 -99
  16. data/lib/axlsx/drawing/area_series.rb +110 -110
  17. data/lib/axlsx/drawing/ax_data_source.rb +26 -26
  18. data/lib/axlsx/drawing/axes.rb +61 -61
  19. data/lib/axlsx/drawing/axis.rb +190 -190
  20. data/lib/axlsx/drawing/bar_3D_chart.rb +148 -148
  21. data/lib/axlsx/drawing/bar_chart.rb +138 -138
  22. data/lib/axlsx/drawing/bar_series.rb +97 -97
  23. data/lib/axlsx/drawing/bubble_chart.rb +59 -59
  24. data/lib/axlsx/drawing/bubble_series.rb +63 -63
  25. data/lib/axlsx/drawing/cat_axis.rb +85 -85
  26. data/lib/axlsx/drawing/chart.rb +299 -276
  27. data/lib/axlsx/drawing/d_lbls.rb +91 -90
  28. data/lib/axlsx/drawing/drawing.rb +167 -167
  29. data/lib/axlsx/drawing/graphic_frame.rb +54 -54
  30. data/lib/axlsx/drawing/hyperlink.rb +100 -100
  31. data/lib/axlsx/drawing/line_3D_chart.rb +68 -68
  32. data/lib/axlsx/drawing/line_chart.rb +99 -99
  33. data/lib/axlsx/drawing/line_series.rb +110 -110
  34. data/lib/axlsx/drawing/marker.rb +84 -84
  35. data/lib/axlsx/drawing/num_data.rb +52 -52
  36. data/lib/axlsx/drawing/num_data_source.rb +62 -62
  37. data/lib/axlsx/drawing/num_val.rb +34 -34
  38. data/lib/axlsx/drawing/one_cell_anchor.rb +99 -99
  39. data/lib/axlsx/drawing/pic.rb +211 -211
  40. data/lib/axlsx/drawing/picture_locking.rb +42 -42
  41. data/lib/axlsx/drawing/pie_3D_chart.rb +47 -47
  42. data/lib/axlsx/drawing/pie_series.rb +74 -74
  43. data/lib/axlsx/drawing/scaling.rb +60 -60
  44. data/lib/axlsx/drawing/scatter_chart.rb +74 -74
  45. data/lib/axlsx/drawing/scatter_series.rb +129 -129
  46. data/lib/axlsx/drawing/ser_axis.rb +45 -45
  47. data/lib/axlsx/drawing/series.rb +69 -69
  48. data/lib/axlsx/drawing/series_title.rb +25 -25
  49. data/lib/axlsx/drawing/str_data.rb +42 -42
  50. data/lib/axlsx/drawing/str_val.rb +34 -34
  51. data/lib/axlsx/drawing/title.rb +107 -97
  52. data/lib/axlsx/drawing/two_cell_anchor.rb +97 -97
  53. data/lib/axlsx/drawing/val_axis.rb +37 -37
  54. data/lib/axlsx/drawing/view_3D.rb +115 -115
  55. data/lib/axlsx/drawing/vml_drawing.rb +42 -42
  56. data/lib/axlsx/drawing/vml_shape.rb +66 -66
  57. data/lib/axlsx/package.rb +398 -388
  58. data/lib/axlsx/rels/relationship.rb +130 -130
  59. data/lib/axlsx/rels/relationships.rb +32 -32
  60. data/lib/axlsx/stylesheet/border.rb +73 -73
  61. data/lib/axlsx/stylesheet/border_pr.rb +71 -71
  62. data/lib/axlsx/stylesheet/cell_alignment.rb +132 -132
  63. data/lib/axlsx/stylesheet/cell_protection.rb +41 -41
  64. data/lib/axlsx/stylesheet/cell_style.rb +72 -72
  65. data/lib/axlsx/stylesheet/color.rb +76 -76
  66. data/lib/axlsx/stylesheet/dxf.rb +79 -79
  67. data/lib/axlsx/stylesheet/fill.rb +35 -35
  68. data/lib/axlsx/stylesheet/font.rb +156 -156
  69. data/lib/axlsx/stylesheet/gradient_fill.rb +103 -103
  70. data/lib/axlsx/stylesheet/gradient_stop.rb +37 -37
  71. data/lib/axlsx/stylesheet/num_fmt.rb +86 -86
  72. data/lib/axlsx/stylesheet/pattern_fill.rb +73 -73
  73. data/lib/axlsx/stylesheet/styles.rb +535 -494
  74. data/lib/axlsx/stylesheet/table_style.rb +54 -54
  75. data/lib/axlsx/stylesheet/table_style_element.rb +77 -77
  76. data/lib/axlsx/stylesheet/table_styles.rb +46 -46
  77. data/lib/axlsx/stylesheet/xf.rb +147 -147
  78. data/lib/axlsx/util/accessors.rb +64 -64
  79. data/lib/axlsx/util/constants.rb +416 -410
  80. data/lib/axlsx/util/mime_type_utils.rb +11 -11
  81. data/lib/axlsx/util/options_parser.rb +16 -16
  82. data/lib/axlsx/util/serialized_attributes.rb +89 -89
  83. data/lib/axlsx/util/simple_typed_list.rb +179 -179
  84. data/lib/axlsx/util/storage.rb +146 -146
  85. data/lib/axlsx/util/validators.rb +312 -312
  86. data/lib/axlsx/util/zip_command.rb +73 -73
  87. data/lib/axlsx/version.rb +5 -5
  88. data/lib/axlsx/workbook/defined_name.rb +128 -128
  89. data/lib/axlsx/workbook/defined_names.rb +21 -21
  90. data/lib/axlsx/workbook/shared_strings_table.rb +77 -77
  91. data/lib/axlsx/workbook/workbook.rb +425 -395
  92. data/lib/axlsx/workbook/workbook_view.rb +80 -80
  93. data/lib/axlsx/workbook/workbook_views.rb +22 -22
  94. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -77
  95. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -94
  96. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +244 -244
  97. data/lib/axlsx/workbook/worksheet/border_creator.rb +76 -0
  98. data/lib/axlsx/workbook/worksheet/break.rb +35 -35
  99. data/lib/axlsx/workbook/worksheet/cell.rb +532 -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 +18 -18
  103. data/lib/axlsx/workbook/worksheet/col.rb +145 -145
  104. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
  105. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
  106. data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
  107. data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
  108. data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
  109. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
  110. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
  111. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
  112. data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
  113. data/lib/axlsx/workbook/worksheet/data_validation.rb +267 -246
  114. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
  115. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
  116. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
  117. data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
  118. data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
  119. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
  120. data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
  121. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
  122. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
  123. data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
  124. data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
  125. data/lib/axlsx/workbook/worksheet/pivot_table.rb +335 -296
  126. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
  127. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
  128. data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
  129. data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
  130. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
  131. data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
  132. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
  133. data/lib/axlsx/workbook/worksheet/row.rb +164 -164
  134. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
  135. data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
  136. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
  137. data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
  138. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
  139. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
  140. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
  141. data/lib/axlsx/workbook/worksheet/table.rb +102 -102
  142. data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
  143. data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
  144. data/lib/axlsx/workbook/worksheet/worksheet.rb +829 -786
  145. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
  146. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
  147. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
  148. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
  149. data/lib/axlsx.rb +204 -185
  150. data/lib/caxlsx.rb +2 -2
  151. data/lib/schema/dc.xsd +118 -118
  152. data/lib/schema/dcmitype.xsd +51 -51
  153. data/lib/schema/dcterms.xsd +331 -331
  154. data/lib/schema/dml-chartDrawing.xsd +146 -146
  155. data/lib/schema/dml-compatibility.xsd +14 -14
  156. data/lib/schema/dml-lockedCanvas.xsd +11 -11
  157. data/lib/schema/dml-main.xsd +3048 -3048
  158. data/lib/schema/dml-picture.xsd +23 -23
  159. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
  160. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
  161. data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
  162. data/lib/schema/shared-bibliography.xsd +144 -144
  163. data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
  164. data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
  165. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
  166. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
  167. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
  168. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
  169. data/lib/schema/shared-relationshipReference.xsd +25 -25
  170. data/lib/schema/vml-main.xsd +569 -569
  171. data/lib/schema/vml-officeDrawing.xsd +509 -509
  172. data/lib/schema/vml-presentationDrawing.xsd +12 -12
  173. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
  174. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
  175. data/lib/schema/xml.xsd +116 -116
  176. metadata +5 -252
  177. data/test/benchmark.rb +0 -72
  178. data/test/content_type/tc_content_type.rb +0 -76
  179. data/test/content_type/tc_default.rb +0 -16
  180. data/test/content_type/tc_override.rb +0 -14
  181. data/test/doc_props/tc_app.rb +0 -43
  182. data/test/doc_props/tc_core.rb +0 -42
  183. data/test/drawing/tc_area_chart.rb +0 -39
  184. data/test/drawing/tc_area_series.rb +0 -71
  185. data/test/drawing/tc_axes.rb +0 -8
  186. data/test/drawing/tc_axis.rb +0 -112
  187. data/test/drawing/tc_bar_3D_chart.rb +0 -86
  188. data/test/drawing/tc_bar_chart.rb +0 -86
  189. data/test/drawing/tc_bar_series.rb +0 -46
  190. data/test/drawing/tc_bubble_chart.rb +0 -44
  191. data/test/drawing/tc_bubble_series.rb +0 -21
  192. data/test/drawing/tc_cat_axis.rb +0 -31
  193. data/test/drawing/tc_cat_axis_data.rb +0 -27
  194. data/test/drawing/tc_chart.rb +0 -123
  195. data/test/drawing/tc_d_lbls.rb +0 -57
  196. data/test/drawing/tc_data_source.rb +0 -23
  197. data/test/drawing/tc_drawing.rb +0 -80
  198. data/test/drawing/tc_graphic_frame.rb +0 -27
  199. data/test/drawing/tc_hyperlink.rb +0 -64
  200. data/test/drawing/tc_line_3d_chart.rb +0 -47
  201. data/test/drawing/tc_line_chart.rb +0 -39
  202. data/test/drawing/tc_line_series.rb +0 -71
  203. data/test/drawing/tc_marker.rb +0 -44
  204. data/test/drawing/tc_named_axis_data.rb +0 -27
  205. data/test/drawing/tc_num_data.rb +0 -31
  206. data/test/drawing/tc_num_val.rb +0 -29
  207. data/test/drawing/tc_one_cell_anchor.rb +0 -66
  208. data/test/drawing/tc_pic.rb +0 -103
  209. data/test/drawing/tc_picture_locking.rb +0 -72
  210. data/test/drawing/tc_pie_3D_chart.rb +0 -28
  211. data/test/drawing/tc_pie_series.rb +0 -33
  212. data/test/drawing/tc_scaling.rb +0 -36
  213. data/test/drawing/tc_scatter_chart.rb +0 -48
  214. data/test/drawing/tc_scatter_series.rb +0 -74
  215. data/test/drawing/tc_ser_axis.rb +0 -31
  216. data/test/drawing/tc_series.rb +0 -23
  217. data/test/drawing/tc_series_title.rb +0 -54
  218. data/test/drawing/tc_str_data.rb +0 -18
  219. data/test/drawing/tc_str_val.rb +0 -30
  220. data/test/drawing/tc_title.rb +0 -70
  221. data/test/drawing/tc_two_cell_anchor.rb +0 -36
  222. data/test/drawing/tc_val_axis.rb +0 -24
  223. data/test/drawing/tc_view_3D.rb +0 -54
  224. data/test/drawing/tc_vml_drawing.rb +0 -25
  225. data/test/drawing/tc_vml_shape.rb +0 -106
  226. data/test/fixtures/image1.gif +0 -0
  227. data/test/fixtures/image1.jpeg +0 -0
  228. data/test/fixtures/image1.jpg +0 -0
  229. data/test/fixtures/image1.png +0 -0
  230. data/test/fixtures/image1_fake.jpg +0 -0
  231. data/test/profile.rb +0 -24
  232. data/test/rels/tc_relationship.rb +0 -52
  233. data/test/rels/tc_relationships.rb +0 -37
  234. data/test/stylesheet/tc_border.rb +0 -37
  235. data/test/stylesheet/tc_border_pr.rb +0 -32
  236. data/test/stylesheet/tc_cell_alignment.rb +0 -81
  237. data/test/stylesheet/tc_cell_protection.rb +0 -29
  238. data/test/stylesheet/tc_cell_style.rb +0 -57
  239. data/test/stylesheet/tc_color.rb +0 -43
  240. data/test/stylesheet/tc_dxf.rb +0 -81
  241. data/test/stylesheet/tc_fill.rb +0 -18
  242. data/test/stylesheet/tc_font.rb +0 -133
  243. data/test/stylesheet/tc_gradient_fill.rb +0 -72
  244. data/test/stylesheet/tc_gradient_stop.rb +0 -31
  245. data/test/stylesheet/tc_num_fmt.rb +0 -30
  246. data/test/stylesheet/tc_pattern_fill.rb +0 -43
  247. data/test/stylesheet/tc_styles.rb +0 -309
  248. data/test/stylesheet/tc_table_style.rb +0 -44
  249. data/test/stylesheet/tc_table_style_element.rb +0 -45
  250. data/test/stylesheet/tc_table_styles.rb +0 -29
  251. data/test/stylesheet/tc_xf.rb +0 -120
  252. data/test/tc_axlsx.rb +0 -109
  253. data/test/tc_helper.rb +0 -10
  254. data/test/tc_package.rb +0 -317
  255. data/test/util/tc_mime_type_utils.rb +0 -13
  256. data/test/util/tc_serialized_attributes.rb +0 -19
  257. data/test/util/tc_simple_typed_list.rb +0 -77
  258. data/test/util/tc_validators.rb +0 -210
  259. data/test/workbook/tc_defined_name.rb +0 -49
  260. data/test/workbook/tc_shared_strings_table.rb +0 -59
  261. data/test/workbook/tc_workbook.rb +0 -165
  262. data/test/workbook/tc_workbook_view.rb +0 -50
  263. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +0 -38
  264. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +0 -76
  265. data/test/workbook/worksheet/auto_filter/tc_filters.rb +0 -50
  266. data/test/workbook/worksheet/tc_break.rb +0 -49
  267. data/test/workbook/worksheet/tc_cell.rb +0 -465
  268. data/test/workbook/worksheet/tc_cfvo.rb +0 -31
  269. data/test/workbook/worksheet/tc_col.rb +0 -93
  270. data/test/workbook/worksheet/tc_color_scale.rb +0 -58
  271. data/test/workbook/worksheet/tc_comment.rb +0 -72
  272. data/test/workbook/worksheet/tc_comments.rb +0 -57
  273. data/test/workbook/worksheet/tc_conditional_formatting.rb +0 -224
  274. data/test/workbook/worksheet/tc_data_bar.rb +0 -46
  275. data/test/workbook/worksheet/tc_data_validation.rb +0 -265
  276. data/test/workbook/worksheet/tc_date_time_converter.rb +0 -124
  277. data/test/workbook/worksheet/tc_header_footer.rb +0 -151
  278. data/test/workbook/worksheet/tc_icon_set.rb +0 -45
  279. data/test/workbook/worksheet/tc_outline_pr.rb +0 -19
  280. data/test/workbook/worksheet/tc_page_margins.rb +0 -97
  281. data/test/workbook/worksheet/tc_page_set_up_pr.rb +0 -15
  282. data/test/workbook/worksheet/tc_page_setup.rb +0 -143
  283. data/test/workbook/worksheet/tc_pane.rb +0 -54
  284. data/test/workbook/worksheet/tc_pivot_table.rb +0 -180
  285. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +0 -62
  286. data/test/workbook/worksheet/tc_print_options.rb +0 -72
  287. data/test/workbook/worksheet/tc_protected_range.rb +0 -17
  288. data/test/workbook/worksheet/tc_rich_text.rb +0 -44
  289. data/test/workbook/worksheet/tc_rich_text_run.rb +0 -173
  290. data/test/workbook/worksheet/tc_row.rb +0 -160
  291. data/test/workbook/worksheet/tc_selection.rb +0 -55
  292. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +0 -18
  293. data/test/workbook/worksheet/tc_sheet_format_pr.rb +0 -88
  294. data/test/workbook/worksheet/tc_sheet_pr.rb +0 -49
  295. data/test/workbook/worksheet/tc_sheet_protection.rb +0 -117
  296. data/test/workbook/worksheet/tc_sheet_view.rb +0 -214
  297. data/test/workbook/worksheet/tc_table.rb +0 -77
  298. data/test/workbook/worksheet/tc_table_style_info.rb +0 -53
  299. data/test/workbook/worksheet/tc_worksheet.rb +0 -632
  300. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +0 -55
@@ -1,160 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestRow < Test::Unit::TestCase
4
-
5
- def setup
6
- p = Axlsx::Package.new
7
- @ws = p.workbook.add_worksheet :name=>"hmmm"
8
- @row = @ws.add_row
9
- end
10
-
11
- def test_initialize
12
- assert(@row.cells.empty?, "no cells by default")
13
- assert_equal(@row.worksheet, @ws, "has a reference to the worksheet")
14
- assert_nil(@row.height, "height defaults to nil")
15
- assert(!@row.custom_height, "no custom height by default")
16
- end
17
-
18
- def test_initialize_with_fixed_height
19
- row = @ws.add_row([1,2,3,4,5], :height=>40)
20
- assert_equal(40, row.height)
21
- assert(row.custom_height)
22
- end
23
-
24
- def test_style
25
- r = @ws.add_row([1,2,3,4,5])
26
- r.style=1
27
- r.cells.each { |c| assert_equal(c.style,1) }
28
- end
29
-
30
- def test_color
31
- r = @ws.add_row([1,2,3,4,5])
32
- r.color = "FF00FF00"
33
- r.cells.each { |c| assert_equal(c.color.rgb, "FF00FF00") }
34
- end
35
-
36
- def test_index
37
- assert_equal(@row.row_index, @row.worksheet.rows.index(@row))
38
- end
39
-
40
- def test_add_cell
41
- c = @row.add_cell(1)
42
- assert_equal(@row.cells.last, c)
43
- end
44
-
45
- def test_add_cell_autowidth_info
46
- cell = @row.add_cell("this is the cell of cells")
47
- width = cell.send(:autowidth)
48
- assert_equal(@ws.column_info.last.width, width)
49
- end
50
-
51
- def test_array_to_cells
52
- r = @ws.add_row [1,2,3], :style=>1, :types=>[:integer, :string, :float]
53
- assert_equal(r.cells.size, 3)
54
- r.cells.each do |c|
55
- assert_equal(c.style, 1)
56
- end
57
- r = @ws.add_row [1,2,3], :style=>[1]
58
- assert_equal(r.cells.first.style, 1, "only apply style to cells with at the same index of of the style array")
59
- assert_equal(r.cells.last.style, 0, "only apply style to cells with at the same index of of the style array")
60
-
61
- end
62
-
63
- def test_array_to_cells_with_escape_formulas
64
- row = ['=HYPERLINK("http://www.example.com", "CSV Payload")', '=Bar']
65
- @ws.add_row row, escape_formulas: true
66
-
67
- assert_equal @ws.rows.last.cells[0].escape_formulas, true
68
- assert_equal @ws.rows.last.cells[1].escape_formulas, true
69
- end
70
-
71
- def test_array_to_cells_with_escape_formulas_as_an_array
72
- row = ['=HYPERLINK("http://www.example.com", "CSV Payload")', '+Foo', '-Bar']
73
- @ws.add_row row, escape_formulas: [true, false, true]
74
-
75
- assert_equal @ws.rows.last.cells.first.escape_formulas, true
76
- assert_equal @ws.rows.last.cells[1].escape_formulas, false
77
- assert_equal @ws.rows.last.cells[2].escape_formulas, true
78
- end
79
-
80
- def test_custom_height
81
- @row.height = 20
82
- assert(@row.custom_height)
83
- end
84
-
85
- def test_height
86
- assert_raise(ArgumentError) { @row.height = -3 }
87
- assert_nothing_raised { @row.height = 15 }
88
- assert_equal(15, @row.height)
89
- end
90
-
91
-
92
- def test_ph
93
- assert_raise(ArgumentError) { @row.ph = -3 }
94
- assert_nothing_raised { @row.ph = true }
95
- assert_equal(true, @row.ph)
96
- end
97
-
98
- def test_hidden
99
- assert_raise(ArgumentError) { @row.hidden = -3 }
100
- assert_nothing_raised { @row.hidden = true }
101
- assert_equal(true, @row.hidden)
102
- end
103
-
104
- def test_collapsed
105
- assert_raise(ArgumentError) { @row.collapsed = -3 }
106
- assert_nothing_raised { @row.collapsed = true }
107
- assert_equal(true, @row.collapsed)
108
- end
109
-
110
- def test_outlineLevel
111
- assert_raise(ArgumentError) { @row.outlineLevel = -3 }
112
- assert_nothing_raised { @row.outlineLevel = 2 }
113
- assert_equal(2, @row.outlineLevel)
114
- end
115
-
116
- def test_to_xml_without_custom_height
117
- doc = Nokogiri::XML.parse(@row.to_xml_string(0))
118
- assert_equal(0, doc.xpath(".//row[@ht]").size)
119
- assert_equal(0, doc.xpath(".//row[@customHeight]").size)
120
- end
121
-
122
- def test_to_xml_string
123
- @row.height = 20
124
- @row.s = 1
125
- @row.outlineLevel = 2
126
- @row.collapsed = true
127
- @row.hidden = true
128
- r_s_xml = Nokogiri::XML(@row.to_xml_string(0, ''))
129
- assert_equal(r_s_xml.xpath(".//row[@r=1]").size, 1)
130
- end
131
-
132
- def test_to_xml_string_with_custom_height
133
- @row.add_cell 1
134
- @row.height = 20
135
- r_s_xml = Nokogiri::XML(@row.to_xml_string(0, ''))
136
- assert_equal(r_s_xml.xpath(".//row[@r=1][@ht=20][@customHeight=1]").size, 1)
137
- end
138
-
139
- def test_offsets
140
- offset = 3
141
- values = [1,2,3,4,5]
142
- r = @ws.add_row(values, offset: offset, style: 1)
143
- r.cells.each_with_index do |c, index|
144
- assert_equal(c.style, index < offset ? 0 : 1)
145
- assert_equal(c.value, index < offset ? nil : values[index - offset])
146
- end
147
- end
148
-
149
- def test_offsets_with_styles
150
- offset = 3
151
- values = [1,2,3,4,5]
152
- styles = (1..5).map{ @ws.workbook.styles.add_style }
153
- r = @ws.add_row(values, offset: offset, style: styles)
154
- r.cells.each_with_index do |c, index|
155
- assert_equal(c.style, index < offset ? 0 : styles[index-offset])
156
- assert_equal(c.value, index < offset ? nil : values[index - offset])
157
- end
158
- end
159
-
160
- end
@@ -1,55 +0,0 @@
1
- # encoding: UTF-8
2
- require 'tc_helper.rb'
3
-
4
- class TestSelection < Test::Unit::TestCase
5
- def setup
6
- @options = { :active_cell => 'A2', :active_cell_id => 1, :pane => :top_left, :sqref => 'A2' }
7
- @selection = Axlsx::Selection.new(@options)
8
- end
9
-
10
- def test_active_cell
11
- assert_raise(ArgumentError) { @selection.active_cell = :active_cell }
12
- assert_nothing_raised { @selection.active_cell = "F5" }
13
- assert_equal(@selection.active_cell, "F5")
14
- end
15
-
16
- def test_active_cell_id
17
- assert_raise(ArgumentError) { @selection.active_cell_id = "foo" }
18
- assert_nothing_raised { @selection.active_cell_id = 11 }
19
- assert_equal(@selection.active_cell_id, 11)
20
- end
21
-
22
- def test_pane
23
- assert_raise(ArgumentError) { @selection.pane = "foo´" }
24
- assert_nothing_raised { @selection.pane = :bottom_right }
25
- assert_equal(@selection.pane, "bottomRight")
26
- end
27
-
28
- def test_sqref
29
- assert_raise(ArgumentError) { @selection.sqref = :sqref }
30
- assert_nothing_raised { @selection.sqref = "G32" }
31
- assert_equal(@selection.sqref, "G32")
32
- end
33
-
34
- def test_to_xml
35
- p = Axlsx::Package.new
36
- @ws = p.workbook.add_worksheet :name => "sheetview"
37
- @ws.sheet_view do |vs|
38
- vs.add_selection(:top_left, { :active_cell => 'B2', :sqref => 'B2' })
39
- vs.add_selection(:top_right, { :active_cell => 'I10', :sqref => 'I10' })
40
- vs.add_selection(:bottom_left, { :active_cell => 'E55', :sqref => 'E55' })
41
- vs.add_selection(:bottom_right, { :active_cell => 'I57', :sqref => 'I57' })
42
- end
43
-
44
- doc = Nokogiri::XML.parse(@ws.to_xml_string)
45
-
46
- assert_equal(1, doc.xpath("//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView/xmlns:selection[@sqref='B2'][@pane='topLeft'][@activeCell='B2']").size)
47
- assert doc.xpath("//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView/xmlns:selection[@sqref='B2'][@pane='topLeft'][@activeCell='B2']")
48
- assert_equal(1, doc.xpath("//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView/xmlns:selection[@sqref='I10'][@pane='topRight'][@activeCell='I10']").size)
49
- assert doc.xpath("//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView/xmlns:selection[@sqref='I10'][@pane='topRight'][@activeCell='I10']")
50
- assert_equal(1, doc.xpath("//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView/xmlns:selection[@sqref='E55'][@pane='bottomLeft'][@activeCell='E55']").size)
51
- assert doc.xpath("//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView/xmlns:selection[@sqref='E55'][@pane='bottomLeft'][@activeCell='E55']")
52
- assert_equal(1, doc.xpath("//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView/xmlns:selection[@sqref='I57'][@pane='bottomRight'][@activeCell='I57']").size)
53
- assert doc.xpath("//xmlns:worksheet/xmlns:sheetViews/xmlns:sheetView/xmlns:selection[@sqref='I57'][@pane='bottomRight'][@activeCell='I57']")
54
- end
55
- end
@@ -1,18 +0,0 @@
1
- require 'tc_helper'
2
-
3
- class TestSheetCalcPr < Test::Unit::TestCase
4
-
5
- def setup
6
- @sheet_calc_pr = Axlsx::SheetCalcPr.new(:full_calc_on_load => false)
7
- end
8
-
9
- def test_full_calc_on_load
10
- assert_equal false, @sheet_calc_pr.full_calc_on_load
11
- assert Axlsx::SheetCalcPr.new.full_calc_on_load
12
- end
13
-
14
- def test_to_xml_string
15
- doc = Nokogiri::XML(@sheet_calc_pr.to_xml_string)
16
- assert_equal 1, doc.xpath('//sheetCalcPr[@fullCalcOnLoad=0]').size
17
- end
18
- end
@@ -1,88 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestSheetFormatPr < Test::Unit::TestCase
4
-
5
- def setup
6
- @options = {
7
- :base_col_width => 5,
8
- :default_col_width => 7.2,
9
- :default_row_height => 5.2,
10
- :custom_height => true,
11
- :zero_height => false,
12
- :thick_top => true,
13
- :thick_bottom => true,
14
- :outline_level_row => 0,
15
- :outline_level_col => 0
16
- }
17
- @sheet_format_pr = Axlsx::SheetFormatPr.new(@options)
18
- end
19
-
20
- def test_default_initialization
21
- sheet_format_pr = Axlsx::SheetFormatPr.new
22
- assert_equal 8, sheet_format_pr.base_col_width
23
- assert_equal 18, sheet_format_pr.default_row_height
24
- end
25
-
26
- def test_initialization_with_options
27
- @options.each do |key, value|
28
- assert_equal value, @sheet_format_pr.instance_variable_get("@#{key}")
29
- end
30
- end
31
-
32
- def test_base_col_width
33
- assert_raise(ArgumentError) { @sheet_format_pr.base_col_width = :foo }
34
- assert_nothing_raised { @sheet_format_pr.base_col_width = 1 }
35
- end
36
-
37
- def test_outline_level_row
38
- assert_raise(ArgumentError) { @sheet_format_pr.outline_level_row = :foo }
39
- assert_nothing_raised { @sheet_format_pr.outline_level_row = 1 }
40
- end
41
-
42
- def test_outline_level_col
43
- assert_raise(ArgumentError) { @sheet_format_pr.outline_level_col = :foo }
44
- assert_nothing_raised { @sheet_format_pr.outline_level_col = 1 }
45
- end
46
-
47
- def test_default_row_height
48
- assert_raise(ArgumentError) { @sheet_format_pr.default_row_height = :foo }
49
- assert_nothing_raised { @sheet_format_pr.default_row_height= 1.0 }
50
- end
51
-
52
- def test_default_col_width
53
- assert_raise(ArgumentError) { @sheet_format_pr.default_col_width= :foo }
54
- assert_nothing_raised { @sheet_format_pr.default_col_width = 1.0 }
55
- end
56
-
57
- def test_custom_height
58
- assert_raise(ArgumentError) { @sheet_format_pr.custom_height= :foo }
59
- assert_nothing_raised { @sheet_format_pr.custom_height = true }
60
- end
61
-
62
- def test_zero_height
63
- assert_raise(ArgumentError) { @sheet_format_pr.zero_height= :foo }
64
- assert_nothing_raised { @sheet_format_pr.zero_height = true }
65
- end
66
- def test_thick_top
67
- assert_raise(ArgumentError) { @sheet_format_pr.thick_top= :foo }
68
- assert_nothing_raised { @sheet_format_pr.thick_top = true }
69
- end
70
- def test_thick_bottom
71
- assert_raise(ArgumentError) { @sheet_format_pr.thick_bottom= :foo }
72
- assert_nothing_raised { @sheet_format_pr.thick_bottom = true }
73
- end
74
-
75
- def test_to_xml_string
76
- doc = Nokogiri::XML(@sheet_format_pr.to_xml_string)
77
- assert doc.xpath("sheetFormatPr[@thickBottom=1]")
78
- assert doc.xpath("sheetFormatPr[@baseColWidth=5]")
79
- assert doc.xpath("sheetFormatPr[@default_col_width=7.2]")
80
- assert doc.xpath("sheetFormatPr[@default_row_height=5.2]")
81
- assert doc.xpath("sheetFormatPr[@custom_height=1]")
82
- assert doc.xpath("sheetFormatPr[@zero_height=0]")
83
- assert doc.xpath("sheetFormatPr[@thick_top=1]")
84
- assert doc.xpath("sheetFormatPr[@outline_level_row=0]")
85
- assert doc.xpath("sheetFormatPr[@outline_level_col=0]")
86
- end
87
-
88
- end
@@ -1,49 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
-
4
- class TestSheetPr < Test::Unit::TestCase
5
-
6
- def setup
7
- worksheet = Axlsx::Package.new.workbook.add_worksheet
8
- @options = {
9
- :sync_horizontal => false,
10
- :sync_vertical => false,
11
- :transition_evaluation => true,
12
- :transition_entry => true,
13
- :published => false,
14
- :filter_mode => true,
15
- :enable_format_conditions_calculation => false,
16
- :code_name => '007',
17
- :sync_ref => 'foo',
18
- :tab_color => 'FFFF6666'
19
- }
20
- @sheet_pr = Axlsx::SheetPr.new(worksheet, @options)
21
- end
22
-
23
- def test_initialization
24
- @options.each do |key, value|
25
- if key==:tab_color
26
- stored_value = @sheet_pr.send(key)
27
- assert_equal Axlsx::Color, stored_value.class
28
- assert_equal value, stored_value.rgb
29
- else
30
- assert_equal value, @sheet_pr.send(key)
31
- end
32
- end
33
- end
34
-
35
- def test_to_xml_string
36
- doc = Nokogiri::XML(@sheet_pr.to_xml_string)
37
- assert_equal(doc.xpath("//sheetPr[@syncHorizontal='0']").size, 1)
38
- assert_equal(doc.xpath("//sheetPr[@syncVertical='0']").size, 1)
39
- assert_equal(doc.xpath("//sheetPr[@transitionEvaluation='1']").size, 1)
40
- assert_equal(doc.xpath("//sheetPr[@transitionEntry='1']").size, 1)
41
- assert_equal(doc.xpath("//sheetPr[@published='0']").size, 1)
42
- assert_equal(doc.xpath("//sheetPr[@filterMode='1']").size, 1)
43
- assert_equal(doc.xpath("//sheetPr[@enableFormatConditionsCalculation='0']").size, 1)
44
- assert_equal(doc.xpath("//sheetPr[@codeName='007']").size, 1)
45
- assert_equal(doc.xpath("//sheetPr[@syncRef='foo']").size, 1)
46
- assert_equal(doc.xpath("//sheetPr/tabColor[@rgb='FFFF6666']").size, 1)
47
- assert_equal(doc.xpath("//sheetPr/pageSetUpPr[@fitToPage='0']").size, 1)
48
- end
49
- end
@@ -1,117 +0,0 @@
1
- # encoding: UTF-8
2
- require 'tc_helper.rb'
3
-
4
- # <xsd:complexType name="CT_SheetProtection">
5
- # <xsd:attribute name="sheet" type="xsd:boolean" use="optional" default=0/>
6
- # <xsd:attribute name="objects" type="xsd:boolean" use="optional" default=0/>
7
- # <xsd:attribute name="scenarios" type="xsd:boolean" use="optional" default=0/>
8
- # <xsd:attribute name="formatCells" type="xsd:boolean" use="optional" default="true"/>
9
- # <xsd:attribute name="formatColumns" type="xsd:boolean" use="optional" default="true"/>
10
- # <xsd:attribute name="formatRows" type="xsd:boolean" use="optional" default="true"/>
11
- # <xsd:attribute name="insertColumns" type="xsd:boolean" use="optional" default="true"/>
12
- # <xsd:attribute name="insertRows" type="xsd:boolean" use="optional" default="true"/>
13
- # <xsd:attribute name="insertHyperlinks" type="xsd:boolean" use="optional" default="true"/>
14
- # <xsd:attribute name="deleteColumns" type="xsd:boolean" use="optional" default="true"/>
15
- # <xsd:attribute name="deleteRows" type="xsd:boolean" use="optional" default="true"/>
16
- # <xsd:attribute name="selectLockedCells" type="xsd:boolean" use="optional" default=0/>
17
- # <xsd:attribute name="sort" type="xsd:boolean" use="optional" default="true"/>
18
- # <xsd:attribute name="autoFilter" type="xsd:boolean" use="optional" default="true"/>
19
- # <xsd:attribute name="pivotTables" type="xsd:boolean" use="optional" default="true"/>
20
- # <xsd:attribute name="selectUnlockedCells" type="xsd:boolean" use="optional" default=0/>
21
- # <xsd:attribute name="password" type="xsd:string" use="optional" default="nil"/>
22
- # </xsd:complexType>
23
-
24
- class TestSheetProtection < Test::Unit::TestCase
25
- def setup
26
- #inverse defaults
27
- @boolean_options = { :sheet => false, :objects => true, :scenarios => true, :format_cells => false,
28
- :format_columns => false, :format_rows => false, :insert_columns => false, :insert_rows => false,
29
- :insert_hyperlinks => false, :delete_columns => false, :delete_rows => false, :select_locked_cells => true,
30
- :sort => false, :auto_filter => false, :pivot_tables => false, :select_unlocked_cells => true }
31
-
32
- @string_options = { :password => nil }
33
-
34
- @options = @boolean_options.merge(@string_options)
35
-
36
- @sp = Axlsx::SheetProtection.new(@options)
37
- end
38
-
39
- def test_initialize
40
- sp = Axlsx::SheetProtection.new
41
- @boolean_options.each do |key, value|
42
- assert_equal(!value, sp.send(key.to_sym), "initialized default #{key} should be #{!value}")
43
- assert_equal(value, @sp.send(key.to_sym), "initialized options #{key} should be #{value}")
44
- end
45
- end
46
-
47
- def test_boolean_attribute_validation
48
- @boolean_options.each do |key, value|
49
- assert_raise(ArgumentError, "#{key} must be boolean") { @sp.send("#{key}=".to_sym, 'A') }
50
- assert_nothing_raised { @sp.send("#{key}=".to_sym, true) }
51
- assert_nothing_raised { @sp.send("#{key}=".to_sym, true) }
52
- end
53
- end
54
-
55
- def test_to_xml_string
56
- @sp.password = 'fish' # -> CA3F
57
- doc = Nokogiri::XML(@sp.to_xml_string)
58
- @options.each do |key, value|
59
- assert(doc.xpath("//sheetProtection[@#{key.to_s.gsub(/_(.)/){ $1.upcase }}='#{value}']"))
60
- end
61
- end
62
-
63
- end
64
-
65
-
66
-
67
-
68
-
69
-
70
-
71
-
72
-
73
-
74
-
75
-
76
-
77
-
78
-
79
-
80
-
81
-
82
-
83
-
84
-
85
-
86
-
87
-
88
-
89
-
90
-
91
-
92
-
93
-
94
-
95
-
96
-
97
-
98
-
99
-
100
-
101
-
102
-
103
-
104
-
105
-
106
-
107
-
108
-
109
-
110
-
111
-
112
-
113
-
114
-
115
-
116
-
117
-