caxlsx 2.0.2

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 (305) hide show
  1. checksums.yaml +7 -0
  2. data/.yardopts +9 -0
  3. data/.yardopts_guide +19 -0
  4. data/CHANGELOG.md +239 -0
  5. data/LICENSE +22 -0
  6. data/README.md +256 -0
  7. data/Rakefile +31 -0
  8. data/examples/2010_comments.rb +17 -0
  9. data/examples/anchor_swapping.rb +28 -0
  10. data/examples/auto_filter.rb +16 -0
  11. data/examples/basic_charts.rb +58 -0
  12. data/examples/chart_colors.rb +88 -0
  13. data/examples/colored_links.rb +59 -0
  14. data/examples/conditional_formatting/example_conditional_formatting.rb +74 -0
  15. data/examples/conditional_formatting/getting_barred.rb +37 -0
  16. data/examples/conditional_formatting/hitting_the_high_notes.rb +37 -0
  17. data/examples/conditional_formatting/scaled_colors.rb +39 -0
  18. data/examples/conditional_formatting/stop_and_go.rb +37 -0
  19. data/examples/data_validation.rb +50 -0
  20. data/examples/example.rb +777 -0
  21. data/examples/extractive.rb +45 -0
  22. data/examples/image1.jpeg +0 -0
  23. data/examples/ios_preview.rb +14 -0
  24. data/examples/page_setup.rb +11 -0
  25. data/examples/pivot_table.rb +39 -0
  26. data/examples/sheet_protection.rb +10 -0
  27. data/examples/skydrive/real_example.rb +63 -0
  28. data/examples/styles.rb +66 -0
  29. data/examples/underline.rb +13 -0
  30. data/examples/wrap_text.rb +21 -0
  31. data/lib/axlsx.rb +152 -0
  32. data/lib/axlsx/content_type/abstract_content_type.rb +32 -0
  33. data/lib/axlsx/content_type/content_type.rb +26 -0
  34. data/lib/axlsx/content_type/default.rb +25 -0
  35. data/lib/axlsx/content_type/override.rb +25 -0
  36. data/lib/axlsx/doc_props/app.rb +235 -0
  37. data/lib/axlsx/doc_props/core.rb +39 -0
  38. data/lib/axlsx/drawing/ax_data_source.rb +26 -0
  39. data/lib/axlsx/drawing/axes.rb +61 -0
  40. data/lib/axlsx/drawing/axis.rb +187 -0
  41. data/lib/axlsx/drawing/bar_3D_chart.rb +151 -0
  42. data/lib/axlsx/drawing/bar_series.rb +82 -0
  43. data/lib/axlsx/drawing/cat_axis.rb +85 -0
  44. data/lib/axlsx/drawing/chart.rb +232 -0
  45. data/lib/axlsx/drawing/d_lbls.rb +90 -0
  46. data/lib/axlsx/drawing/drawing.rb +162 -0
  47. data/lib/axlsx/drawing/graphic_frame.rb +54 -0
  48. data/lib/axlsx/drawing/hyperlink.rb +102 -0
  49. data/lib/axlsx/drawing/line_3D_chart.rb +68 -0
  50. data/lib/axlsx/drawing/line_chart.rb +99 -0
  51. data/lib/axlsx/drawing/line_series.rb +81 -0
  52. data/lib/axlsx/drawing/marker.rb +84 -0
  53. data/lib/axlsx/drawing/num_data.rb +52 -0
  54. data/lib/axlsx/drawing/num_data_source.rb +62 -0
  55. data/lib/axlsx/drawing/num_val.rb +32 -0
  56. data/lib/axlsx/drawing/one_cell_anchor.rb +98 -0
  57. data/lib/axlsx/drawing/pic.rb +205 -0
  58. data/lib/axlsx/drawing/picture_locking.rb +44 -0
  59. data/lib/axlsx/drawing/pie_3D_chart.rb +48 -0
  60. data/lib/axlsx/drawing/pie_series.rb +74 -0
  61. data/lib/axlsx/drawing/scaling.rb +60 -0
  62. data/lib/axlsx/drawing/scatter_chart.rb +74 -0
  63. data/lib/axlsx/drawing/scatter_series.rb +65 -0
  64. data/lib/axlsx/drawing/ser_axis.rb +45 -0
  65. data/lib/axlsx/drawing/series.rb +69 -0
  66. data/lib/axlsx/drawing/series_title.rb +23 -0
  67. data/lib/axlsx/drawing/str_data.rb +42 -0
  68. data/lib/axlsx/drawing/str_val.rb +32 -0
  69. data/lib/axlsx/drawing/title.rb +78 -0
  70. data/lib/axlsx/drawing/two_cell_anchor.rb +92 -0
  71. data/lib/axlsx/drawing/val_axis.rb +37 -0
  72. data/lib/axlsx/drawing/view_3D.rb +115 -0
  73. data/lib/axlsx/drawing/vml_drawing.rb +42 -0
  74. data/lib/axlsx/drawing/vml_shape.rb +66 -0
  75. data/lib/axlsx/package.rb +352 -0
  76. data/lib/axlsx/rels/relationship.rb +129 -0
  77. data/lib/axlsx/rels/relationships.rb +29 -0
  78. data/lib/axlsx/stylesheet/border.rb +71 -0
  79. data/lib/axlsx/stylesheet/border_pr.rb +71 -0
  80. data/lib/axlsx/stylesheet/cell_alignment.rb +134 -0
  81. data/lib/axlsx/stylesheet/cell_protection.rb +43 -0
  82. data/lib/axlsx/stylesheet/cell_style.rb +74 -0
  83. data/lib/axlsx/stylesheet/color.rb +78 -0
  84. data/lib/axlsx/stylesheet/dxf.rb +79 -0
  85. data/lib/axlsx/stylesheet/fill.rb +35 -0
  86. data/lib/axlsx/stylesheet/font.rb +148 -0
  87. data/lib/axlsx/stylesheet/gradient_fill.rb +103 -0
  88. data/lib/axlsx/stylesheet/gradient_stop.rb +37 -0
  89. data/lib/axlsx/stylesheet/num_fmt.rb +79 -0
  90. data/lib/axlsx/stylesheet/pattern_fill.rb +73 -0
  91. data/lib/axlsx/stylesheet/styles.rb +420 -0
  92. data/lib/axlsx/stylesheet/table_style.rb +54 -0
  93. data/lib/axlsx/stylesheet/table_style_element.rb +79 -0
  94. data/lib/axlsx/stylesheet/table_styles.rb +46 -0
  95. data/lib/axlsx/stylesheet/xf.rb +147 -0
  96. data/lib/axlsx/util/accessors.rb +64 -0
  97. data/lib/axlsx/util/constants.rb +392 -0
  98. data/lib/axlsx/util/options_parser.rb +15 -0
  99. data/lib/axlsx/util/parser.rb +44 -0
  100. data/lib/axlsx/util/serialized_attributes.rb +79 -0
  101. data/lib/axlsx/util/simple_typed_list.rb +203 -0
  102. data/lib/axlsx/util/storage.rb +146 -0
  103. data/lib/axlsx/util/validators.rb +300 -0
  104. data/lib/axlsx/version.rb +5 -0
  105. data/lib/axlsx/workbook/defined_name.rb +129 -0
  106. data/lib/axlsx/workbook/defined_names.rb +21 -0
  107. data/lib/axlsx/workbook/shared_strings_table.rb +77 -0
  108. data/lib/axlsx/workbook/workbook.rb +354 -0
  109. data/lib/axlsx/workbook/worksheet/auto_filter/auto_filter.rb +77 -0
  110. data/lib/axlsx/workbook/worksheet/auto_filter/filter_column.rb +94 -0
  111. data/lib/axlsx/workbook/worksheet/auto_filter/filters.rb +246 -0
  112. data/lib/axlsx/workbook/worksheet/break.rb +37 -0
  113. data/lib/axlsx/workbook/worksheet/cell.rb +416 -0
  114. data/lib/axlsx/workbook/worksheet/cell_serializer.rb +144 -0
  115. data/lib/axlsx/workbook/worksheet/cfvo.rb +62 -0
  116. data/lib/axlsx/workbook/worksheet/cfvos.rb +15 -0
  117. data/lib/axlsx/workbook/worksheet/col.rb +144 -0
  118. data/lib/axlsx/workbook/worksheet/col_breaks.rb +35 -0
  119. data/lib/axlsx/workbook/worksheet/color_scale.rb +110 -0
  120. data/lib/axlsx/workbook/worksheet/cols.rb +20 -0
  121. data/lib/axlsx/workbook/worksheet/comment.rb +92 -0
  122. data/lib/axlsx/workbook/worksheet/comments.rb +85 -0
  123. data/lib/axlsx/workbook/worksheet/conditional_formatting.rb +82 -0
  124. data/lib/axlsx/workbook/worksheet/conditional_formatting_rule.rb +220 -0
  125. data/lib/axlsx/workbook/worksheet/conditional_formattings.rb +25 -0
  126. data/lib/axlsx/workbook/worksheet/data_bar.rb +131 -0
  127. data/lib/axlsx/workbook/worksheet/data_validation.rb +244 -0
  128. data/lib/axlsx/workbook/worksheet/data_validations.rb +28 -0
  129. data/lib/axlsx/workbook/worksheet/date_time_converter.rb +30 -0
  130. data/lib/axlsx/workbook/worksheet/dimension.rb +64 -0
  131. data/lib/axlsx/workbook/worksheet/header_footer.rb +54 -0
  132. data/lib/axlsx/workbook/worksheet/icon_set.rb +83 -0
  133. data/lib/axlsx/workbook/worksheet/merged_cells.rb +35 -0
  134. data/lib/axlsx/workbook/worksheet/page_margins.rb +99 -0
  135. data/lib/axlsx/workbook/worksheet/page_set_up_pr.rb +44 -0
  136. data/lib/axlsx/workbook/worksheet/page_setup.rb +242 -0
  137. data/lib/axlsx/workbook/worksheet/pane.rb +141 -0
  138. data/lib/axlsx/workbook/worksheet/pivot_table.rb +273 -0
  139. data/lib/axlsx/workbook/worksheet/pivot_table_cache_definition.rb +66 -0
  140. data/lib/axlsx/workbook/worksheet/pivot_tables.rb +24 -0
  141. data/lib/axlsx/workbook/worksheet/print_options.rb +41 -0
  142. data/lib/axlsx/workbook/worksheet/protected_range.rb +49 -0
  143. data/lib/axlsx/workbook/worksheet/protected_ranges.rb +34 -0
  144. data/lib/axlsx/workbook/worksheet/row.rb +172 -0
  145. data/lib/axlsx/workbook/worksheet/row_breaks.rb +33 -0
  146. data/lib/axlsx/workbook/worksheet/selection.rb +103 -0
  147. data/lib/axlsx/workbook/worksheet/sheet_calc_pr.rb +29 -0
  148. data/lib/axlsx/workbook/worksheet/sheet_data.rb +25 -0
  149. data/lib/axlsx/workbook/worksheet/sheet_format_pr.rb +60 -0
  150. data/lib/axlsx/workbook/worksheet/sheet_pr.rb +69 -0
  151. data/lib/axlsx/workbook/worksheet/sheet_protection.rb +120 -0
  152. data/lib/axlsx/workbook/worksheet/sheet_view.rb +213 -0
  153. data/lib/axlsx/workbook/worksheet/table.rb +102 -0
  154. data/lib/axlsx/workbook/worksheet/table_style_info.rb +51 -0
  155. data/lib/axlsx/workbook/worksheet/tables.rb +31 -0
  156. data/lib/axlsx/workbook/worksheet/worksheet.rb +769 -0
  157. data/lib/axlsx/workbook/worksheet/worksheet_comments.rb +58 -0
  158. data/lib/axlsx/workbook/worksheet/worksheet_drawing.rb +58 -0
  159. data/lib/axlsx/workbook/worksheet/worksheet_hyperlink.rb +74 -0
  160. data/lib/axlsx/workbook/worksheet/worksheet_hyperlinks.rb +38 -0
  161. data/lib/schema/dc.xsd +118 -0
  162. data/lib/schema/dcmitype.xsd +52 -0
  163. data/lib/schema/dcterms.xsd +331 -0
  164. data/lib/schema/dml-chart.xsd +1499 -0
  165. data/lib/schema/dml-chartDrawing.xsd +146 -0
  166. data/lib/schema/dml-compatibility.xsd +14 -0
  167. data/lib/schema/dml-diagram.xsd +1091 -0
  168. data/lib/schema/dml-lockedCanvas.xsd +11 -0
  169. data/lib/schema/dml-main.xsd +3048 -0
  170. data/lib/schema/dml-picture.xsd +23 -0
  171. data/lib/schema/dml-spreadsheetDrawing.xsd +185 -0
  172. data/lib/schema/dml-wordprocessingDrawing.xsd +185 -0
  173. data/lib/schema/opc-contentTypes.xsd +42 -0
  174. data/lib/schema/opc-coreProperties.xsd +54 -0
  175. data/lib/schema/opc-digSig.xsd +49 -0
  176. data/lib/schema/opc-relationships.xsd +33 -0
  177. data/lib/schema/pml.xsd +1676 -0
  178. data/lib/schema/shared-additionalCharacteristics.xsd +28 -0
  179. data/lib/schema/shared-bibliography.xsd +144 -0
  180. data/lib/schema/shared-commonSimpleTypes.xsd +166 -0
  181. data/lib/schema/shared-customXmlDataProperties.xsd +25 -0
  182. data/lib/schema/shared-customXmlSchemaProperties.xsd +18 -0
  183. data/lib/schema/shared-documentPropertiesCustom.xsd +59 -0
  184. data/lib/schema/shared-documentPropertiesExtended.xsd +56 -0
  185. data/lib/schema/shared-documentPropertiesVariantTypes.xsd +195 -0
  186. data/lib/schema/shared-math.xsd +582 -0
  187. data/lib/schema/shared-relationshipReference.xsd +25 -0
  188. data/lib/schema/sml.xsd +4434 -0
  189. data/lib/schema/vml-main.xsd +569 -0
  190. data/lib/schema/vml-officeDrawing.xsd +509 -0
  191. data/lib/schema/vml-presentationDrawing.xsd +12 -0
  192. data/lib/schema/vml-spreadsheetDrawing.xsd +108 -0
  193. data/lib/schema/vml-wordprocessingDrawing.xsd +96 -0
  194. data/lib/schema/wml.xsd +3644 -0
  195. data/lib/schema/xml.xsd +116 -0
  196. data/test/benchmark.rb +72 -0
  197. data/test/content_type/tc_content_type.rb +76 -0
  198. data/test/content_type/tc_default.rb +16 -0
  199. data/test/content_type/tc_override.rb +14 -0
  200. data/test/doc_props/tc_app.rb +43 -0
  201. data/test/doc_props/tc_core.rb +42 -0
  202. data/test/drawing/tc_axes.rb +8 -0
  203. data/test/drawing/tc_axis.rb +85 -0
  204. data/test/drawing/tc_bar_3D_chart.rb +71 -0
  205. data/test/drawing/tc_bar_series.rb +37 -0
  206. data/test/drawing/tc_cat_axis.rb +31 -0
  207. data/test/drawing/tc_cat_axis_data.rb +27 -0
  208. data/test/drawing/tc_chart.rb +110 -0
  209. data/test/drawing/tc_d_lbls.rb +57 -0
  210. data/test/drawing/tc_data_source.rb +17 -0
  211. data/test/drawing/tc_drawing.rb +80 -0
  212. data/test/drawing/tc_graphic_frame.rb +27 -0
  213. data/test/drawing/tc_hyperlink.rb +64 -0
  214. data/test/drawing/tc_line_3d_chart.rb +47 -0
  215. data/test/drawing/tc_line_chart.rb +39 -0
  216. data/test/drawing/tc_line_series.rb +30 -0
  217. data/test/drawing/tc_marker.rb +44 -0
  218. data/test/drawing/tc_named_axis_data.rb +27 -0
  219. data/test/drawing/tc_num_data.rb +31 -0
  220. data/test/drawing/tc_num_val.rb +29 -0
  221. data/test/drawing/tc_one_cell_anchor.rb +66 -0
  222. data/test/drawing/tc_pic.rb +107 -0
  223. data/test/drawing/tc_picture_locking.rb +72 -0
  224. data/test/drawing/tc_pie_3D_chart.rb +28 -0
  225. data/test/drawing/tc_pie_series.rb +32 -0
  226. data/test/drawing/tc_scaling.rb +36 -0
  227. data/test/drawing/tc_scatter_chart.rb +48 -0
  228. data/test/drawing/tc_scatter_series.rb +21 -0
  229. data/test/drawing/tc_ser_axis.rb +31 -0
  230. data/test/drawing/tc_series.rb +23 -0
  231. data/test/drawing/tc_series_title.rb +33 -0
  232. data/test/drawing/tc_str_data.rb +18 -0
  233. data/test/drawing/tc_str_val.rb +21 -0
  234. data/test/drawing/tc_title.rb +49 -0
  235. data/test/drawing/tc_two_cell_anchor.rb +36 -0
  236. data/test/drawing/tc_val_axis.rb +24 -0
  237. data/test/drawing/tc_view_3D.rb +54 -0
  238. data/test/drawing/tc_vml_drawing.rb +25 -0
  239. data/test/drawing/tc_vml_shape.rb +106 -0
  240. data/test/profile.rb +24 -0
  241. data/test/rels/tc_relationship.rb +44 -0
  242. data/test/rels/tc_relationships.rb +37 -0
  243. data/test/stylesheet/tc_border.rb +37 -0
  244. data/test/stylesheet/tc_border_pr.rb +32 -0
  245. data/test/stylesheet/tc_cell_alignment.rb +81 -0
  246. data/test/stylesheet/tc_cell_protection.rb +29 -0
  247. data/test/stylesheet/tc_cell_style.rb +57 -0
  248. data/test/stylesheet/tc_color.rb +43 -0
  249. data/test/stylesheet/tc_dxf.rb +81 -0
  250. data/test/stylesheet/tc_fill.rb +18 -0
  251. data/test/stylesheet/tc_font.rb +121 -0
  252. data/test/stylesheet/tc_gradient_fill.rb +72 -0
  253. data/test/stylesheet/tc_gradient_stop.rb +31 -0
  254. data/test/stylesheet/tc_num_fmt.rb +30 -0
  255. data/test/stylesheet/tc_pattern_fill.rb +43 -0
  256. data/test/stylesheet/tc_styles.rb +235 -0
  257. data/test/stylesheet/tc_table_style.rb +44 -0
  258. data/test/stylesheet/tc_table_style_element.rb +45 -0
  259. data/test/stylesheet/tc_table_styles.rb +29 -0
  260. data/test/stylesheet/tc_xf.rb +120 -0
  261. data/test/tc_axlsx.rb +72 -0
  262. data/test/tc_helper.rb +10 -0
  263. data/test/tc_package.rb +227 -0
  264. data/test/util/tc_serialized_attributes.rb +19 -0
  265. data/test/util/tc_simple_typed_list.rb +78 -0
  266. data/test/util/tc_validators.rb +186 -0
  267. data/test/workbook/tc_defined_name.rb +41 -0
  268. data/test/workbook/tc_shared_strings_table.rb +44 -0
  269. data/test/workbook/tc_workbook.rb +125 -0
  270. data/test/workbook/worksheet/auto_filter/tc_auto_filter.rb +38 -0
  271. data/test/workbook/worksheet/auto_filter/tc_filter_column.rb +76 -0
  272. data/test/workbook/worksheet/auto_filter/tc_filters.rb +50 -0
  273. data/test/workbook/worksheet/tc_break.rb +49 -0
  274. data/test/workbook/worksheet/tc_cell.rb +319 -0
  275. data/test/workbook/worksheet/tc_cfvo.rb +31 -0
  276. data/test/workbook/worksheet/tc_col.rb +78 -0
  277. data/test/workbook/worksheet/tc_color_scale.rb +58 -0
  278. data/test/workbook/worksheet/tc_comment.rb +72 -0
  279. data/test/workbook/worksheet/tc_comments.rb +57 -0
  280. data/test/workbook/worksheet/tc_conditional_formatting.rb +224 -0
  281. data/test/workbook/worksheet/tc_data_bar.rb +46 -0
  282. data/test/workbook/worksheet/tc_data_validation.rb +265 -0
  283. data/test/workbook/worksheet/tc_date_time_converter.rb +124 -0
  284. data/test/workbook/worksheet/tc_header_footer.rb +151 -0
  285. data/test/workbook/worksheet/tc_icon_set.rb +45 -0
  286. data/test/workbook/worksheet/tc_page_margins.rb +97 -0
  287. data/test/workbook/worksheet/tc_page_set_up_pr.rb +15 -0
  288. data/test/workbook/worksheet/tc_page_setup.rb +143 -0
  289. data/test/workbook/worksheet/tc_pane.rb +54 -0
  290. data/test/workbook/worksheet/tc_pivot_table.rb +120 -0
  291. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +54 -0
  292. data/test/workbook/worksheet/tc_print_options.rb +72 -0
  293. data/test/workbook/worksheet/tc_protected_range.rb +17 -0
  294. data/test/workbook/worksheet/tc_row.rb +117 -0
  295. data/test/workbook/worksheet/tc_selection.rb +55 -0
  296. data/test/workbook/worksheet/tc_sheet_calc_pr.rb +18 -0
  297. data/test/workbook/worksheet/tc_sheet_format_pr.rb +88 -0
  298. data/test/workbook/worksheet/tc_sheet_pr.rb +27 -0
  299. data/test/workbook/worksheet/tc_sheet_protection.rb +117 -0
  300. data/test/workbook/worksheet/tc_sheet_view.rb +214 -0
  301. data/test/workbook/worksheet/tc_table.rb +68 -0
  302. data/test/workbook/worksheet/tc_table_style_info.rb +53 -0
  303. data/test/workbook/worksheet/tc_worksheet.rb +538 -0
  304. data/test/workbook/worksheet/tc_worksheet_hyperlink.rb +55 -0
  305. metadata +546 -0
@@ -0,0 +1,71 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestBar3DChart < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @p = Axlsx::Package.new
7
+ ws = @p.workbook.add_worksheet
8
+ @row = ws.add_row ["one", 1, Time.now]
9
+ @chart = ws.add_chart Axlsx::Bar3DChart, :title => "fishery"
10
+ end
11
+
12
+ def teardown
13
+ end
14
+
15
+ def test_initialization
16
+ assert_equal(@chart.grouping, :clustered, "grouping defualt incorrect")
17
+ assert_equal(@chart.series_type, Axlsx::BarSeries, "series type incorrect")
18
+ assert_equal(@chart.bar_dir, :bar, " bar direction incorrect")
19
+ assert(@chart.cat_axis.is_a?(Axlsx::CatAxis), "category axis not created")
20
+ assert(@chart.val_axis.is_a?(Axlsx::ValAxis), "value access not created")
21
+ end
22
+
23
+ def test_bar_direction
24
+ assert_raise(ArgumentError, "require valid bar direction") { @chart.bar_dir = :left }
25
+ assert_nothing_raised("allow valid bar direction") { @chart.bar_dir = :col }
26
+ assert(@chart.bar_dir == :col)
27
+ end
28
+
29
+ def test_grouping
30
+ assert_raise(ArgumentError, "require valid grouping") { @chart.grouping = :inverted }
31
+ assert_nothing_raised("allow valid grouping") { @chart.grouping = :standard }
32
+ assert(@chart.grouping == :standard)
33
+ end
34
+
35
+
36
+ def test_gapWidth
37
+ assert_raise(ArgumentError, "require valid gap width") { @chart.gap_width = 200 }
38
+ assert_nothing_raised("allow valid gapWidth") { @chart.gap_width = "200%" }
39
+ assert(@chart.gap_width == "200%")
40
+ end
41
+
42
+ def test_gapDepth
43
+ assert_raise(ArgumentError, "require valid gap_depth") { @chart.gap_depth = 200 }
44
+ assert_nothing_raised("allow valid gap_depth") { @chart.gap_depth = "200%" }
45
+ assert(@chart.gap_depth == "200%")
46
+ end
47
+
48
+ def test_shape
49
+ assert_raise(ArgumentError, "require valid shape") { @chart.shape = :star }
50
+ assert_nothing_raised("allow valid shape") { @chart.shape = :cone }
51
+ assert(@chart.shape == :cone)
52
+ end
53
+
54
+ def test_to_xml_string
55
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
56
+ doc = Nokogiri::XML(@chart.to_xml_string)
57
+ errors = []
58
+ schema.validate(doc).each do |error|
59
+ errors.push error
60
+ puts error.message
61
+ end
62
+ assert(errors.empty?, "error free validation")
63
+ end
64
+
65
+ def test_to_xml_string_has_axes_in_correct_order
66
+ str = @chart.to_xml_string
67
+ cat_axis_position = str.index(@chart.axes[:cat_axis].id.to_s)
68
+ val_axis_position = str.index(@chart.axes[:val_axis].id.to_s)
69
+ assert(cat_axis_position < val_axis_position, "cat_axis must occur earlier than val_axis in the XML")
70
+ end
71
+ end
@@ -0,0 +1,37 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestBarSeries < Test::Unit::TestCase
4
+
5
+ def setup
6
+ p = Axlsx::Package.new
7
+ @ws = p.workbook.add_worksheet :name=>"hmmm"
8
+ @chart = @ws.add_chart Axlsx::Bar3DChart, :title => "fishery"
9
+ @series = @chart.add_series :data=>[0,1,2], :labels=>["zero", "one", "two"], :title=>"bob", :colors => ['FF0000', '00FF00', '0000FF'], :shape => :cone
10
+ end
11
+
12
+ def test_initialize
13
+ assert_equal(@series.title.text, "bob", "series title has been applied")
14
+ assert_equal(@series.data.class, Axlsx::NumDataSource, "data option applied")
15
+ assert_equal(@series.shape, :cone, "series shape has been applied")
16
+ assert(@series.data.is_a?(Axlsx::NumDataSource))
17
+ assert(@series.labels.is_a?(Axlsx::AxDataSource))
18
+ end
19
+
20
+ def test_colors
21
+ assert_equal(@series.colors.size, 3)
22
+ end
23
+
24
+ def test_shape
25
+ assert_raise(ArgumentError, "require valid shape") { @series.shape = :teardropt }
26
+ assert_nothing_raised("allow valid shape") { @series.shape = :box }
27
+ assert(@series.shape == :box)
28
+ end
29
+
30
+ def test_to_xml_string
31
+ doc = Nokogiri::XML(@chart.to_xml_string)
32
+ @series.colors.each_with_index do |color, index|
33
+ assert_equal(doc.xpath("//c:dPt/c:idx[@val='#{index}']").size,1)
34
+ assert_equal(doc.xpath("//c:dPt/c:spPr/a:solidFill/a:srgbClr[@val='#{@series.colors[index]}']").size,1)
35
+ end
36
+ end
37
+ end
@@ -0,0 +1,31 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestCatAxis < Test::Unit::TestCase
4
+ def setup
5
+ @axis = Axlsx::CatAxis.new
6
+ end
7
+ def teardown
8
+ end
9
+
10
+ def test_initialization
11
+ assert_equal(@axis.auto, 1, "axis auto default incorrect")
12
+ assert_equal(@axis.lbl_algn, :ctr, "label align default incorrect")
13
+ assert_equal(@axis.lbl_offset, "100", "label offset default incorrect")
14
+ end
15
+
16
+ def test_auto
17
+ assert_raise(ArgumentError, "requires valid auto") { @axis.auto = :nowhere }
18
+ assert_nothing_raised("accepts valid auto") { @axis.auto = false }
19
+ end
20
+
21
+ def test_lbl_algn
22
+ assert_raise(ArgumentError, "requires valid label alignment") { @axis.lbl_algn = :nowhere }
23
+ assert_nothing_raised("accepts valid label alignment") { @axis.lbl_algn = :r }
24
+ end
25
+
26
+ def test_lbl_offset
27
+ assert_raise(ArgumentError, "requires valid label offset") { @axis.lbl_offset = 'foo' }
28
+ assert_nothing_raised("accepts valid label offset") { @axis.lbl_offset = "20" }
29
+ end
30
+
31
+ end
@@ -0,0 +1,27 @@
1
+ # require 'tc_helper.rb'
2
+
3
+ # class TestCatAxisData < Test::Unit::TestCase
4
+
5
+ # def setup
6
+ # p = Axlsx::Package.new
7
+ # @ws = p.workbook.add_worksheet
8
+ # @chart = @ws.drawing.add_chart Axlsx::Bar3DChart
9
+ # @series = @chart.add_series :labels=>["zero", "one", "two"]
10
+ # end
11
+
12
+ # def test_initialize
13
+ # assert(@series.labels.is_a?Axlsx::SimpleTypedList)
14
+ # assert_equal(@series.labels, ["zero", "one", "two"])
15
+ # end
16
+
17
+ # def test_to_xml_string
18
+ # doc = Nokogiri::XML(@chart.to_xml_string)
19
+ # assert_equal(doc.xpath("//c:cat/c:strRef/c:f").size,1)
20
+ # assert_equal(doc.xpath("//c:strCache/c:ptCount[@val='#{@series.labels.size}']").size,1)
21
+ # @series.labels.each_with_index do |label, index|
22
+ # assert_equal(doc.xpath("//c:strCache/c:pt[@idx='#{index}']").size,1)
23
+ # assert_equal(doc.xpath("//c:strCache/c:pt/c:v[text()='#{label}']").size,1)
24
+ # end
25
+ # end
26
+
27
+ # end
@@ -0,0 +1,110 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestChart < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @p = Axlsx::Package.new
7
+ ws = @p.workbook.add_worksheet
8
+ @row = ws.add_row ["one", 1, Time.now]
9
+ @chart = ws.add_chart Axlsx::Bar3DChart, :title => "fishery"
10
+ end
11
+
12
+ def teardown
13
+ end
14
+
15
+ def test_initialization
16
+ assert_equal(@p.workbook.charts.last,@chart, "the chart is in the workbook")
17
+ assert_equal(@chart.title.text, "fishery", "the title option has been applied")
18
+ assert((@chart.series.is_a?(Axlsx::SimpleTypedList) && @chart.series.empty?), "The series is initialized and empty")
19
+ end
20
+
21
+ def test_title
22
+ @chart.title.text = 'wowzer'
23
+ assert_equal(@chart.title.text, "wowzer", "the title text via a string")
24
+ assert_equal(@chart.title.cell, nil, "the title cell is nil as we set the title with text.")
25
+ @chart.title = @row.cells.first
26
+ assert_equal(@chart.title.text, "one", "the title text was set via cell reference")
27
+ assert_equal(@chart.title.cell, @row.cells.first)
28
+ end
29
+
30
+ def test_to_from_marker_access
31
+ assert(@chart.to.is_a?(Axlsx::Marker))
32
+ assert(@chart.from.is_a?(Axlsx::Marker))
33
+ end
34
+
35
+ def test_style
36
+ assert_raise(ArgumentError) { @chart.style = 49 }
37
+ assert_nothing_raised { @chart.style = 2 }
38
+ assert_equal(@chart.style, 2)
39
+ end
40
+
41
+ def test_vary_colors
42
+ assert_equal(true, @chart.vary_colors)
43
+ assert_raise(ArgumentError) { @chart.vary_colors = 7 }
44
+ assert_nothing_raised { @chart.vary_colors = false }
45
+ assert_equal(false, @chart.vary_colors)
46
+ end
47
+
48
+ def test_display_blanks_as
49
+ assert_equal(:gap, @chart.display_blanks_as, "default is not :gap")
50
+ assert_raise(ArgumentError, "did not validate possible values") { @chart.display_blanks_as = :hole }
51
+ assert_nothing_raised { @chart.display_blanks_as = :zero }
52
+ assert_nothing_raised { @chart.display_blanks_as = :span }
53
+ assert_equal(:span, @chart.display_blanks_as)
54
+ end
55
+
56
+ def test_start_at
57
+ @chart.start_at 15, 25
58
+ assert_equal(@chart.graphic_frame.anchor.from.col, 15)
59
+ assert_equal(@chart.graphic_frame.anchor.from.row, 25)
60
+ @chart.start_at @row.cells.first
61
+ assert_equal(@chart.graphic_frame.anchor.from.col, 0)
62
+ assert_equal(@chart.graphic_frame.anchor.from.row, 0)
63
+ @chart.start_at [5,6]
64
+ assert_equal(@chart.graphic_frame.anchor.from.col, 5)
65
+ assert_equal(@chart.graphic_frame.anchor.from.row, 6)
66
+
67
+ end
68
+
69
+ def test_end_at
70
+ @chart.end_at 25, 90
71
+ assert_equal(@chart.graphic_frame.anchor.to.col, 25)
72
+ assert_equal(@chart.graphic_frame.anchor.to.row, 90)
73
+ @chart.end_at @row.cells.last
74
+ assert_equal(@chart.graphic_frame.anchor.to.col, 2)
75
+ assert_equal(@chart.graphic_frame.anchor.to.row, 0)
76
+ @chart.end_at [10,11]
77
+ assert_equal(@chart.graphic_frame.anchor.to.col, 10)
78
+ assert_equal(@chart.graphic_frame.anchor.to.row, 11)
79
+
80
+ end
81
+
82
+ def test_add_series
83
+ s = @chart.add_series :data=>[0,1,2,3], :labels => ["one", 1, "anything"], :title=>"bob"
84
+ assert_equal(@chart.series.last, s, "series has been added to chart series collection")
85
+ assert_equal(s.title.text, "bob", "series title has been applied")
86
+ end
87
+
88
+ def test_pn
89
+ assert_equal(@chart.pn, "charts/chart1.xml")
90
+ end
91
+
92
+ def test_d_lbls
93
+ assert_equal(nil, @chart.instance_values[:d_lbls])
94
+ @chart.d_lbls.d_lbl_pos = :t
95
+ assert(@chart.d_lbls.is_a?(Axlsx::DLbls), 'DLbls instantiated on access')
96
+ end
97
+
98
+ def test_to_xml_string
99
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
100
+ doc = Nokogiri::XML(@chart.to_xml_string)
101
+ errors = schema.validate(doc).map { |error| puts error.message; error }
102
+ assert(errors.empty?, "error free validation")
103
+ end
104
+
105
+ def test_to_xml_string_for_display_blanks_as
106
+ @chart.display_blanks_as = :span
107
+ doc = Nokogiri::XML(@chart.to_xml_string)
108
+ assert_equal("span", doc.xpath("//c:dispBlanksAs").attr("val").value, "did not use the display_blanks_as configuration")
109
+ end
110
+ end
@@ -0,0 +1,57 @@
1
+ require 'tc_helper'
2
+
3
+ class TestDLbls < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @d_lbls = Axlsx::DLbls.new(Axlsx::Pie3DChart)
7
+ @boolean_attributes =[:show_legend_key,
8
+ :show_val,
9
+ :show_cat_name,
10
+ :show_ser_name,
11
+ :show_percent,
12
+ :show_bubble_size,
13
+ :show_leader_lines]
14
+ end
15
+
16
+ def test_initialization
17
+ assert_equal(:bestFit, @d_lbls.d_lbl_pos)
18
+ @boolean_attributes.each do |attr|
19
+ assert_equal(false, @d_lbls.send(attr))
20
+ end
21
+ end
22
+
23
+ def test_initialization_with_optoins
24
+
25
+ options_hash = Hash[*[@boolean_attributes.map { |name| [name, true] }] ]
26
+
27
+ d_lbls = Axlsx::DLbls.new(Axlsx::Pie3DChart, options_hash.merge( { :d_lbl_pos => :t }))
28
+
29
+ @boolean_attributes.each do |attr|
30
+ assert_equal(true, d_lbls.send(attr), "boolean attributes set by options")
31
+ end
32
+ assert_equal(:t, d_lbls.d_lbl_pos, "d_lbl_pos set by options")
33
+ end
34
+ def test_d_lbl_pos
35
+ assert_raise(ArgumentError, 'invlaid label positions are rejected') { @d_lbls.d_lbl_pos = :upside_down }
36
+ assert_nothing_raised('accepts valid label position') { @d_lbls.d_lbl_pos = :ctr }
37
+ end
38
+
39
+ def test_boolean_attributes
40
+ @boolean_attributes.each do |attr|
41
+ assert_raise(ArgumentError, "rejects non boolean value for #{attr}") { @d_lbls.send("#{attr}=", :foo) }
42
+ assert_nothing_raised("accepts boolean value for #{attr}") { @d_lbls.send("#{attr}=", true) }
43
+ assert_nothing_raised("accepts boolean value for #{attr}") { @d_lbls.send("#{attr}=", false) }
44
+ end
45
+ end
46
+
47
+ def test_to_xml_string
48
+ str = '<?xml version="1.0" encoding="UTF-8"?>'
49
+ str << '<c:chartSpace xmlns:c="' << Axlsx::XML_NS_C << '" xmlns:a="' << Axlsx::XML_NS_A << '" xmlns:r="' << Axlsx::XML_NS_R << '">'
50
+ @d_lbls.to_xml_string(str)
51
+ str << '</c:chartSpace>'
52
+ doc = Nokogiri::XML(str)
53
+ @d_lbls.instance_values.each do |name, value|
54
+ assert(doc.xpath("//c:#{Axlsx::camel(name, false)}[@val='#{value}']"), "#{name} is properly serialized")
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,17 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestNumDataSource < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @data_source = Axlsx::NumDataSource.new :data => ["1", "2", "3"]
7
+ end
8
+
9
+ def test_to_xml_string_strLit
10
+ str = '<?xml version="1.0" encoding="UTF-8"?>'
11
+ str << '<c:chartSpace xmlns:c="' << Axlsx::XML_NS_C << '">'
12
+ str << @data_source.to_xml_string
13
+ doc = Nokogiri::XML(str)
14
+ assert_equal(doc.xpath("//c:val").size, 1)
15
+ end
16
+
17
+ end
@@ -0,0 +1,80 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestDrawing < Test::Unit::TestCase
4
+ def setup
5
+ p = Axlsx::Package.new
6
+ @ws = p.workbook.add_worksheet
7
+
8
+ end
9
+
10
+ def test_initialization
11
+ assert(@ws.workbook.drawings.empty?)
12
+ end
13
+
14
+ def test_add_chart
15
+ chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"bob", :start_at=>[0,0], :end_at=>[1,1])
16
+ assert(chart.is_a?(Axlsx::Pie3DChart), "must create a chart")
17
+ assert_equal(@ws.workbook.charts.last, chart, "must be added to workbook charts collection")
18
+ assert_equal(@ws.drawing.anchors.last.object.chart, chart, "an anchor has been created and holds a reference to this chart")
19
+ anchor = @ws.drawing.anchors.last
20
+ assert_equal([anchor.from.row, anchor.from.col], [0,0], "options for start at are applied")
21
+ assert_equal([anchor.to.row, anchor.to.col], [1,1], "options for start at are applied")
22
+ assert_equal(chart.title.text, "bob", "option for title is applied")
23
+ end
24
+
25
+ def test_add_image
26
+ src = File.dirname(__FILE__) + "/../../examples/image1.jpeg"
27
+ image = @ws.add_image(:image_src => src, :start_at=>[0,0], :width=>600, :height=>400)
28
+ assert(@ws.drawing.anchors.last.is_a?(Axlsx::OneCellAnchor))
29
+ assert(image.is_a?(Axlsx::Pic))
30
+ assert_equal(600, image.width)
31
+ assert_equal(400, image.height)
32
+ end
33
+ def test_add_two_cell_anchor_image
34
+ src = File.dirname(__FILE__) + "/../../examples/image1.jpeg"
35
+ image = @ws.add_image(:image_src => src, :start_at=>[0,0], :end_at => [15,0])
36
+ assert(@ws.drawing.anchors.last.is_a?(Axlsx::TwoCellAnchor))
37
+ assert(image.is_a?(Axlsx::Pic))
38
+ end
39
+ def test_charts
40
+ chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"bob", :start_at=>[0,0], :end_at=>[1,1])
41
+ assert_equal(@ws.drawing.charts.last, chart, "add chart is returned")
42
+ chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"nancy", :start_at=>[1,5], :end_at=>[5,10])
43
+ assert_equal(@ws.drawing.charts.last, chart, "add chart is returned")
44
+ end
45
+
46
+ def test_pn
47
+ @ws.add_chart(Axlsx::Pie3DChart)
48
+ assert_equal(@ws.drawing.pn, "drawings/drawing1.xml")
49
+ end
50
+
51
+ def test_rels_pn
52
+ @ws.add_chart(Axlsx::Pie3DChart)
53
+ assert_equal(@ws.drawing.rels_pn, "drawings/_rels/drawing1.xml.rels")
54
+ end
55
+
56
+ def test_index
57
+ @ws.add_chart(Axlsx::Pie3DChart)
58
+ assert_equal(@ws.drawing.index, @ws.workbook.drawings.index(@ws.drawing))
59
+ end
60
+
61
+ def test_relationships
62
+ chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"bob", :start_at=>[0,0], :end_at=>[1,1])
63
+ assert_equal(@ws.drawing.relationships.size, 1, "adding a chart adds a relationship")
64
+ chart = @ws.add_chart(Axlsx::Pie3DChart, :title=>"nancy", :start_at=>[1,5], :end_at=>[5,10])
65
+ assert_equal(@ws.drawing.relationships.size, 2, "adding a chart adds a relationship")
66
+ end
67
+
68
+ def test_to_xml
69
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::DRAWING_XSD))
70
+ @ws.add_chart(Axlsx::Pie3DChart)
71
+ doc = Nokogiri::XML(@ws.drawing.to_xml_string)
72
+ errors = []
73
+ schema.validate(doc).each do |error|
74
+ errors.push error
75
+ puts error.message
76
+ end
77
+ assert(errors.empty?, "error free validation")
78
+ end
79
+
80
+ end
@@ -0,0 +1,27 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestGraphicFrame < Test::Unit::TestCase
4
+ def setup
5
+ p = Axlsx::Package.new
6
+ @ws = p.workbook.add_worksheet
7
+ @chart = @ws.add_chart Axlsx::Chart
8
+ @frame = @chart.graphic_frame
9
+ end
10
+
11
+ def teardown
12
+ end
13
+
14
+ def test_initialization
15
+ assert(@frame.anchor.is_a?(Axlsx::TwoCellAnchor))
16
+ assert_equal(@frame.chart, @chart)
17
+ end
18
+
19
+ def test_rId
20
+ assert_equal @ws.drawing.relationships.for(@chart).Id, @frame.rId
21
+ end
22
+
23
+ def test_to_xml_has_correct_rId
24
+ doc = Nokogiri::XML(@frame.to_xml_string)
25
+ assert_equal @frame.rId, doc.xpath("//c:chart", doc.collect_namespaces).first["r:id"]
26
+ end
27
+ end