caxlsx 3.1.1 → 3.2.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 (294) hide show
  1. checksums.yaml +4 -4
  2. data/.yardopts +9 -9
  3. data/.yardopts_guide +18 -18
  4. data/CHANGELOG.md +354 -343
  5. data/LICENSE +21 -21
  6. data/README.md +168 -172
  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 +276 -276
  27. data/lib/axlsx/drawing/d_lbls.rb +90 -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 -98
  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 +97 -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 +388 -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 -71
  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 +494 -420
  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 +410 -401
  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 +395 -370
  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/break.rb +35 -35
  98. data/lib/axlsx/workbook/worksheet/cell.rb +506 -505
  99. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +164 -164
  100. data/lib/axlsx/workbook/worksheet/cfvo.rb +60 -60
  101. data/lib/axlsx/workbook/worksheet/cfvos.rb +18 -18
  102. data/lib/axlsx/workbook/worksheet/col.rb +145 -145
  103. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -35
  104. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -110
  105. data/lib/axlsx/workbook/worksheet/cols.rb +23 -23
  106. data/lib/axlsx/workbook/worksheet/comment.rb +91 -91
  107. data/lib/axlsx/workbook/worksheet/comments.rb +82 -82
  108. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -82
  109. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -220
  110. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -25
  111. data/lib/axlsx/workbook/worksheet/data_bar.rb +129 -129
  112. data/lib/axlsx/workbook/worksheet/data_validation.rb +246 -246
  113. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -28
  114. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -30
  115. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -64
  116. data/lib/axlsx/workbook/worksheet/header_footer.rb +52 -52
  117. data/lib/axlsx/workbook/worksheet/icon_set.rb +81 -81
  118. data/lib/axlsx/workbook/worksheet/merged_cells.rb +37 -37
  119. data/lib/axlsx/workbook/worksheet/outline_pr.rb +33 -33
  120. data/lib/axlsx/workbook/worksheet/page_margins.rb +97 -97
  121. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -44
  122. data/lib/axlsx/workbook/worksheet/page_setup.rb +240 -240
  123. data/lib/axlsx/workbook/worksheet/pane.rb +139 -139
  124. data/lib/axlsx/workbook/worksheet/pivot_table.rb +296 -294
  125. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -66
  126. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -24
  127. data/lib/axlsx/workbook/worksheet/print_options.rb +39 -39
  128. data/lib/axlsx/workbook/worksheet/protected_range.rb +47 -47
  129. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +37 -37
  130. data/lib/axlsx/workbook/worksheet/rich_text.rb +55 -55
  131. data/lib/axlsx/workbook/worksheet/rich_text_run.rb +250 -250
  132. data/lib/axlsx/workbook/worksheet/row.rb +164 -164
  133. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -33
  134. data/lib/axlsx/workbook/worksheet/selection.rb +101 -101
  135. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -29
  136. data/lib/axlsx/workbook/worksheet/sheet_data.rb +27 -27
  137. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +87 -87
  138. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +118 -118
  139. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -213
  140. data/lib/axlsx/workbook/worksheet/table.rb +102 -102
  141. data/lib/axlsx/workbook/worksheet/table_style_info.rb +49 -49
  142. data/lib/axlsx/workbook/worksheet/tables.rb +34 -34
  143. data/lib/axlsx/workbook/worksheet/worksheet.rb +786 -768
  144. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -58
  145. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -58
  146. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -74
  147. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -38
  148. data/lib/axlsx.rb +185 -171
  149. data/lib/caxlsx.rb +2 -2
  150. data/lib/schema/dc.xsd +118 -118
  151. data/lib/schema/dcmitype.xsd +51 -51
  152. data/lib/schema/dcterms.xsd +331 -331
  153. data/lib/schema/dml-chartDrawing.xsd +146 -146
  154. data/lib/schema/dml-compatibility.xsd +14 -14
  155. data/lib/schema/dml-lockedCanvas.xsd +11 -11
  156. data/lib/schema/dml-main.xsd +3048 -3048
  157. data/lib/schema/dml-picture.xsd +23 -23
  158. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -185
  159. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -185
  160. data/lib/schema/shared-additionalCharacteristics.xsd +28 -28
  161. data/lib/schema/shared-bibliography.xsd +144 -144
  162. data/lib/schema/shared-commonSimpleTypes.xsd +166 -166
  163. data/lib/schema/shared-customXmlDataProperties.xsd +25 -25
  164. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -18
  165. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -59
  166. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -56
  167. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -195
  168. data/lib/schema/shared-relationshipReference.xsd +25 -25
  169. data/lib/schema/vml-main.xsd +569 -569
  170. data/lib/schema/vml-officeDrawing.xsd +509 -509
  171. data/lib/schema/vml-presentationDrawing.xsd +12 -12
  172. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -108
  173. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -96
  174. data/lib/schema/xml.xsd +116 -116
  175. data/test/benchmark.rb +72 -72
  176. data/test/content_type/tc_content_type.rb +76 -76
  177. data/test/content_type/tc_default.rb +16 -16
  178. data/test/content_type/tc_override.rb +14 -14
  179. data/test/doc_props/tc_app.rb +43 -43
  180. data/test/doc_props/tc_core.rb +42 -42
  181. data/test/drawing/tc_area_chart.rb +39 -39
  182. data/test/drawing/tc_area_series.rb +71 -71
  183. data/test/drawing/tc_axes.rb +7 -7
  184. data/test/drawing/tc_axis.rb +112 -112
  185. data/test/drawing/tc_bar_3D_chart.rb +86 -86
  186. data/test/drawing/tc_bar_chart.rb +86 -86
  187. data/test/drawing/tc_bar_series.rb +46 -46
  188. data/test/drawing/tc_bubble_chart.rb +44 -44
  189. data/test/drawing/tc_bubble_series.rb +21 -21
  190. data/test/drawing/tc_cat_axis.rb +31 -31
  191. data/test/drawing/tc_cat_axis_data.rb +27 -27
  192. data/test/drawing/tc_chart.rb +123 -123
  193. data/test/drawing/tc_d_lbls.rb +57 -57
  194. data/test/drawing/tc_data_source.rb +23 -23
  195. data/test/drawing/tc_drawing.rb +80 -80
  196. data/test/drawing/tc_graphic_frame.rb +27 -27
  197. data/test/drawing/tc_hyperlink.rb +64 -64
  198. data/test/drawing/tc_line_3d_chart.rb +47 -47
  199. data/test/drawing/tc_line_chart.rb +39 -39
  200. data/test/drawing/tc_line_series.rb +71 -71
  201. data/test/drawing/tc_marker.rb +44 -44
  202. data/test/drawing/tc_named_axis_data.rb +27 -27
  203. data/test/drawing/tc_num_data.rb +31 -31
  204. data/test/drawing/tc_num_val.rb +29 -29
  205. data/test/drawing/tc_one_cell_anchor.rb +66 -66
  206. data/test/drawing/tc_pic.rb +103 -103
  207. data/test/drawing/tc_picture_locking.rb +72 -72
  208. data/test/drawing/tc_pie_3D_chart.rb +28 -28
  209. data/test/drawing/tc_pie_series.rb +33 -33
  210. data/test/drawing/tc_scaling.rb +36 -36
  211. data/test/drawing/tc_scatter_chart.rb +48 -48
  212. data/test/drawing/tc_scatter_series.rb +74 -56
  213. data/test/drawing/tc_ser_axis.rb +31 -31
  214. data/test/drawing/tc_series.rb +23 -23
  215. data/test/drawing/tc_series_title.rb +54 -54
  216. data/test/drawing/tc_str_data.rb +18 -18
  217. data/test/drawing/tc_str_val.rb +30 -30
  218. data/test/drawing/tc_title.rb +70 -70
  219. data/test/drawing/tc_two_cell_anchor.rb +36 -36
  220. data/test/drawing/tc_val_axis.rb +24 -24
  221. data/test/drawing/tc_view_3D.rb +54 -54
  222. data/test/drawing/tc_vml_drawing.rb +25 -25
  223. data/test/drawing/tc_vml_shape.rb +106 -106
  224. data/test/profile.rb +24 -24
  225. data/test/rels/tc_relationship.rb +52 -52
  226. data/test/rels/tc_relationships.rb +37 -37
  227. data/test/stylesheet/tc_border.rb +37 -37
  228. data/test/stylesheet/tc_border_pr.rb +32 -32
  229. data/test/stylesheet/tc_cell_alignment.rb +81 -81
  230. data/test/stylesheet/tc_cell_protection.rb +29 -29
  231. data/test/stylesheet/tc_cell_style.rb +57 -57
  232. data/test/stylesheet/tc_color.rb +43 -43
  233. data/test/stylesheet/tc_dxf.rb +81 -81
  234. data/test/stylesheet/tc_fill.rb +18 -18
  235. data/test/stylesheet/tc_font.rb +133 -133
  236. data/test/stylesheet/tc_gradient_fill.rb +72 -72
  237. data/test/stylesheet/tc_gradient_stop.rb +31 -31
  238. data/test/stylesheet/tc_num_fmt.rb +30 -30
  239. data/test/stylesheet/tc_pattern_fill.rb +43 -43
  240. data/test/stylesheet/tc_styles.rb +309 -261
  241. data/test/stylesheet/tc_table_style.rb +44 -44
  242. data/test/stylesheet/tc_table_style_element.rb +45 -45
  243. data/test/stylesheet/tc_table_styles.rb +29 -29
  244. data/test/stylesheet/tc_xf.rb +120 -120
  245. data/test/tc_axlsx.rb +109 -109
  246. data/test/tc_helper.rb +10 -10
  247. data/test/tc_package.rb +317 -314
  248. data/test/util/tc_mime_type_utils.rb +13 -13
  249. data/test/util/tc_serialized_attributes.rb +19 -19
  250. data/test/util/tc_simple_typed_list.rb +77 -77
  251. data/test/util/tc_validators.rb +210 -210
  252. data/test/workbook/tc_defined_name.rb +49 -49
  253. data/test/workbook/tc_shared_strings_table.rb +59 -59
  254. data/test/workbook/tc_workbook.rb +165 -160
  255. data/test/workbook/tc_workbook_view.rb +50 -50
  256. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -38
  257. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -76
  258. data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -50
  259. data/test/workbook/worksheet/tc_break.rb +49 -49
  260. data/test/workbook/worksheet/tc_cell.rb +465 -453
  261. data/test/workbook/worksheet/tc_cfvo.rb +31 -31
  262. data/test/workbook/worksheet/tc_col.rb +93 -93
  263. data/test/workbook/worksheet/tc_color_scale.rb +58 -58
  264. data/test/workbook/worksheet/tc_comment.rb +72 -72
  265. data/test/workbook/worksheet/tc_comments.rb +57 -57
  266. data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -224
  267. data/test/workbook/worksheet/tc_data_bar.rb +46 -46
  268. data/test/workbook/worksheet/tc_data_validation.rb +265 -265
  269. data/test/workbook/worksheet/tc_date_time_converter.rb +124 -124
  270. data/test/workbook/worksheet/tc_header_footer.rb +151 -151
  271. data/test/workbook/worksheet/tc_icon_set.rb +45 -45
  272. data/test/workbook/worksheet/tc_outline_pr.rb +19 -19
  273. data/test/workbook/worksheet/tc_page_margins.rb +97 -97
  274. data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -15
  275. data/test/workbook/worksheet/tc_page_setup.rb +143 -143
  276. data/test/workbook/worksheet/tc_pane.rb +54 -54
  277. data/test/workbook/worksheet/tc_pivot_table.rb +180 -143
  278. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +62 -62
  279. data/test/workbook/worksheet/tc_print_options.rb +72 -72
  280. data/test/workbook/worksheet/tc_protected_range.rb +17 -17
  281. data/test/workbook/worksheet/tc_rich_text.rb +44 -44
  282. data/test/workbook/worksheet/tc_rich_text_run.rb +173 -173
  283. data/test/workbook/worksheet/tc_row.rb +160 -160
  284. data/test/workbook/worksheet/tc_selection.rb +55 -55
  285. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -18
  286. data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -88
  287. data/test/workbook/worksheet/tc_sheet_pr.rb +49 -49
  288. data/test/workbook/worksheet/tc_sheet_protection.rb +117 -117
  289. data/test/workbook/worksheet/tc_sheet_view.rb +214 -214
  290. data/test/workbook/worksheet/tc_table.rb +77 -77
  291. data/test/workbook/worksheet/tc_table_style_info.rb +53 -53
  292. data/test/workbook/worksheet/tc_worksheet.rb +632 -601
  293. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -55
  294. metadata +101 -101
@@ -1,106 +1,106 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestVmlShape < Test::Unit::TestCase
4
-
5
- def setup
6
- p = Axlsx::Package.new
7
- wb = p.workbook
8
- @ws = wb.add_worksheet
9
- @ws.add_comment :ref => 'A1', :text => 'penut machine', :author => 'crank', :visible => true
10
- @ws.add_comment :ref => 'C3', :text => 'rust bucket', :author => 'PO', :visible => false
11
- @comments = @ws.comments
12
- end
13
-
14
- def test_initialize
15
- assert_raise(ArgumentError) { Axlsx::VmlDrawing.new }
16
- end
17
-
18
- def test_row
19
- shape = @comments.first.vml_shape
20
- assert_equal(shape.row, 0)
21
- shape = @comments.last.vml_shape
22
- assert_equal(shape.row, 2)
23
- end
24
-
25
- def test_column
26
- shape = @comments.first.vml_shape
27
- assert_equal(shape.column, 0)
28
- shape = @comments.last.vml_shape
29
- assert_equal(shape.column, 2)
30
- end
31
-
32
- def test_left_column
33
- shape = @comments.first.vml_shape
34
- shape.left_column = 3
35
- assert(shape.left_column == 3)
36
- assert_raise(ArgumentError) { shape.left_column = [] }
37
- end
38
-
39
- def test_left_offset
40
- shape = @comments.first.vml_shape
41
- shape.left_offset = 3
42
- assert(shape.left_offset == 3)
43
- assert_raise(ArgumentError) { shape.left_offset = [] }
44
- end
45
-
46
- def test_right_column
47
- shape = @comments.first.vml_shape
48
- shape.right_column = 3
49
- assert(shape.right_column == 3)
50
- assert_raise(ArgumentError) { shape.right_column = [] }
51
- end
52
-
53
- def test_right_offset
54
- shape = @comments.first.vml_shape
55
- shape.right_offset = 3
56
- assert(shape.right_offset == 3)
57
- assert_raise(ArgumentError) { shape.right_offset = [] }
58
- end
59
-
60
- def test_top_offset
61
- shape = @comments.first.vml_shape
62
- shape.top_offset = 3
63
- assert(shape.top_offset == 3)
64
- assert_raise(ArgumentError) { shape.top_offset = [] }
65
- end
66
-
67
- def test_bottom_offset
68
- shape = @comments.first.vml_shape
69
- shape.bottom_offset = 3
70
- assert(shape.bottom_offset == 3)
71
- assert_raise(ArgumentError) { shape.bottom_offset = [] }
72
- end
73
-
74
- def test_bottom_row
75
- shape = @comments.first.vml_shape
76
- shape.bottom_row = 3
77
- assert(shape.bottom_row == 3)
78
- assert_raise(ArgumentError) { shape.bottom_row = [] }
79
- end
80
-
81
- def test_top_row
82
- shape = @comments.first.vml_shape
83
- shape.top_row = 3
84
- assert(shape.top_row == 3)
85
- assert_raise(ArgumentError) { shape.top_row = [] }
86
- end
87
- def test_visible
88
- shape = @comments.first.vml_shape
89
- shape.visible = false
90
- assert(shape.visible == false)
91
- assert_raise(ArgumentError) { shape.visible = 'foo' }
92
- end
93
- def test_to_xml_string
94
- str = @comments.vml_drawing.to_xml_string()
95
- doc = Nokogiri::XML(str)
96
- assert_equal(doc.xpath("//v:shape").size, 2)
97
- assert_equal(1, doc.xpath("//x:Visible").size, 'ClientData/x:Visible element rendering')
98
- @comments.each do |comment|
99
- shape = comment.vml_shape
100
- assert(doc.xpath("//v:shape/x:ClientData/x:Row[text()='#{shape.row}']").size == 1)
101
- assert(doc.xpath("//v:shape/x:ClientData/x:Column[text()='#{shape.column}']").size == 1)
102
- assert(doc.xpath("//v:shape/x:ClientData/x:Anchor[text()='#{shape.left_column}, #{shape.left_offset}, #{shape.top_row}, #{shape.top_offset}, #{shape.right_column}, #{shape.right_offset}, #{shape.bottom_row}, #{shape.bottom_offset}']").size == 1)
103
- end
104
- end
105
-
106
- end
1
+ require 'tc_helper.rb'
2
+
3
+ class TestVmlShape < Test::Unit::TestCase
4
+
5
+ def setup
6
+ p = Axlsx::Package.new
7
+ wb = p.workbook
8
+ @ws = wb.add_worksheet
9
+ @ws.add_comment :ref => 'A1', :text => 'penut machine', :author => 'crank', :visible => true
10
+ @ws.add_comment :ref => 'C3', :text => 'rust bucket', :author => 'PO', :visible => false
11
+ @comments = @ws.comments
12
+ end
13
+
14
+ def test_initialize
15
+ assert_raise(ArgumentError) { Axlsx::VmlDrawing.new }
16
+ end
17
+
18
+ def test_row
19
+ shape = @comments.first.vml_shape
20
+ assert_equal(shape.row, 0)
21
+ shape = @comments.last.vml_shape
22
+ assert_equal(shape.row, 2)
23
+ end
24
+
25
+ def test_column
26
+ shape = @comments.first.vml_shape
27
+ assert_equal(shape.column, 0)
28
+ shape = @comments.last.vml_shape
29
+ assert_equal(shape.column, 2)
30
+ end
31
+
32
+ def test_left_column
33
+ shape = @comments.first.vml_shape
34
+ shape.left_column = 3
35
+ assert(shape.left_column == 3)
36
+ assert_raise(ArgumentError) { shape.left_column = [] }
37
+ end
38
+
39
+ def test_left_offset
40
+ shape = @comments.first.vml_shape
41
+ shape.left_offset = 3
42
+ assert(shape.left_offset == 3)
43
+ assert_raise(ArgumentError) { shape.left_offset = [] }
44
+ end
45
+
46
+ def test_right_column
47
+ shape = @comments.first.vml_shape
48
+ shape.right_column = 3
49
+ assert(shape.right_column == 3)
50
+ assert_raise(ArgumentError) { shape.right_column = [] }
51
+ end
52
+
53
+ def test_right_offset
54
+ shape = @comments.first.vml_shape
55
+ shape.right_offset = 3
56
+ assert(shape.right_offset == 3)
57
+ assert_raise(ArgumentError) { shape.right_offset = [] }
58
+ end
59
+
60
+ def test_top_offset
61
+ shape = @comments.first.vml_shape
62
+ shape.top_offset = 3
63
+ assert(shape.top_offset == 3)
64
+ assert_raise(ArgumentError) { shape.top_offset = [] }
65
+ end
66
+
67
+ def test_bottom_offset
68
+ shape = @comments.first.vml_shape
69
+ shape.bottom_offset = 3
70
+ assert(shape.bottom_offset == 3)
71
+ assert_raise(ArgumentError) { shape.bottom_offset = [] }
72
+ end
73
+
74
+ def test_bottom_row
75
+ shape = @comments.first.vml_shape
76
+ shape.bottom_row = 3
77
+ assert(shape.bottom_row == 3)
78
+ assert_raise(ArgumentError) { shape.bottom_row = [] }
79
+ end
80
+
81
+ def test_top_row
82
+ shape = @comments.first.vml_shape
83
+ shape.top_row = 3
84
+ assert(shape.top_row == 3)
85
+ assert_raise(ArgumentError) { shape.top_row = [] }
86
+ end
87
+ def test_visible
88
+ shape = @comments.first.vml_shape
89
+ shape.visible = false
90
+ assert(shape.visible == false)
91
+ assert_raise(ArgumentError) { shape.visible = 'foo' }
92
+ end
93
+ def test_to_xml_string
94
+ str = @comments.vml_drawing.to_xml_string()
95
+ doc = Nokogiri::XML(str)
96
+ assert_equal(doc.xpath("//v:shape").size, 2)
97
+ assert_equal(1, doc.xpath("//x:Visible").size, 'ClientData/x:Visible element rendering')
98
+ @comments.each do |comment|
99
+ shape = comment.vml_shape
100
+ assert(doc.xpath("//v:shape/x:ClientData/x:Row[text()='#{shape.row}']").size == 1)
101
+ assert(doc.xpath("//v:shape/x:ClientData/x:Column[text()='#{shape.column}']").size == 1)
102
+ assert(doc.xpath("//v:shape/x:ClientData/x:Anchor[text()='#{shape.left_column}, #{shape.left_offset}, #{shape.top_row}, #{shape.top_offset}, #{shape.right_column}, #{shape.right_offset}, #{shape.bottom_row}, #{shape.bottom_offset}']").size == 1)
103
+ end
104
+ end
105
+
106
+ end
data/test/profile.rb CHANGED
@@ -1,24 +1,24 @@
1
- #!/usr/bin/env ruby -s
2
-
3
- $:.unshift "#{File.dirname(__FILE__)}/../lib"
4
- require 'axlsx'
5
- require 'ruby-prof'
6
- #RubyProf.measure_mode = RubyProf::MEMORY
7
- #
8
- row = []
9
- # Taking worst case scenario of all string data
10
- input = (32..126).to_a.pack('U*').chars.to_a
11
- 20.times { row << input.shuffle.join}
12
-
13
- profile = RubyProf.profile do
14
- p = Axlsx::Package.new
15
- p.workbook.add_worksheet do |sheet|
16
- 10000.times do
17
- sheet << row
18
- end
19
- end
20
- p.to_stream
21
- end
22
-
23
- printer = RubyProf::FlatPrinter.new(profile)
24
- printer.print(STDOUT, {})
1
+ #!/usr/bin/env ruby -s
2
+
3
+ $:.unshift "#{File.dirname(__FILE__)}/../lib"
4
+ require 'axlsx'
5
+ require 'ruby-prof'
6
+ #RubyProf.measure_mode = RubyProf::MEMORY
7
+ #
8
+ row = []
9
+ # Taking worst case scenario of all string data
10
+ input = (32..126).to_a.pack('U*').chars.to_a
11
+ 20.times { row << input.shuffle.join}
12
+
13
+ profile = RubyProf.profile do
14
+ p = Axlsx::Package.new
15
+ p.workbook.add_worksheet do |sheet|
16
+ 10000.times do
17
+ sheet << row
18
+ end
19
+ end
20
+ p.to_stream
21
+ end
22
+
23
+ printer = RubyProf::FlatPrinter.new(profile)
24
+ printer.print(STDOUT, {})
@@ -1,52 +1,52 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestRelationships < Test::Unit::TestCase
4
-
5
- def test_instances_with_different_attributes_have_unique_ids
6
- rel_1 = Axlsx::Relationship.new(Object.new, Axlsx::WORKSHEET_R, 'target')
7
- rel_2 = Axlsx::Relationship.new(Object.new, Axlsx::COMMENT_R, 'foobar')
8
- assert_not_equal rel_1.Id, rel_2.Id
9
- end
10
-
11
- def test_instances_with_same_attributes_share_id
12
- source_obj = Object.new
13
- instance = Axlsx::Relationship.new(source_obj, Axlsx::WORKSHEET_R, 'target')
14
- assert_equal instance.Id, Axlsx::Relationship.new(source_obj, Axlsx::WORKSHEET_R, 'target').Id
15
- end
16
-
17
- def test_ids_cache_is_thread_safe
18
- cache1, cache2 = nil
19
- t1 = Thread.new { cache1 = Axlsx::Relationship.ids_cache }
20
- t2 = Thread.new { cache2 = Axlsx::Relationship.ids_cache }
21
- [t1, t2].each(&:join)
22
- assert_not_same(cache1, cache2)
23
- end
24
-
25
- def test_target_is_only_considered_for_same_attributes_check_if_target_mode_is_external
26
- source_obj = Object.new
27
- rel_1 = Axlsx::Relationship.new(source_obj, Axlsx::WORKSHEET_R, 'target')
28
- rel_2 = Axlsx::Relationship.new(source_obj, Axlsx::WORKSHEET_R, '../target')
29
- assert_equal rel_1.Id, rel_2.Id
30
-
31
- rel_3 = Axlsx::Relationship.new(source_obj, Axlsx::HYPERLINK_R, 'target', :target_mode => :External)
32
- rel_4 = Axlsx::Relationship.new(source_obj, Axlsx::HYPERLINK_R, '../target', :target_mode => :External)
33
- assert_not_equal rel_3.Id, rel_4.Id
34
- end
35
-
36
- def test_type
37
- assert_raise(ArgumentError) { Axlsx::Relationship.new nil, 'type', 'target' }
38
- assert_nothing_raised { Axlsx::Relationship.new nil, Axlsx::WORKSHEET_R, 'target' }
39
- assert_nothing_raised { Axlsx::Relationship.new nil, Axlsx::COMMENT_R, 'target' }
40
- end
41
-
42
- def test_target_mode
43
- assert_raise(ArgumentError) { Axlsx::Relationship.new nil, 'type', 'target', :target_mode => "FISH" }
44
- assert_nothing_raised { Axlsx::Relationship.new( nil, Axlsx::WORKSHEET_R, 'target', :target_mode => :External) }
45
- end
46
-
47
- def test_ampersand_escaping_in_target
48
- r = Axlsx::Relationship.new(nil, Axlsx::HYPERLINK_R, "http://example.com?foo=1&bar=2", :target_mod => :External)
49
- doc = Nokogiri::XML(r.to_xml_string)
50
- assert_equal(doc.xpath("//Relationship[@Target='http://example.com?foo=1&bar=2']").size, 1)
51
- end
52
- end
1
+ require 'tc_helper.rb'
2
+
3
+ class TestRelationships < Test::Unit::TestCase
4
+
5
+ def test_instances_with_different_attributes_have_unique_ids
6
+ rel_1 = Axlsx::Relationship.new(Object.new, Axlsx::WORKSHEET_R, 'target')
7
+ rel_2 = Axlsx::Relationship.new(Object.new, Axlsx::COMMENT_R, 'foobar')
8
+ assert_not_equal rel_1.Id, rel_2.Id
9
+ end
10
+
11
+ def test_instances_with_same_attributes_share_id
12
+ source_obj = Object.new
13
+ instance = Axlsx::Relationship.new(source_obj, Axlsx::WORKSHEET_R, 'target')
14
+ assert_equal instance.Id, Axlsx::Relationship.new(source_obj, Axlsx::WORKSHEET_R, 'target').Id
15
+ end
16
+
17
+ def test_ids_cache_is_thread_safe
18
+ cache1, cache2 = nil
19
+ t1 = Thread.new { cache1 = Axlsx::Relationship.ids_cache }
20
+ t2 = Thread.new { cache2 = Axlsx::Relationship.ids_cache }
21
+ [t1, t2].each(&:join)
22
+ assert_not_same(cache1, cache2)
23
+ end
24
+
25
+ def test_target_is_only_considered_for_same_attributes_check_if_target_mode_is_external
26
+ source_obj = Object.new
27
+ rel_1 = Axlsx::Relationship.new(source_obj, Axlsx::WORKSHEET_R, 'target')
28
+ rel_2 = Axlsx::Relationship.new(source_obj, Axlsx::WORKSHEET_R, '../target')
29
+ assert_equal rel_1.Id, rel_2.Id
30
+
31
+ rel_3 = Axlsx::Relationship.new(source_obj, Axlsx::HYPERLINK_R, 'target', :target_mode => :External)
32
+ rel_4 = Axlsx::Relationship.new(source_obj, Axlsx::HYPERLINK_R, '../target', :target_mode => :External)
33
+ assert_not_equal rel_3.Id, rel_4.Id
34
+ end
35
+
36
+ def test_type
37
+ assert_raise(ArgumentError) { Axlsx::Relationship.new nil, 'type', 'target' }
38
+ assert_nothing_raised { Axlsx::Relationship.new nil, Axlsx::WORKSHEET_R, 'target' }
39
+ assert_nothing_raised { Axlsx::Relationship.new nil, Axlsx::COMMENT_R, 'target' }
40
+ end
41
+
42
+ def test_target_mode
43
+ assert_raise(ArgumentError) { Axlsx::Relationship.new nil, 'type', 'target', :target_mode => "FISH" }
44
+ assert_nothing_raised { Axlsx::Relationship.new( nil, Axlsx::WORKSHEET_R, 'target', :target_mode => :External) }
45
+ end
46
+
47
+ def test_ampersand_escaping_in_target
48
+ r = Axlsx::Relationship.new(nil, Axlsx::HYPERLINK_R, "http://example.com?foo=1&bar=2", :target_mod => :External)
49
+ doc = Nokogiri::XML(r.to_xml_string)
50
+ assert_equal(doc.xpath("//Relationship[@Target='http://example.com?foo=1&bar=2']").size, 1)
51
+ end
52
+ end
@@ -1,37 +1,37 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestRelationships < Test::Unit::TestCase
4
-
5
- def test_for
6
- source_obj_1, source_obj_2 = Object.new, Object.new
7
- rel_1 = Axlsx::Relationship.new(source_obj_1, Axlsx::WORKSHEET_R, "bar")
8
- rel_2 = Axlsx::Relationship.new(source_obj_2, Axlsx::WORKSHEET_R, "bar")
9
- rels = Axlsx::Relationships.new
10
- rels << rel_1
11
- rels << rel_2
12
- assert_equal rel_1, rels.for(source_obj_1)
13
- assert_equal rel_2, rels.for(source_obj_2)
14
- end
15
-
16
- def test_valid_document
17
- @rels = Axlsx::Relationships.new
18
- schema = Nokogiri::XML::Schema(File.open(Axlsx::RELS_XSD))
19
- doc = Nokogiri::XML(@rels.to_xml_string)
20
- errors = []
21
- schema.validate(doc).each do |error|
22
- puts error.message
23
- errors << error
24
- end
25
-
26
- @rels << Axlsx::Relationship.new(nil, Axlsx::WORKSHEET_R, "bar")
27
- doc = Nokogiri::XML(@rels.to_xml_string)
28
- errors = []
29
- schema.validate(doc).each do |error|
30
- puts error.message
31
- errors << error
32
- end
33
-
34
- assert(errors.size == 0)
35
- end
36
-
37
- end
1
+ require 'tc_helper.rb'
2
+
3
+ class TestRelationships < Test::Unit::TestCase
4
+
5
+ def test_for
6
+ source_obj_1, source_obj_2 = Object.new, Object.new
7
+ rel_1 = Axlsx::Relationship.new(source_obj_1, Axlsx::WORKSHEET_R, "bar")
8
+ rel_2 = Axlsx::Relationship.new(source_obj_2, Axlsx::WORKSHEET_R, "bar")
9
+ rels = Axlsx::Relationships.new
10
+ rels << rel_1
11
+ rels << rel_2
12
+ assert_equal rel_1, rels.for(source_obj_1)
13
+ assert_equal rel_2, rels.for(source_obj_2)
14
+ end
15
+
16
+ def test_valid_document
17
+ @rels = Axlsx::Relationships.new
18
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::RELS_XSD))
19
+ doc = Nokogiri::XML(@rels.to_xml_string)
20
+ errors = []
21
+ schema.validate(doc).each do |error|
22
+ puts error.message
23
+ errors << error
24
+ end
25
+
26
+ @rels << Axlsx::Relationship.new(nil, Axlsx::WORKSHEET_R, "bar")
27
+ doc = Nokogiri::XML(@rels.to_xml_string)
28
+ errors = []
29
+ schema.validate(doc).each do |error|
30
+ puts error.message
31
+ errors << error
32
+ end
33
+
34
+ assert(errors.size == 0)
35
+ end
36
+
37
+ end
@@ -1,37 +1,37 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestBorder < Test::Unit::TestCase
4
- def setup
5
- @b = Axlsx::Border.new
6
- end
7
- def teardown
8
- end
9
- def test_initialiation
10
- assert_equal(@b.diagonalUp, nil)
11
- assert_equal(@b.diagonalDown, nil)
12
- assert_equal(@b.outline, nil)
13
- assert(@b.prs.is_a?(Axlsx::SimpleTypedList))
14
- end
15
-
16
- def test_diagonalUp
17
- assert_raise(ArgumentError) { @b.diagonalUp = :red }
18
- assert_nothing_raised { @b.diagonalUp = true }
19
- assert_equal(@b.diagonalUp, true )
20
- end
21
-
22
- def test_diagonalDown
23
- assert_raise(ArgumentError) { @b.diagonalDown = :red }
24
- assert_nothing_raised { @b.diagonalDown = true }
25
- assert_equal(@b.diagonalDown, true )
26
- end
27
-
28
- def test_outline
29
- assert_raise(ArgumentError) { @b.outline = :red }
30
- assert_nothing_raised { @b.outline = true }
31
- assert_equal(@b.outline, true )
32
- end
33
-
34
- def test_prs
35
- assert_nothing_raised { @b.prs << Axlsx::BorderPr.new(:name=>:top, :style=>:thin, :color => Axlsx::Color.new(:rgb=>"FF0000FF")) }
36
- end
37
- end
1
+ require 'tc_helper.rb'
2
+
3
+ class TestBorder < Test::Unit::TestCase
4
+ def setup
5
+ @b = Axlsx::Border.new
6
+ end
7
+ def teardown
8
+ end
9
+ def test_initialiation
10
+ assert_equal(@b.diagonalUp, nil)
11
+ assert_equal(@b.diagonalDown, nil)
12
+ assert_equal(@b.outline, nil)
13
+ assert(@b.prs.is_a?(Axlsx::SimpleTypedList))
14
+ end
15
+
16
+ def test_diagonalUp
17
+ assert_raise(ArgumentError) { @b.diagonalUp = :red }
18
+ assert_nothing_raised { @b.diagonalUp = true }
19
+ assert_equal(@b.diagonalUp, true )
20
+ end
21
+
22
+ def test_diagonalDown
23
+ assert_raise(ArgumentError) { @b.diagonalDown = :red }
24
+ assert_nothing_raised { @b.diagonalDown = true }
25
+ assert_equal(@b.diagonalDown, true )
26
+ end
27
+
28
+ def test_outline
29
+ assert_raise(ArgumentError) { @b.outline = :red }
30
+ assert_nothing_raised { @b.outline = true }
31
+ assert_equal(@b.outline, true )
32
+ end
33
+
34
+ def test_prs
35
+ assert_nothing_raised { @b.prs << Axlsx::BorderPr.new(:name=>:top, :style=>:thin, :color => Axlsx::Color.new(:rgb=>"FF0000FF")) }
36
+ end
37
+ end
@@ -1,32 +1,32 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestBorderPr < Test::Unit::TestCase
4
- def setup
5
- @bpr = Axlsx::BorderPr.new
6
- end
7
- def teardown
8
- end
9
- def test_initialiation
10
- assert_equal(@bpr.color, nil)
11
- assert_equal(@bpr.style, nil)
12
- assert_equal(@bpr.name, nil)
13
- end
14
-
15
- def test_color
16
- assert_raise(ArgumentError) { @bpr.color = :red }
17
- assert_nothing_raised { @bpr.color = Axlsx::Color.new :rgb=>"FF000000" }
18
- assert(@bpr.color.is_a?(Axlsx::Color))
19
- end
20
-
21
- def test_style
22
- assert_raise(ArgumentError) { @bpr.style = :red }
23
- assert_nothing_raised { @bpr.style = :thin }
24
- assert_equal(@bpr.style, :thin)
25
- end
26
-
27
- def test_name
28
- assert_raise(ArgumentError) { @bpr.name = :red }
29
- assert_nothing_raised { @bpr.name = :top }
30
- assert_equal(@bpr.name, :top)
31
- end
32
- end
1
+ require 'tc_helper.rb'
2
+
3
+ class TestBorderPr < Test::Unit::TestCase
4
+ def setup
5
+ @bpr = Axlsx::BorderPr.new
6
+ end
7
+ def teardown
8
+ end
9
+ def test_initialiation
10
+ assert_equal(@bpr.color, nil)
11
+ assert_equal(@bpr.style, nil)
12
+ assert_equal(@bpr.name, nil)
13
+ end
14
+
15
+ def test_color
16
+ assert_raise(ArgumentError) { @bpr.color = :red }
17
+ assert_nothing_raised { @bpr.color = Axlsx::Color.new :rgb=>"FF000000" }
18
+ assert(@bpr.color.is_a?(Axlsx::Color))
19
+ end
20
+
21
+ def test_style
22
+ assert_raise(ArgumentError) { @bpr.style = :red }
23
+ assert_nothing_raised { @bpr.style = :thin }
24
+ assert_equal(@bpr.style, :thin)
25
+ end
26
+
27
+ def test_name
28
+ assert_raise(ArgumentError) { @bpr.name = :red }
29
+ assert_nothing_raised { @bpr.name = :top }
30
+ assert_equal(@bpr.name, :top)
31
+ end
32
+ end