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,180 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
-
4
- def shared_test_pivot_table_xml_validity(pivot_table)
5
- schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
6
- doc = Nokogiri::XML(pivot_table.to_xml_string)
7
- errors = []
8
- schema.validate(doc).each do |error|
9
- errors.push error
10
- puts error.message
11
- end
12
- assert(errors.empty?, "error free validation")
13
- end
14
-
15
- class TestPivotTable < Test::Unit::TestCase
16
- def setup
17
- p = Axlsx::Package.new
18
- @ws = p.workbook.add_worksheet
19
-
20
- @ws << ["Year","Month","Region", "Type", "Sales"]
21
- @ws << [2012, "Nov", "East", "Soda", "12345"]
22
- end
23
-
24
- def test_initialization
25
- assert(@ws.workbook.pivot_tables.empty?)
26
- assert(@ws.pivot_tables.empty?)
27
- end
28
-
29
- def test_add_pivot_table
30
- pivot_table = @ws.add_pivot_table('G5:G6', 'A1:D5')
31
- assert_equal('G5:G6', pivot_table.ref, 'ref assigned from first parameter')
32
- assert_equal('A1:D5', pivot_table.range, 'range assigned from second parameter')
33
- assert_equal('PivotTable1', pivot_table.name, 'name automatically generated')
34
- assert(pivot_table.is_a?(Axlsx::PivotTable), "must create a pivot table")
35
- assert_equal(@ws.workbook.pivot_tables.last, pivot_table, "must be added to workbook pivot tables collection")
36
- assert_equal(@ws.pivot_tables.last, pivot_table, "must be added to worksheet pivot tables collection")
37
- end
38
-
39
- def test_set_pivot_table_data_sheet
40
- pivot_table = @ws.add_pivot_table('G5:G6', 'A1:D5')
41
- data_sheet = @ws.clone
42
- data_sheet.name = "Pivot Table Data Source"
43
-
44
- assert_equal(pivot_table.data_sheet.name, @ws.name, "must default to the same sheet the pivot table is added to")
45
- pivot_table.data_sheet = data_sheet
46
- assert_equal(pivot_table.data_sheet.name, data_sheet.name, "data sheet assigned to pivot table")
47
- end
48
-
49
- def test_add_pivot_table_with_config
50
- pivot_table = @ws.add_pivot_table('G5:G6', 'A1:E5') do |pt|
51
- pt.rows = ['Year', 'Month']
52
- pt.columns = ['Type']
53
- pt.data = ['Sales']
54
- pt.pages = ['Region']
55
- end
56
- assert_equal(['Year', 'Month'], pivot_table.rows)
57
- assert_equal(['Type'], pivot_table.columns)
58
- assert_equal([{:ref=>"Sales"}], pivot_table.data)
59
- assert_equal(['Region'], pivot_table.pages)
60
- shared_test_pivot_table_xml_validity(pivot_table)
61
- end
62
-
63
- def test_add_pivot_table_with_options_on_data_field
64
- pivot_table = @ws.add_pivot_table('G5:G6', 'A1:D5') do |pt|
65
- pt.data = [{:ref=>"Sales", :subtotal => 'average'}]
66
- end
67
- assert_equal([{:ref=>"Sales", :subtotal => 'average'}], pivot_table.data)
68
- end
69
-
70
- def test_add_pivot_table_with_style_info
71
- style_info_data = { :name=>"PivotStyleMedium9", :showRowHeaders=>"1", :showLastColumn=>"0"}
72
- pivot_table = @ws.add_pivot_table('G5:G6', 'A1:E5', {:style_info=>style_info_data}) do |pt|
73
- pt.rows = ['Year', 'Month']
74
- pt.columns = ['Type']
75
- pt.data = ['Sales']
76
- pt.pages = ['Region']
77
- end
78
- assert_equal(style_info_data, pivot_table.style_info)
79
- shared_test_pivot_table_xml_validity(pivot_table)
80
- end
81
-
82
- def test_add_pivot_table_with_row_without_subtotals
83
- pivot_table = @ws.add_pivot_table('G5:G6', 'A1:D5', {:no_subtotals_on_headers=>['Year']}) do |pt|
84
- pt.data = ['Sales']
85
- pt.rows = ['Year','Month']
86
- end
87
- assert_equal(['Year'], pivot_table.no_subtotals_on_headers)
88
- end
89
-
90
- def test_header_indices
91
- pivot_table = @ws.add_pivot_table('G5:G6', 'A1:E5')
92
- assert_equal(0, pivot_table.header_index_of('Year' ))
93
- assert_equal(1, pivot_table.header_index_of('Month' ))
94
- assert_equal(2, pivot_table.header_index_of('Region' ))
95
- assert_equal(3, pivot_table.header_index_of('Type' ))
96
- assert_equal(4, pivot_table.header_index_of('Sales' ))
97
- assert_equal(nil, pivot_table.header_index_of('Missing'))
98
- assert_equal(%w(A1 B1 C1 D1 E1), pivot_table.header_cell_refs)
99
- end
100
-
101
- def test_pn
102
- @ws.add_pivot_table('G5:G6', 'A1:D5')
103
- assert_equal(@ws.pivot_tables.first.pn, "pivotTables/pivotTable1.xml")
104
- end
105
-
106
- def test_index
107
- @ws.add_pivot_table('G5:G6', 'A1:D5')
108
- assert_equal(@ws.pivot_tables.first.index, @ws.workbook.pivot_tables.index(@ws.pivot_tables.first))
109
- end
110
-
111
- def test_relationships
112
- assert(@ws.relationships.empty?)
113
- @ws.add_pivot_table('G5:G6', 'A1:D5')
114
- assert_equal(@ws.relationships.size, 1, "adding a pivot table adds a relationship")
115
- @ws.add_pivot_table('G10:G11', 'A1:D5')
116
- assert_equal(@ws.relationships.size, 2, "adding a pivot table adds a relationship")
117
- end
118
-
119
- def test_to_xml_string
120
- pivot_table = @ws.add_pivot_table('G5:G6', 'A1:E5', {:no_subtotals_on_headers=>['Year']}) do |pt|
121
- pt.rows = ['Year', 'Month']
122
- pt.columns = ['Type']
123
- pt.data = ['Sales']
124
- pt.pages = ['Region']
125
- end
126
- shared_test_pivot_table_xml_validity(pivot_table)
127
- end
128
-
129
- def test_to_xml_string_with_options_on_data_field
130
- pivot_table = @ws.add_pivot_table('G5:G6', 'A1:E5') do |pt|
131
- pt.data = [{:ref=>"Sales", :subtotal => 'average'}]
132
- end
133
- shared_test_pivot_table_xml_validity(pivot_table)
134
- end
135
-
136
- def test_add_pivot_table_with_format_options_on_data_field
137
- pivot_table = @ws.add_pivot_table('G5:G6', 'A1:E5') do |pt|
138
- pt.data = [{:ref=>"Sales", :subtotal => 'sum', num_fmt: 4}]
139
- end
140
- doc = Nokogiri::XML(pivot_table.to_xml_string)
141
- assert_equal('4', doc.at_css('dataFields dataField')['numFmtId'], 'adding format options to pivot_table')
142
- end
143
-
144
- def test_pivot_table_with_more_than_one_data_row
145
- ### https://github.com/caxlsx/caxlsx/issues/110
146
-
147
- pivot_table = @ws.add_pivot_table('G5:G6', 'A1:E5') do |pt|
148
- pt.rows = ["Date", "Name"]
149
- pt.data = [
150
- {ref: "Gross amount", num_fmt: 2},
151
- {ref: "Net amount", num_fmt: 2},
152
- ]
153
- end
154
-
155
- xml = pivot_table.to_xml_string
156
-
157
- assert(xml.include?('colFields'))
158
-
159
- assert(!xml.include?('dataOnRows'))
160
- assert(!xml.include?('colItems'))
161
- end
162
-
163
- def test_pivot_table_with_only_one_data_row
164
- ### https://github.com/caxlsx/caxlsx/issues/110
165
-
166
- pivot_table = @ws.add_pivot_table('G5:G6', 'A1:E5') do |pt|
167
- pt.rows = ["Date", "Name"]
168
- pt.data = [
169
- {ref: "Gross amount", num_fmt: 2},
170
- ]
171
- end
172
-
173
- xml = pivot_table.to_xml_string
174
-
175
- assert(xml.include?('dataOnRows'))
176
- assert(xml.include?('colItems'))
177
-
178
- assert(!xml.include?('colFields'))
179
- end
180
- end
@@ -1,62 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestPivotTableCacheDefinition < Test::Unit::TestCase
4
- def setup
5
- p = Axlsx::Package.new
6
- @ws = p.workbook.add_worksheet
7
- 5.times do
8
- @ws << ["aa","aa","aa","aa"]
9
- end
10
- @pivot_table = @ws.add_pivot_table('G5:G6', 'A1:D5')
11
- @cache_definition = @pivot_table.cache_definition
12
- end
13
-
14
- def test_initialization
15
- assert(@cache_definition.is_a?(Axlsx::PivotTableCacheDefinition), "must create a pivot table cache definition")
16
- assert_equal(@pivot_table, @cache_definition.pivot_table, 'refers back to its pivot table')
17
- end
18
-
19
- def test_pn
20
- assert_equal('pivotCache/pivotCacheDefinition1.xml', @cache_definition.pn)
21
- end
22
-
23
- def test_rId
24
- assert_equal @pivot_table.relationships.for(@cache_definition).Id, @cache_definition.rId
25
- end
26
-
27
- def test_index
28
- assert_equal(0, @cache_definition.index)
29
- end
30
-
31
- def test_cache_id
32
- assert_equal(1, @cache_definition.cache_id)
33
- end
34
-
35
- def test_data_sheet
36
- data_sheet = @ws.clone
37
- data_sheet.name = "Pivot Table Data Source"
38
- @pivot_table.data_sheet = data_sheet
39
-
40
- assert(@cache_definition.to_xml_string.include?(data_sheet.name), "must set the data source correctly")
41
- end
42
-
43
- def test_to_xml_string
44
- schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
45
- doc = Nokogiri::XML(@cache_definition.to_xml_string)
46
- errors = []
47
- schema.validate(doc).each do |error|
48
- errors.push error
49
- puts error.message
50
- end
51
- assert(errors.empty?, "error free validation")
52
- end
53
-
54
- def test_to_xml_string_for_special_characters
55
- cell = @ws.rows.first.cells.first
56
- cell.value = "&><'\""
57
-
58
- doc = Nokogiri::XML(@cache_definition.to_xml_string)
59
- errors = doc.errors
60
- assert(errors.empty?, "invalid xml: #{errors.map(&:to_s).join(', ')}")
61
- end
62
- end
@@ -1,72 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestPrintOptions < Test::Unit::TestCase
4
-
5
- def setup
6
- p = Axlsx::Package.new
7
- ws = p.workbook.add_worksheet :name => "hmmm"
8
- @po = ws.print_options
9
- end
10
-
11
- def test_initialize
12
- assert_equal(false, @po.grid_lines)
13
- assert_equal(false, @po.headings)
14
- assert_equal(false, @po.horizontal_centered)
15
- assert_equal(false, @po.vertical_centered)
16
- end
17
-
18
- def test_initialize_with_options
19
- optioned = Axlsx::PrintOptions.new(:grid_lines => true, :headings => true, :horizontal_centered => true, :vertical_centered => true)
20
- assert_equal(true, optioned.grid_lines)
21
- assert_equal(true, optioned.headings)
22
- assert_equal(true, optioned.horizontal_centered)
23
- assert_equal(true, optioned.vertical_centered)
24
- end
25
-
26
- def test_set_all_values
27
- @po.set(:grid_lines => true, :headings => true, :horizontal_centered => true, :vertical_centered => true)
28
- assert_equal(true, @po.grid_lines)
29
- assert_equal(true, @po.headings)
30
- assert_equal(true, @po.horizontal_centered)
31
- assert_equal(true, @po.vertical_centered)
32
- end
33
-
34
- def test_set_some_values
35
- @po.set(:grid_lines => true, :headings => true)
36
- assert_equal(true, @po.grid_lines)
37
- assert_equal(true, @po.headings)
38
- assert_equal(false, @po.horizontal_centered)
39
- assert_equal(false, @po.vertical_centered)
40
- end
41
-
42
- def test_to_xml
43
- @po.set(:grid_lines => true, :headings => true, :horizontal_centered => true, :vertical_centered => true)
44
- doc = Nokogiri::XML.parse(@po.to_xml_string)
45
- assert_equal(1, doc.xpath(".//printOptions[@gridLines=1][@headings=1][@horizontalCentered=1][@verticalCentered=1]").size)
46
- end
47
-
48
- def test_grid_lines
49
- assert_raise(ArgumentError) { @po.grid_lines = 99 }
50
- assert_nothing_raised { @po.grid_lines = true }
51
- assert_equal(@po.grid_lines, true)
52
- end
53
-
54
- def test_headings
55
- assert_raise(ArgumentError) { @po.headings = 99 }
56
- assert_nothing_raised { @po.headings = true }
57
- assert_equal(@po.headings, true)
58
- end
59
-
60
- def test_horizontal_centered
61
- assert_raise(ArgumentError) { @po.horizontal_centered = 99 }
62
- assert_nothing_raised { @po.horizontal_centered = true }
63
- assert_equal(@po.horizontal_centered, true)
64
- end
65
-
66
- def test_vertical_centered
67
- assert_raise(ArgumentError) { @po.vertical_centered = 99 }
68
- assert_nothing_raised { @po.vertical_centered = true }
69
- assert_equal(@po.vertical_centered, true)
70
- end
71
-
72
- end
@@ -1,17 +0,0 @@
1
- # encoding: UTF-8
2
- require 'tc_helper.rb'
3
- class TestProtectedRange < Test::Unit::TestCase
4
- def setup
5
- @p = Axlsx::Package.new
6
- @ws = @p.workbook.add_worksheet { |sheet| sheet.add_row [1,2,3,4,5,6,7,8,9] }
7
- end
8
-
9
- def test_initialize_options
10
- assert_nothing_raised {Axlsx::ProtectedRange.new(:sqref => 'A1:B1', :name => "only bob")}
11
- end
12
-
13
- def test_range
14
- r = @ws.protect_range('A1:B1')
15
- assert_equal('A1:B1', r.sqref)
16
- end
17
- end
@@ -1,44 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class RichText < Test::Unit::TestCase
4
- def setup
5
- p = Axlsx::Package.new
6
- @ws = p.workbook.add_worksheet :name => "hmmmz"
7
- p.workbook.styles.add_style :sz => 20
8
- @rt = Axlsx::RichText.new
9
- b = true
10
- (0..26).each do |r|
11
- @rt.add_run "run #{r}, ", :b => (b=!b), :i => !b
12
- end
13
- @row = @ws.add_row [@rt]
14
- @c = @row.first
15
- end
16
-
17
- def test_initialize
18
- assert_equal(@c.value, @rt)
19
- rt_direct = Axlsx::RichText.new('hi', :i => true)
20
- rt_indirect = Axlsx::RichText.new()
21
- rt_indirect.add_run('hi', :i => true)
22
- assert_equal(rt_direct.runs.length, 1)
23
- assert_equal(rt_indirect.runs.length, 1)
24
- row = @ws.add_row [rt_direct, rt_indirect]
25
- assert_equal(row[0].to_xml_string(0,0), row[1].to_xml_string(0,0))
26
- end
27
-
28
- def test_textruns
29
- runs = @rt.runs
30
- assert_equal(runs.length, 27)
31
- assert_equal(runs.first.b, false)
32
- assert_equal(runs.first.i, true)
33
- assert_equal(runs[1].b, true)
34
- assert_equal(runs[1].i, false)
35
- end
36
-
37
- def test_implicit_richtext
38
- rt = Axlsx::RichText.new('a', :b => true)
39
- row_rt = @ws.add_row [rt]
40
- row_imp = @ws.add_row ['a']
41
- row_imp[0].b = true
42
- assert_equal(row_rt[0].to_xml_string(0,0), row_imp[0].to_xml_string(0,0))
43
- end
44
- end
@@ -1,173 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class RichTextRun < Test::Unit::TestCase
4
- def setup
5
- @p = Axlsx::Package.new
6
- @ws = @p.workbook.add_worksheet :name => "hmmmz"
7
- @p.workbook.styles.add_style :sz => 20
8
- @rtr = Axlsx::RichTextRun.new('hihihi', b: true, i: false)
9
- @rtr2 = Axlsx::RichTextRun.new('hihi2hi2', b: false, i: true)
10
- @rt = Axlsx::RichText.new
11
- @rt.runs << @rtr
12
- @rt.runs << @rtr2
13
- @row = @ws.add_row [@rt]
14
- @c = @row.first
15
- end
16
-
17
- def test_initialize
18
- assert_equal(@rtr.value, 'hihihi')
19
- assert_equal(@rtr.b, true)
20
- assert_equal(@rtr.i, false)
21
- end
22
-
23
- def test_font_size_with_custom_style_and_no_sz
24
- @c.style = @c.row.worksheet.workbook.styles.add_style :bg_color => 'FF00FF'
25
- sz = @rtr.send(:font_size)
26
- assert_equal(sz, @c.row.worksheet.workbook.styles.fonts.first.sz * 1.5)
27
- sz = @rtr2.send(:font_size)
28
- assert_equal(sz, @c.row.worksheet.workbook.styles.fonts.first.sz)
29
- end
30
-
31
- def test_font_size_with_bolding
32
- @c.style = @c.row.worksheet.workbook.styles.add_style :b => true
33
- assert_equal(@c.row.worksheet.workbook.styles.fonts.first.sz * 1.5, @rtr.send(:font_size))
34
- assert_equal(@c.row.worksheet.workbook.styles.fonts.first.sz * 1.5, @rtr2.send(:font_size)) # is this the correct behaviour?
35
- end
36
-
37
- def test_font_size_with_custom_sz
38
- @c.style = @c.row.worksheet.workbook.styles.add_style :sz => 52
39
- sz = @rtr.send(:font_size)
40
- assert_equal(sz, 52 * 1.5)
41
- sz2 = @rtr2.send(:font_size)
42
- assert_equal(sz2, 52)
43
- end
44
-
45
- def test_rtr_with_sz
46
- @rtr.sz = 25
47
- assert_equal(25, @rtr.send(:font_size))
48
- end
49
-
50
- def test_color
51
- assert_raise(ArgumentError) { @rtr.color = -1.1 }
52
- assert_nothing_raised { @rtr.color = "FF00FF00" }
53
- assert_equal(@rtr.color.rgb, "FF00FF00")
54
- end
55
-
56
- def test_scheme
57
- assert_raise(ArgumentError) { @rtr.scheme = -1.1 }
58
- assert_nothing_raised { @rtr.scheme = :major }
59
- assert_equal(@rtr.scheme, :major)
60
- end
61
-
62
- def test_vertAlign
63
- assert_raise(ArgumentError) { @rtr.vertAlign = -1.1 }
64
- assert_nothing_raised { @rtr.vertAlign = :baseline }
65
- assert_equal(@rtr.vertAlign, :baseline)
66
- end
67
-
68
- def test_sz
69
- assert_raise(ArgumentError) { @rtr.sz = -1.1 }
70
- assert_nothing_raised { @rtr.sz = 12 }
71
- assert_equal(@rtr.sz, 12)
72
- end
73
-
74
- def test_extend
75
- assert_raise(ArgumentError) { @rtr.extend = -1.1 }
76
- assert_nothing_raised { @rtr.extend = false }
77
- assert_equal(@rtr.extend, false)
78
- end
79
-
80
- def test_condense
81
- assert_raise(ArgumentError) { @rtr.condense = -1.1 }
82
- assert_nothing_raised { @rtr.condense = false }
83
- assert_equal(@rtr.condense, false)
84
- end
85
-
86
- def test_shadow
87
- assert_raise(ArgumentError) { @rtr.shadow = -1.1 }
88
- assert_nothing_raised { @rtr.shadow = false }
89
- assert_equal(@rtr.shadow, false)
90
- end
91
-
92
- def test_outline
93
- assert_raise(ArgumentError) { @rtr.outline = -1.1 }
94
- assert_nothing_raised { @rtr.outline = false }
95
- assert_equal(@rtr.outline, false)
96
- end
97
-
98
- def test_strike
99
- assert_raise(ArgumentError) { @rtr.strike = -1.1 }
100
- assert_nothing_raised { @rtr.strike = false }
101
- assert_equal(@rtr.strike, false)
102
- end
103
-
104
- def test_u
105
- @c.type = :string
106
- assert_raise(ArgumentError) { @c.u = -1.1 }
107
- assert_nothing_raised { @c.u = :single }
108
- assert_equal(@c.u, :single)
109
- doc = Nokogiri::XML(@c.to_xml_string(1,1))
110
- assert(doc.xpath('//u[@val="single"]'))
111
- end
112
-
113
- def test_i
114
- assert_raise(ArgumentError) { @c.i = -1.1 }
115
- assert_nothing_raised { @c.i = false }
116
- assert_equal(@c.i, false)
117
- end
118
-
119
- def test_rFont
120
- assert_raise(ArgumentError) { @c.font_name = -1.1 }
121
- assert_nothing_raised { @c.font_name = "Arial" }
122
- assert_equal(@c.font_name, "Arial")
123
- end
124
-
125
- def test_charset
126
- assert_raise(ArgumentError) { @c.charset = -1.1 }
127
- assert_nothing_raised { @c.charset = 1 }
128
- assert_equal(@c.charset, 1)
129
- end
130
-
131
- def test_family
132
- assert_raise(ArgumentError) { @rtr.family = 0 }
133
- assert_nothing_raised { @rtr.family = 1 }
134
- assert_equal(@rtr.family, 1)
135
- end
136
-
137
- def test_b
138
- assert_raise(ArgumentError) { @c.b = -1.1 }
139
- assert_nothing_raised { @c.b = false }
140
- assert_equal(@c.b, false)
141
- end
142
-
143
- def test_multiline_autowidth
144
- wrap = @p.workbook.styles.add_style({:alignment => {:wrap_text => true}})
145
- awtr = Axlsx::RichTextRun.new('I\'m bold' + "\n", :b => true)
146
- rt = Axlsx::RichText.new
147
- rt.runs << awtr
148
- @ws.add_row [rt], :style => wrap
149
- ar = [0]
150
- awtr.autowidth(ar)
151
- assert_equal(2, ar.length)
152
- assert_equal(13.2, ar[0])
153
- assert_equal(0, ar[1])
154
- end
155
-
156
- def test_to_xml
157
- schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
158
- doc = Nokogiri::XML(@ws.to_xml_string)
159
- errors = []
160
- schema.validate(doc).each do |error|
161
- puts error.message
162
- errors.push error
163
- end
164
- assert(errors.empty?, "error free validation")
165
-
166
- assert(doc.xpath('//rPr/b[@val=1]'))
167
- assert(doc.xpath('//rPr/i[@val=0]'))
168
- assert(doc.xpath('//rPr/b[@val=0]'))
169
- assert(doc.xpath('//rPr/i[@val=1]'))
170
- assert(doc.xpath('//is//t[contains(text(), "hihihi")]'))
171
- assert(doc.xpath('//is//t[contains(text(), "hihi2hi2")]'))
172
- end
173
- end