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,59 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestSharedStringsTable < Test::Unit::TestCase
4
-
5
- def setup
6
- @p = Axlsx::Package.new :use_shared_strings=>true
7
-
8
- ws = @p.workbook.add_worksheet
9
- ws.add_row ['a', 1, 'b']
10
- ws.add_row ['b', 1, 'c']
11
- ws.add_row ['c', 1, 'd']
12
- ws.rows.last.add_cell('b', :type => :text)
13
- end
14
-
15
- def test_workbook_has_shared_strings
16
- assert(@p.workbook.shared_strings.is_a?(Axlsx::SharedStringsTable), "shared string table was not created")
17
- end
18
-
19
- def test_count
20
- sst = @p.workbook.shared_strings
21
- assert_equal(sst.count, 7)
22
- end
23
-
24
- def test_unique_count
25
- sst = @p.workbook.shared_strings
26
- assert_equal(sst.unique_count, 4)
27
- end
28
-
29
- def test_uses_workbook_xml_space
30
- assert_equal(@p.workbook.xml_space, @p.workbook.shared_strings.xml_space)
31
- @p.workbook.xml_space = :default
32
- assert_equal(:default, @p.workbook.shared_strings.xml_space)
33
- end
34
-
35
- def test_valid_document
36
- schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
37
- doc = Nokogiri::XML(@p.workbook.shared_strings.to_xml_string)
38
- errors = []
39
- schema.validate(doc).each do |error|
40
- puts error.message
41
- errors << error
42
- end
43
- assert_equal(errors.size, 0, "sharedStirngs.xml Invalid" + errors.map{ |e| e.message }.to_s)
44
- end
45
-
46
- def test_remove_control_characters_in_xml_serialization
47
- nasties = "hello\x10\x00\x1C\x1Eworld"
48
- @p.workbook.worksheets[0].add_row [nasties]
49
-
50
- # test that the nasty string was added to the shared strings
51
- assert @p.workbook.shared_strings.unique_cells.has_key?(nasties)
52
-
53
- # test that none of the control characters are in the XML output for shared strings
54
- assert_no_match(/#{Axlsx::CONTROL_CHARS}/, @p.workbook.shared_strings.to_xml_string)
55
-
56
- # assert that the shared string was normalized to remove the control characters
57
- assert_not_nil @p.workbook.shared_strings.to_xml_string.index("helloworld")
58
- end
59
- end
@@ -1,165 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestWorkbook < Test::Unit::TestCase
4
- def setup
5
- p = Axlsx::Package.new
6
- @wb = p.workbook
7
- end
8
-
9
- def teardown
10
- end
11
-
12
- def test_worksheet_users_xml_space
13
- sheet = @wb.add_worksheet(:name => 'foo')
14
- ws_xml = Nokogiri::XML(sheet.to_xml_string)
15
- assert(ws_xml.xpath("//xmlns:worksheet/@xml:space='preserve'"))
16
-
17
- @wb.xml_space = :default
18
- ws_xml = Nokogiri::XML(sheet.to_xml_string)
19
- assert(ws_xml.xpath("//xmlns:worksheet/@xml:space='default'"))
20
- end
21
-
22
- def test_xml_space
23
- assert_equal(:preserve, @wb.xml_space)
24
- @wb.xml_space = :default
25
- assert_equal(:default, @wb.xml_space)
26
- assert_raise(ArgumentError) { @wb.xml_space = :none }
27
- end
28
-
29
- def test_no_autowidth
30
- assert_equal(@wb.use_autowidth, true)
31
- assert_raise(ArgumentError) {@wb.use_autowidth = 0.1}
32
- assert_nothing_raised {@wb.use_autowidth = false}
33
- assert_equal(@wb.use_autowidth, false)
34
- end
35
-
36
- def test_is_reversed
37
- assert_equal(@wb.is_reversed, nil)
38
- assert_raise(ArgumentError) {@wb.is_reversed = 0.1}
39
- assert_nothing_raised {@wb.is_reversed = true }
40
- assert_equal(@wb.use_autowidth, true)
41
- end
42
-
43
- def test_sheet_by_name_retrieval
44
- @wb.add_worksheet(:name=>'foo')
45
- @wb.add_worksheet(:name=>'bar')
46
- assert_equal('foo', @wb.sheet_by_name('foo').name)
47
-
48
- end
49
-
50
- def test_worksheet_empty_name
51
- assert_raise(ArgumentError) {@wb.add_worksheet(:name=>'')}
52
- end
53
-
54
- def test_date1904
55
- assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
56
- @wb.date1904 = :false
57
- assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
58
- Axlsx::Workbook.date1904 = :true
59
- assert_equal(Axlsx::Workbook.date1904, @wb.date1904)
60
- end
61
-
62
- def test_add_defined_name
63
- @wb.add_defined_name 'Sheet1!1:1', :name => '_xlnm.Print_Titles', :hidden => true
64
- assert_equal(1, @wb.defined_names.size)
65
- end
66
-
67
- def test_add_view
68
- @wb.add_view visibility: :hidden, window_width: 800
69
- assert_equal(1, @wb.views.size)
70
- end
71
-
72
- def test_shared_strings
73
- assert_equal(@wb.use_shared_strings, nil)
74
- assert_raise(ArgumentError) {@wb.use_shared_strings = 'bpb'}
75
- assert_nothing_raised {@wb.use_shared_strings = :true}
76
- end
77
-
78
- def test_add_worksheet
79
- assert(@wb.worksheets.empty?, "worbook has no worksheets by default")
80
- ws = @wb.add_worksheet(:name=>"bob")
81
- assert_equal(@wb.worksheets.size, 1, "add_worksheet adds a worksheet!")
82
- assert_equal(@wb.worksheets.first, ws, "the worksheet returned is the worksheet added")
83
- assert_equal(ws.name, "bob", "name option gets passed to worksheet")
84
- end
85
-
86
- def test_insert_worksheet
87
- @wb.add_worksheet(:name => 'A')
88
- @wb.add_worksheet(:name => 'B')
89
- ws3 = @wb.insert_worksheet(0, :name => 'C')
90
- assert_equal(ws3.name, @wb.worksheets.first.name)
91
- end
92
-
93
- def test_relationships
94
- #current relationship size is 1 due to style relation
95
- assert(@wb.relationships.size == 1)
96
- @wb.add_worksheet
97
- assert(@wb.relationships.size == 2)
98
- @wb.use_shared_strings = true
99
- assert(@wb.relationships.size == 3)
100
- end
101
-
102
- def test_to_xml
103
- schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
104
- doc = Nokogiri::XML(@wb.to_xml_string)
105
- errors = []
106
- schema.validate(doc).each do |error|
107
- errors.push error
108
- puts error.message
109
- end
110
- assert(errors.empty?, "error free validation")
111
- end
112
-
113
- def test_to_xml_reversed
114
- @wb.is_reversed = true
115
- @wb.add_worksheet(:name => 'first')
116
- second = @wb.add_worksheet(:name => 'second')
117
- doc = Nokogiri::XML(@wb.to_xml_string)
118
- assert_equal second.name, doc.xpath('//xmlns:workbook/xmlns:sheets/*[1]/@name').to_s
119
- end
120
-
121
- def test_range_requires_valid_sheet
122
- ws = @wb.add_worksheet :name=>'fish'
123
- ws.add_row [1,2,3]
124
- ws.add_row [4,5,6]
125
- assert_raise(ArgumentError, "no sheet name part") { @wb["A1:C2"]}
126
- assert_equal @wb['fish!A1:C2'].size, 6
127
- end
128
-
129
- def test_to_xml_adds_worksheet_when_worksheets_is_empty
130
- assert(@wb.worksheets.empty?)
131
- @wb.to_xml_string
132
- assert(@wb.worksheets.size == 1)
133
- end
134
-
135
- def test_to_xml_string_defined_names
136
- @wb.add_worksheet do |sheet|
137
- sheet.add_row [1, "two"]
138
- sheet.auto_filter = "A1:B1"
139
- end
140
- doc = Nokogiri::XML(@wb.to_xml_string)
141
- assert_equal(doc.xpath('//xmlns:workbook/xmlns:definedNames/xmlns:definedName').inner_text, @wb.worksheets[0].auto_filter.defined_name)
142
- end
143
-
144
- def test_to_xml_string_book_views
145
- @wb.add_worksheet do |sheet|
146
- sheet.add_row [1, "two"]
147
- end
148
- @wb.add_view active_tab: 0, first_sheet: 0
149
- doc = Nokogiri::XML(@wb.to_xml_string)
150
- assert_equal(1, doc.xpath('//xmlns:workbook/xmlns:bookViews/xmlns:workbookView[@activeTab=0]').size)
151
- end
152
-
153
- def test_to_xml_uses_correct_rIds_for_pivotCache
154
- ws = @wb.add_worksheet
155
- pivot_table = ws.add_pivot_table('G5:G6', 'A1:D5')
156
- doc = Nokogiri::XML(@wb.to_xml_string)
157
- assert_equal pivot_table.cache_definition.rId, doc.xpath("//xmlns:pivotCache").first["r:id"]
158
- end
159
-
160
- def test_worksheet_name_is_intact_after_serialized_into_xml
161
- sheet = @wb.add_worksheet(:name => '_Example')
162
- wb_xml = Nokogiri::XML(@wb.to_xml_string)
163
- assert_equal sheet.name, wb_xml.xpath('//xmlns:workbook/xmlns:sheets/*[1]/@name').to_s
164
- end
165
- end
@@ -1,50 +0,0 @@
1
- require 'tc_helper'
2
-
3
- class TestWorkbookView < Test::Unit::TestCase
4
-
5
- def setup
6
- @options = { visibility: :hidden, minimized: true, show_horizontal_scroll: true, show_vertical_scroll: true,
7
- show_sheet_tabs: true, tab_ratio: 750, first_sheet: 0, active_tab: 1, x_window: 500, y_window: 400,
8
- window_width: 800, window_height: 600, auto_filter_date_grouping: true }
9
- @book_view = Axlsx::WorkbookView.new @options
10
- end
11
-
12
- def test_options_assignation
13
- @options.each do |key, value|
14
- assert_equal(value, @book_view.send(key))
15
- end
16
- end
17
-
18
- def test_boolean_attribute_validation
19
- %w(minimized show_horizontal_scroll show_vertical_scroll show_sheet_tabs auto_filter_date_grouping).each do |attr|
20
- assert_raise(ArgumentError, 'only booleanish allowed in boolean attributes') { @book_view.send("#{attr}=", "banana") }
21
- assert_nothing_raised { @book_view.send("#{attr}=", false )}
22
- end
23
- end
24
-
25
- def test_integer_attribute_validation
26
- %w(tab_ratio first_sheet active_tab x_window y_window window_width window_height).each do |attr|
27
- assert_raise(ArgumentError, 'only integer allowed in integer attributes') { @book_view.send("#{attr}=", "b") }
28
- assert_nothing_raised { @book_view.send("#{attr}=", 7 )}
29
- end
30
- end
31
-
32
- def test_visibility_attribute_validation
33
- assert_raise(ArgumentError) { @book_view.visibility = :foobar }
34
- assert_nothing_raised { @book_view.visibility = :hidden }
35
- assert_nothing_raised { @book_view.visibility = :very_hidden }
36
- assert_nothing_raised { @book_view.visibility = :visible }
37
- end
38
-
39
- def test_to_xml_string
40
- xml = @book_view.to_xml_string
41
- doc = Nokogiri::XML(xml)
42
- @options.each do |key, value|
43
- if value == true || value == false
44
- value = value ? 1 : 0
45
- end
46
- path = "workbookView[@#{Axlsx.camel(key, false)}='#{value}']"
47
- assert_equal(1, doc.xpath(path).size)
48
- end
49
- end
50
- end
@@ -1,38 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestAutoFilter < Test::Unit::TestCase
4
-
5
- def setup
6
- ws = Axlsx::Package.new.workbook.add_worksheet
7
- 3.times { |index| ws.add_row [1*index,2*index,3*index] }
8
- @auto_filter = ws.auto_filter
9
- @auto_filter.range = 'A1:C3'
10
- @auto_filter.add_column 0, :filters, :filter_items => [1]
11
- end
12
-
13
- def test_defined_name
14
- assert_equal("'Sheet1'!$A$1:$C$3", @auto_filter.defined_name)
15
- end
16
-
17
- def test_to_xml_string
18
- doc = Nokogiri::XML(@auto_filter.to_xml_string)
19
- assert(doc.xpath("autoFilter[@ref='#{@auto_filter.range}']"))
20
- end
21
-
22
- def test_columns
23
- assert @auto_filter.columns.is_a?(Axlsx::SimpleTypedList)
24
- assert_equal @auto_filter.columns.allowed_types, [Axlsx::FilterColumn]
25
- end
26
-
27
- def test_add_column
28
- @auto_filter.add_column(0, :filters) do |column|
29
- assert column.is_a? FilterColumn
30
- end
31
- end
32
-
33
- def test_applya
34
- assert_equal nil, @auto_filter.worksheet.rows.last.hidden
35
- @auto_filter.apply
36
- assert_equal true, @auto_filter.worksheet.rows.last.hidden
37
- end
38
- end
@@ -1,76 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestFilterColumn < Test::Unit::TestCase
4
-
5
- def setup
6
- @filter_column = Axlsx::FilterColumn.new(0, :filters, :filter_items => [200])
7
- end
8
-
9
-
10
- def test_initialize_col_id
11
- assert_raise ArgumentError do
12
- Axlsx::FilterColumn.new(0, :bobs_house_of_filter)
13
- end
14
- assert_raise ArgumentError do
15
- Axlsx::FilterColumn.new(:penut, :filters)
16
- end
17
- end
18
-
19
- def test_initailize_filter_type
20
- assert @filter_column.filter.is_a?(Axlsx::Filters)
21
- assert_equal 1, @filter_column.filter.filter_items.size
22
- end
23
-
24
- def test_initialize_filter_type_filters_with_options
25
- assert_equal 200, @filter_column.filter.filter_items.first.val
26
- end
27
-
28
- def test_initialize_with_block
29
- filter_column = Axlsx::FilterColumn.new(0, :filters) do |filters|
30
- filters.filter_items = [700, 100, 5]
31
- end
32
- assert_equal 3, filter_column.filter.filter_items.size
33
- assert_equal 700, filter_column.filter.filter_items.first.val
34
- assert_equal 5, filter_column.filter.filter_items.last.val
35
- end
36
-
37
- def test_default_show_button
38
- assert_equal true, @filter_column.show_button
39
- end
40
-
41
- def test_default_hidden_button
42
- assert_equal false, @filter_column.hidden_button
43
- end
44
-
45
- def test_show_button
46
- assert_raise ArgumentError do
47
- @filter_column.show_button = :foo
48
- end
49
- assert_nothing_raised { @filter_column.show_button = false }
50
- end
51
-
52
- def test_hidden_button
53
- assert_raise ArgumentError do
54
- @filter_column.hidden_button = :hoge
55
- end
56
- assert_nothing_raised { @filter_column.hidden_button = true }
57
- end
58
-
59
- def test_col_id=
60
- assert_raise ArgumentError do
61
- @filter_column.col_id = :bar
62
- end
63
- assert_nothing_raised { @filter_column.col_id = 7 }
64
- end
65
-
66
- def test_to_xml_string
67
- doc = Nokogiri::XML(@filter_column.to_xml_string)
68
- assert doc.xpath("//filterColumn[@colId=#{@filter_column.col_id}]")
69
- assert doc.xpath("//filterColumn[@hiddenButton=#{@filter_column.hidden_button}]")
70
- assert doc.xpath("//filterColumn[@showButton=#{@filter_column.show_button}]")
71
-
72
-
73
-
74
- assert doc.xpath("//filterColumn/filters")
75
- end
76
- end
@@ -1,50 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestFilters < Test::Unit::TestCase
4
- def setup
5
- @filters = Axlsx::Filters.new(:filter_items => [1, 'a'],
6
- :date_group_items =>[ { :date_time_grouping => :year, :year => 2011, :month => 11, :day => 11, :hour => 0, :minute => 0, :second => 0 } ] ,
7
- :blank => true)
8
- end
9
-
10
- def test_blank
11
- assert_equal true, @filters.blank
12
- assert_raise(ArgumentError) { @filters.blank = :only_if_you_want_it }
13
- @filters.blank = true
14
- assert_equal true, @filters.blank
15
- end
16
-
17
- def test_calendar_type
18
- assert_raise(ArgumentError) { @filters.calendar_type = 'monkey calendar' }
19
- @filters.calendar_type = 'japan'
20
- assert_equal('japan', @filters.calendar_type)
21
- end
22
-
23
- def test_filters_items
24
- assert @filters.filter_items.is_a?(Array)
25
- assert_equal 2, @filters.filter_items.size
26
- end
27
-
28
- def test_date_group_items
29
- assert @filters.date_group_items.is_a?(Array)
30
- assert_equal 1, @filters.date_group_items.size
31
- end
32
-
33
- def test_apply_is_false_for_matching_values
34
- keeper = Object.new
35
- def keeper.value; 'a'; end
36
- assert_equal false, @filters.apply(keeper)
37
- end
38
-
39
- def test_apply_is_true_for_non_matching_values
40
- hidden = Object.new
41
- def hidden.value; 'b'; end
42
- assert_equal true, @filters.apply(hidden)
43
- end
44
-
45
- def test_to_xml_string
46
- doc = Nokogiri::XML(@filters.to_xml_string)
47
- assert_equal(1, doc.xpath('//filters[@blank=1]').size)
48
- end
49
- end
50
-
@@ -1,49 +0,0 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestBreak < Test::Unit::TestCase
4
-
5
- def setup
6
- @break = Axlsx::Break.new(:id => 1, :min => 1, :max => 10, :man => true, :pt => false)
7
- end
8
-
9
- def test_id
10
- assert_equal(1, @break.id)
11
- assert_raises ArgumentError do
12
- Axlsx::Break.new(:hoge, {:id => -1})
13
- end
14
- end
15
-
16
- def test_min
17
- assert_equal(1, @break.min)
18
- assert_raises ArgumentError do
19
- Axlsx::Break.new(:hoge, :min => -1)
20
- end
21
- end
22
-
23
- def test_max
24
- assert_equal(10, @break.max)
25
- assert_raises ArgumentError do
26
- Axlsx::Break.new(:hoge, :max => -1)
27
- end
28
- end
29
-
30
-
31
- def test_man
32
- assert_equal(true, @break.man)
33
- assert_raises ArgumentError do
34
- Axlsx::Break.new(:man => -1)
35
- end
36
- end
37
-
38
- def test_pt
39
- assert_equal(false, @break.pt)
40
- assert_raises ArgumentError do
41
- Axlsx::Break.new(:pt => -1)
42
- end
43
- end
44
-
45
- def test_to_xml_string
46
- doc = Nokogiri::XML(@break.to_xml_string)
47
- assert_equal(doc.xpath('//brk[@id="1"][@min="1"][@max="10"][@pt=0][@man=1]').size, 1)
48
- end
49
- end