caxlsx 3.0.4 → 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 -334
  5. data/LICENSE +21 -21
  6. data/README.md +168 -170
  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 -151
  21. data/lib/axlsx/drawing/bar_chart.rb +138 -143
  22. data/lib/axlsx/drawing/bar_series.rb +97 -80
  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 -363
  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 -289
  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 -162
  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 -764
  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 -170
  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 -71
  186. data/test/drawing/tc_bar_chart.rb +86 -71
  187. data/test/drawing/tc_bar_series.rb +46 -37
  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 -12
  247. data/test/tc_package.rb +317 -264
  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 -135
  278. data/test/workbook/worksheet/tc_pivot_table_cache_definition.rb +62 -54
  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 -139
  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 -67
  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 +11 -11
@@ -1,31 +1,31 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestCfvo < Test::Unit::TestCase
4
- def setup
5
- @cfvo = Axlsx::Cfvo.new(:val => "0", :type => :min)
6
- end
7
-
8
- def test_val
9
- assert_nothing_raised { @cfvo.val = "abc" }
10
- assert_equal(@cfvo.val, "abc")
11
- end
12
-
13
- def test_type
14
- assert_raise(ArgumentError) { @cfvo.type = :invalid_type }
15
- assert_nothing_raised { @cfvo.type = :max }
16
- assert_equal(@cfvo.type, :max)
17
- end
18
-
19
- def test_gte
20
- assert_raise(ArgumentError) { @cfvo.gte = :bob }
21
- assert_equal(@cfvo.gte, true)
22
- assert_nothing_raised { @cfvo.gte = false }
23
- assert_equal(@cfvo.gte, false)
24
- end
25
-
26
- def test_to_xml_string
27
- doc = Nokogiri::XML.parse(@cfvo.to_xml_string)
28
- assert doc.xpath(".//cfvo[@type='min'][@val=0][@gte=true]")
29
- end
30
-
31
- end
1
+ require 'tc_helper.rb'
2
+
3
+ class TestCfvo < Test::Unit::TestCase
4
+ def setup
5
+ @cfvo = Axlsx::Cfvo.new(:val => "0", :type => :min)
6
+ end
7
+
8
+ def test_val
9
+ assert_nothing_raised { @cfvo.val = "abc" }
10
+ assert_equal(@cfvo.val, "abc")
11
+ end
12
+
13
+ def test_type
14
+ assert_raise(ArgumentError) { @cfvo.type = :invalid_type }
15
+ assert_nothing_raised { @cfvo.type = :max }
16
+ assert_equal(@cfvo.type, :max)
17
+ end
18
+
19
+ def test_gte
20
+ assert_raise(ArgumentError) { @cfvo.gte = :bob }
21
+ assert_equal(@cfvo.gte, true)
22
+ assert_nothing_raised { @cfvo.gte = false }
23
+ assert_equal(@cfvo.gte, false)
24
+ end
25
+
26
+ def test_to_xml_string
27
+ doc = Nokogiri::XML.parse(@cfvo.to_xml_string)
28
+ assert doc.xpath(".//cfvo[@type='min'][@val=0][@gte=true]")
29
+ end
30
+
31
+ end
@@ -1,93 +1,93 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestCol < Test::Unit::TestCase
4
-
5
- def setup
6
- @col = Axlsx::Col.new 1, 1
7
- end
8
-
9
- def test_initialize
10
- options = { :width => 12, :collapsed => true, :hidden => true, :outline_level => 1, :phonetic => true, :style => 1}
11
-
12
- col = Axlsx::Col.new 0, 0, options
13
- options.each{ |key, value| assert_equal(col.send(key.to_sym), value) }
14
- end
15
-
16
- def test_min_max_required
17
- assert_raise(ArgumentError, 'min and max must be specified when creating a new column') { Axlsx::Col.new }
18
- assert_raise(ArgumentError, 'min and max must be specified when creating a new column') { Axlsx::Col.new nil, nil }
19
- assert_nothing_raised { Axlsx::Col.new 1, 1 }
20
- end
21
-
22
- def test_bestFit
23
- assert_equal(@col.bestFit, nil)
24
- assert_raise(NoMethodError, 'bestFit is read only') { @col.bestFit = 'bob' }
25
- @col.width = 1.999
26
- assert_equal(@col.bestFit, true, 'bestFit should be true when width has been set')
27
- end
28
-
29
- def test_collapsed
30
- assert_equal(@col.collapsed, nil)
31
- assert_raise(ArgumentError, 'collapsed must be boolean(ish)') { @col.collapsed = 'bob' }
32
- assert_nothing_raised('collapsed must be boolean(ish)') { @col.collapsed = true }
33
- end
34
-
35
- def test_customWidth
36
- assert_equal(@col.customWidth, nil)
37
- @col.width = 3
38
- assert_raise(NoMethodError, 'customWidth is read only') { @col.customWidth = 3 }
39
- assert_equal(@col.customWidth, true, 'customWidth is true when width is set')
40
- end
41
-
42
- def test_widthUnderLimit
43
- @col.width = 3
44
- assert_equal(@col.width, 3, 'width is set to exact value')
45
- end
46
-
47
- def test_widthOverLimit
48
- @col.width = 31337
49
- assert_equal(@col.width, 255, 'width is set to maximum allowed value')
50
- end
51
-
52
- def test_widthSetToNil
53
- @col.width = nil
54
- assert_equal(@col.width, nil, 'width is set to unspecified value')
55
- end
56
-
57
- def test_hidden
58
- assert_equal(@col.hidden, nil)
59
- assert_raise(ArgumentError, 'hidden must be boolean(ish)') { @col.hidden = 'bob' }
60
- assert_nothing_raised(ArgumentError, 'hidden must be boolean(ish)') { @col.hidden = true }
61
- end
62
-
63
- def test_outlineLevel
64
- assert_equal(@col.outlineLevel, nil)
65
- assert_raise(ArgumentError, 'outline level cannot be negative') { @col.outlineLevel = -1 }
66
- assert_raise(ArgumentError, 'outline level cannot be greater than 7') { @col.outlineLevel = 8 }
67
- assert_nothing_raised('can set outlineLevel') { @col.outlineLevel = 1 }
68
- end
69
-
70
- def test_phonetic
71
- assert_equal(@col.phonetic, nil)
72
- assert_raise(ArgumentError, 'phonetic must be boolean(ish)') { @col.phonetic = 'bob' }
73
- assert_nothing_raised(ArgumentError, 'phonetic must be boolean(ish)') { @col.phonetic = true }
74
- end
75
-
76
- def test_to_xml_string
77
- @col.width = 100
78
- doc = Nokogiri::XML(@col.to_xml_string)
79
- assert_equal(1, doc.xpath("//col [@bestFit='#{@col.best_fit ? 1 : 0}']").size)
80
- assert_equal(1, doc.xpath("//col [@max=#{@col.max}]").size)
81
- assert_equal(1, doc.xpath("//col [@min=#{@col.min}]").size)
82
- assert_equal(1, doc.xpath("//col [@width=#{@col.width}]").size)
83
- assert_equal(1, doc.xpath("//col [@customWidth='#{@col.custom_width ? 1 : 0}']").size)
84
- end
85
-
86
- def test_style
87
- assert_equal(@col.style, nil)
88
- @col.style = 1
89
- assert_equal(@col.style, 1)
90
- #TODO check that the style specified is actually in the styles xfs collection
91
- end
92
-
93
- end
1
+ require 'tc_helper.rb'
2
+
3
+ class TestCol < Test::Unit::TestCase
4
+
5
+ def setup
6
+ @col = Axlsx::Col.new 1, 1
7
+ end
8
+
9
+ def test_initialize
10
+ options = { :width => 12, :collapsed => true, :hidden => true, :outline_level => 1, :phonetic => true, :style => 1}
11
+
12
+ col = Axlsx::Col.new 0, 0, options
13
+ options.each{ |key, value| assert_equal(col.send(key.to_sym), value) }
14
+ end
15
+
16
+ def test_min_max_required
17
+ assert_raise(ArgumentError, 'min and max must be specified when creating a new column') { Axlsx::Col.new }
18
+ assert_raise(ArgumentError, 'min and max must be specified when creating a new column') { Axlsx::Col.new nil, nil }
19
+ assert_nothing_raised { Axlsx::Col.new 1, 1 }
20
+ end
21
+
22
+ def test_bestFit
23
+ assert_equal(@col.bestFit, nil)
24
+ assert_raise(NoMethodError, 'bestFit is read only') { @col.bestFit = 'bob' }
25
+ @col.width = 1.999
26
+ assert_equal(@col.bestFit, true, 'bestFit should be true when width has been set')
27
+ end
28
+
29
+ def test_collapsed
30
+ assert_equal(@col.collapsed, nil)
31
+ assert_raise(ArgumentError, 'collapsed must be boolean(ish)') { @col.collapsed = 'bob' }
32
+ assert_nothing_raised('collapsed must be boolean(ish)') { @col.collapsed = true }
33
+ end
34
+
35
+ def test_customWidth
36
+ assert_equal(@col.customWidth, nil)
37
+ @col.width = 3
38
+ assert_raise(NoMethodError, 'customWidth is read only') { @col.customWidth = 3 }
39
+ assert_equal(@col.customWidth, true, 'customWidth is true when width is set')
40
+ end
41
+
42
+ def test_widthUnderLimit
43
+ @col.width = 3
44
+ assert_equal(@col.width, 3, 'width is set to exact value')
45
+ end
46
+
47
+ def test_widthOverLimit
48
+ @col.width = 31337
49
+ assert_equal(@col.width, 255, 'width is set to maximum allowed value')
50
+ end
51
+
52
+ def test_widthSetToNil
53
+ @col.width = nil
54
+ assert_equal(@col.width, nil, 'width is set to unspecified value')
55
+ end
56
+
57
+ def test_hidden
58
+ assert_equal(@col.hidden, nil)
59
+ assert_raise(ArgumentError, 'hidden must be boolean(ish)') { @col.hidden = 'bob' }
60
+ assert_nothing_raised(ArgumentError, 'hidden must be boolean(ish)') { @col.hidden = true }
61
+ end
62
+
63
+ def test_outlineLevel
64
+ assert_equal(@col.outlineLevel, nil)
65
+ assert_raise(ArgumentError, 'outline level cannot be negative') { @col.outlineLevel = -1 }
66
+ assert_raise(ArgumentError, 'outline level cannot be greater than 7') { @col.outlineLevel = 8 }
67
+ assert_nothing_raised('can set outlineLevel') { @col.outlineLevel = 1 }
68
+ end
69
+
70
+ def test_phonetic
71
+ assert_equal(@col.phonetic, nil)
72
+ assert_raise(ArgumentError, 'phonetic must be boolean(ish)') { @col.phonetic = 'bob' }
73
+ assert_nothing_raised(ArgumentError, 'phonetic must be boolean(ish)') { @col.phonetic = true }
74
+ end
75
+
76
+ def test_to_xml_string
77
+ @col.width = 100
78
+ doc = Nokogiri::XML(@col.to_xml_string)
79
+ assert_equal(1, doc.xpath("//col [@bestFit='#{@col.best_fit ? 1 : 0}']").size)
80
+ assert_equal(1, doc.xpath("//col [@max=#{@col.max}]").size)
81
+ assert_equal(1, doc.xpath("//col [@min=#{@col.min}]").size)
82
+ assert_equal(1, doc.xpath("//col [@width=#{@col.width}]").size)
83
+ assert_equal(1, doc.xpath("//col [@customWidth='#{@col.custom_width ? 1 : 0}']").size)
84
+ end
85
+
86
+ def test_style
87
+ assert_equal(@col.style, nil)
88
+ @col.style = 1
89
+ assert_equal(@col.style, 1)
90
+ #TODO check that the style specified is actually in the styles xfs collection
91
+ end
92
+
93
+ end
@@ -1,58 +1,58 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestColorScale < Test::Unit::TestCase
4
- def setup
5
- @color_scale = Axlsx::ColorScale.new
6
- end
7
-
8
- def test_three_tone
9
- color_scale = Axlsx::ColorScale.three_tone
10
- assert_equal 3, color_scale.value_objects.size
11
- assert_equal 3, color_scale.colors.size
12
- end
13
-
14
- def test_two_tone
15
- color_scale = Axlsx::ColorScale.two_tone
16
- assert_equal 2, color_scale.value_objects.size
17
- assert_equal 2, color_scale.colors.size
18
- end
19
- def test_default_cfvo
20
- first = Axlsx::ColorScale.default_cfvos.first
21
- second = Axlsx::ColorScale.default_cfvos.last
22
- assert_equal 'FFFF7128', first[:color]
23
- assert_equal :min,first[:type]
24
- assert_equal 0, first[:val]
25
-
26
- assert_equal 'FFFFEF9C', second[:color]
27
- assert_equal :max, second[:type]
28
- assert_equal 0, second[:val]
29
- end
30
-
31
- def test_partial_default_cfvo_override
32
- first_def = {:type => :percent, :val => "10.0", :color => 'FF00FF00'}
33
- color_scale = Axlsx::ColorScale.new(first_def)
34
- assert_equal color_scale.value_objects.first.val, first_def[:val]
35
- assert_equal color_scale.value_objects.first.type, first_def[:type]
36
- assert_equal color_scale.colors.first.rgb, first_def[:color]
37
- end
38
-
39
- def test_add
40
- @color_scale.add :type => :max, :val => 5, :color => "FFDEDEDE"
41
- assert_equal(@color_scale.value_objects.size,3)
42
- assert_equal(@color_scale.colors.size,3)
43
- end
44
-
45
- def test_delete_at
46
- @color_scale.add :type => :max, :val => 5, :color => "FFDEDEDE"
47
- assert_nothing_raised {@color_scale.delete_at 2}
48
- assert_equal(@color_scale.value_objects.size,2)
49
- assert_equal(@color_scale.colors.size,2)
50
- end
51
-
52
- def test_to_xml_string
53
- doc = Nokogiri::XML.parse(@color_scale.to_xml_string)
54
- assert_equal(doc.xpath(".//colorScale//cfvo").size, 2)
55
- assert_equal(doc.xpath(".//colorScale//color").size, 2)
56
- end
57
-
58
- end
1
+ require 'tc_helper.rb'
2
+
3
+ class TestColorScale < Test::Unit::TestCase
4
+ def setup
5
+ @color_scale = Axlsx::ColorScale.new
6
+ end
7
+
8
+ def test_three_tone
9
+ color_scale = Axlsx::ColorScale.three_tone
10
+ assert_equal 3, color_scale.value_objects.size
11
+ assert_equal 3, color_scale.colors.size
12
+ end
13
+
14
+ def test_two_tone
15
+ color_scale = Axlsx::ColorScale.two_tone
16
+ assert_equal 2, color_scale.value_objects.size
17
+ assert_equal 2, color_scale.colors.size
18
+ end
19
+ def test_default_cfvo
20
+ first = Axlsx::ColorScale.default_cfvos.first
21
+ second = Axlsx::ColorScale.default_cfvos.last
22
+ assert_equal 'FFFF7128', first[:color]
23
+ assert_equal :min,first[:type]
24
+ assert_equal 0, first[:val]
25
+
26
+ assert_equal 'FFFFEF9C', second[:color]
27
+ assert_equal :max, second[:type]
28
+ assert_equal 0, second[:val]
29
+ end
30
+
31
+ def test_partial_default_cfvo_override
32
+ first_def = {:type => :percent, :val => "10.0", :color => 'FF00FF00'}
33
+ color_scale = Axlsx::ColorScale.new(first_def)
34
+ assert_equal color_scale.value_objects.first.val, first_def[:val]
35
+ assert_equal color_scale.value_objects.first.type, first_def[:type]
36
+ assert_equal color_scale.colors.first.rgb, first_def[:color]
37
+ end
38
+
39
+ def test_add
40
+ @color_scale.add :type => :max, :val => 5, :color => "FFDEDEDE"
41
+ assert_equal(@color_scale.value_objects.size,3)
42
+ assert_equal(@color_scale.colors.size,3)
43
+ end
44
+
45
+ def test_delete_at
46
+ @color_scale.add :type => :max, :val => 5, :color => "FFDEDEDE"
47
+ assert_nothing_raised {@color_scale.delete_at 2}
48
+ assert_equal(@color_scale.value_objects.size,2)
49
+ assert_equal(@color_scale.colors.size,2)
50
+ end
51
+
52
+ def test_to_xml_string
53
+ doc = Nokogiri::XML.parse(@color_scale.to_xml_string)
54
+ assert_equal(doc.xpath(".//colorScale//cfvo").size, 2)
55
+ assert_equal(doc.xpath(".//colorScale//color").size, 2)
56
+ end
57
+
58
+ end
@@ -1,72 +1,72 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestComment < Test::Unit::TestCase
4
- def setup
5
- p = Axlsx::Package.new
6
- wb = p.workbook
7
- @ws = wb.add_worksheet
8
- @c1 = @ws.add_comment :ref => 'A1', :text => 'text with special char <', :author => 'author with special char <', :visible => false
9
- @c2 = @ws.add_comment :ref => 'C3', :text => 'rust bucket', :author => 'PO'
10
- end
11
-
12
- def test_initailize
13
- assert_raise(ArgumentError) { Axlsx::Comment.new }
14
- end
15
-
16
- def test_author
17
- assert(@c1.author == 'author with special char <')
18
- assert(@c2.author == 'PO')
19
- end
20
-
21
- def test_text
22
- assert(@c1.text == 'text with special char <')
23
- assert(@c2.text == 'rust bucket')
24
- end
25
-
26
- def test_author_index
27
- assert_equal(@c1.author_index, 1)
28
- assert_equal(@c2.author_index, 0)
29
- end
30
-
31
- def test_visible
32
- assert_equal(false, @c1.visible)
33
- assert_equal(true, @c2.visible)
34
- end
35
- def test_ref
36
- assert(@c1.ref == 'A1')
37
- assert(@c2.ref == 'C3')
38
- end
39
-
40
- def test_vml_shape
41
- pos = Axlsx::name_to_indices(@c1.ref)
42
- assert(@c1.vml_shape.is_a?(Axlsx::VmlShape))
43
- assert(@c1.vml_shape.column == pos[0])
44
- assert(@c1.vml_shape.row == pos[1])
45
- assert(@c1.vml_shape.row == pos[1])
46
- assert_equal(pos[0], @c1.vml_shape.left_column)
47
- assert(@c1.vml_shape.top_row == pos[1])
48
- assert_equal(pos[0] + 2 , @c1.vml_shape.right_column)
49
- assert(@c1.vml_shape.bottom_row == pos[1]+4)
50
- end
51
-
52
- def test_to_xml_string
53
- doc = Nokogiri::XML(@c1.to_xml_string)
54
- assert_equal(doc.xpath("//comment[@ref='#{@c1.ref}']").size, 1)
55
- assert_equal(doc.xpath("//comment[@authorId='#{@c1.author_index.to_s}']").size, 1)
56
- assert_equal(doc.xpath("//t[text()='#{@c1.author}:\n']").size, 1)
57
- assert_equal(doc.xpath("//t[text()='#{@c1.text}']").size, 1)
58
- end
59
-
60
- def test_comment_text_contain_author_and_text
61
- comment = @ws.add_comment :ref => 'C4', :text => 'some text', :author => 'Bob'
62
- doc = Nokogiri::XML(comment.to_xml_string)
63
- assert_equal("Bob:\nsome text", doc.xpath("//comment/text").text)
64
- end
65
-
66
- def test_comment_text_does_not_contain_stray_colon_if_author_blank
67
- comment = @ws.add_comment :ref => 'C5', :text => 'some text', :author => ''
68
- doc = Nokogiri::XML(comment.to_xml_string)
69
- assert_equal("some text", doc.xpath("//comment/text").text)
70
- end
71
- end
72
-
1
+ require 'tc_helper.rb'
2
+
3
+ class TestComment < Test::Unit::TestCase
4
+ def setup
5
+ p = Axlsx::Package.new
6
+ wb = p.workbook
7
+ @ws = wb.add_worksheet
8
+ @c1 = @ws.add_comment :ref => 'A1', :text => 'text with special char <', :author => 'author with special char <', :visible => false
9
+ @c2 = @ws.add_comment :ref => 'C3', :text => 'rust bucket', :author => 'PO'
10
+ end
11
+
12
+ def test_initailize
13
+ assert_raise(ArgumentError) { Axlsx::Comment.new }
14
+ end
15
+
16
+ def test_author
17
+ assert(@c1.author == 'author with special char <')
18
+ assert(@c2.author == 'PO')
19
+ end
20
+
21
+ def test_text
22
+ assert(@c1.text == 'text with special char <')
23
+ assert(@c2.text == 'rust bucket')
24
+ end
25
+
26
+ def test_author_index
27
+ assert_equal(@c1.author_index, 1)
28
+ assert_equal(@c2.author_index, 0)
29
+ end
30
+
31
+ def test_visible
32
+ assert_equal(false, @c1.visible)
33
+ assert_equal(true, @c2.visible)
34
+ end
35
+ def test_ref
36
+ assert(@c1.ref == 'A1')
37
+ assert(@c2.ref == 'C3')
38
+ end
39
+
40
+ def test_vml_shape
41
+ pos = Axlsx::name_to_indices(@c1.ref)
42
+ assert(@c1.vml_shape.is_a?(Axlsx::VmlShape))
43
+ assert(@c1.vml_shape.column == pos[0])
44
+ assert(@c1.vml_shape.row == pos[1])
45
+ assert(@c1.vml_shape.row == pos[1])
46
+ assert_equal(pos[0], @c1.vml_shape.left_column)
47
+ assert(@c1.vml_shape.top_row == pos[1])
48
+ assert_equal(pos[0] + 2 , @c1.vml_shape.right_column)
49
+ assert(@c1.vml_shape.bottom_row == pos[1]+4)
50
+ end
51
+
52
+ def test_to_xml_string
53
+ doc = Nokogiri::XML(@c1.to_xml_string)
54
+ assert_equal(doc.xpath("//comment[@ref='#{@c1.ref}']").size, 1)
55
+ assert_equal(doc.xpath("//comment[@authorId='#{@c1.author_index.to_s}']").size, 1)
56
+ assert_equal(doc.xpath("//t[text()='#{@c1.author}:\n']").size, 1)
57
+ assert_equal(doc.xpath("//t[text()='#{@c1.text}']").size, 1)
58
+ end
59
+
60
+ def test_comment_text_contain_author_and_text
61
+ comment = @ws.add_comment :ref => 'C4', :text => 'some text', :author => 'Bob'
62
+ doc = Nokogiri::XML(comment.to_xml_string)
63
+ assert_equal("Bob:\nsome text", doc.xpath("//comment/text").text)
64
+ end
65
+
66
+ def test_comment_text_does_not_contain_stray_colon_if_author_blank
67
+ comment = @ws.add_comment :ref => 'C5', :text => 'some text', :author => ''
68
+ doc = Nokogiri::XML(comment.to_xml_string)
69
+ assert_equal("some text", doc.xpath("//comment/text").text)
70
+ end
71
+ end
72
+
@@ -1,57 +1,57 @@
1
- require 'tc_helper.rb'
2
-
3
- class TestComments < Test::Unit::TestCase
4
- def setup
5
- p = Axlsx::Package.new
6
- wb = p.workbook
7
- @ws = wb.add_worksheet
8
- @c1 = @ws.add_comment :ref => 'A1', :text => 'penut machine', :author => 'crank'
9
- @c2 = @ws.add_comment :ref => 'C3', :text => 'rust bucket', :author => 'PO'
10
- end
11
-
12
- def test_initialize
13
- assert_raise(ArgumentError) { Axlsx::Comments.new }
14
- assert(@ws.comments.vml_drawing.is_a?(Axlsx::VmlDrawing))
15
- end
16
-
17
- def test_add_comment
18
- assert_equal(@ws.comments.size, 2)
19
- assert_raise(ArgumentError) { @ws.comments.add_comment() }
20
- assert_raise(ArgumentError) { @ws.comments.add_comment(:text => 'Yes We Can', :ref => 'A1') }
21
- assert_raise(ArgumentError) { @ws.comments.add_comment(:author => 'bob', :ref => 'A1') }
22
- assert_raise(ArgumentError) { @ws.comments.add_comment(:author => 'bob', :text => 'Yes We Can')}
23
- assert_nothing_raised { @ws.comments.add_comment(:author => 'bob', :text => 'Yes We Can', :ref => 'A1') }
24
- assert_equal(@ws.comments.size, 3)
25
- end
26
- def test_authors
27
- assert_equal(@ws.comments.authors.size, @ws.comments.size)
28
- @ws.add_comment(:text => 'Yes We Can!', :author => 'bob', :ref => 'F1')
29
- assert_equal(@ws.comments.authors.size, 3)
30
- @ws.add_comment(:text => 'Yes We Can!', :author => 'bob', :ref => 'F1')
31
- assert_equal(@ws.comments.authors.size, 3, 'only unique authors are returned')
32
- end
33
- def test_pn
34
- assert_equal(@ws.comments.pn, Axlsx::COMMENT_PN % (@ws.index+1).to_s)
35
- end
36
-
37
- def test_index
38
- assert_equal(@ws.index, @ws.comments.index)
39
- end
40
-
41
- def test_to_xml_string
42
- doc = Nokogiri::XML(@ws.comments.to_xml_string)
43
- schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
44
- errors = []
45
- schema.validate(doc).each do |error|
46
- errors << error
47
- end
48
- assert_equal(0, errors.length)
49
-
50
- # TODO figure out why these xpath expressions dont work!
51
- # assert(doc.xpath("//comments"))
52
- # assert_equal(doc.xpath("//xmlns:author").size, @ws.comments.authors.size)
53
- # assert_equal(doc.xpath("//comment").size, @ws.comments.size)
54
- end
55
- end
56
-
57
-
1
+ require 'tc_helper.rb'
2
+
3
+ class TestComments < Test::Unit::TestCase
4
+ def setup
5
+ p = Axlsx::Package.new
6
+ wb = p.workbook
7
+ @ws = wb.add_worksheet
8
+ @c1 = @ws.add_comment :ref => 'A1', :text => 'penut machine', :author => 'crank'
9
+ @c2 = @ws.add_comment :ref => 'C3', :text => 'rust bucket', :author => 'PO'
10
+ end
11
+
12
+ def test_initialize
13
+ assert_raise(ArgumentError) { Axlsx::Comments.new }
14
+ assert(@ws.comments.vml_drawing.is_a?(Axlsx::VmlDrawing))
15
+ end
16
+
17
+ def test_add_comment
18
+ assert_equal(@ws.comments.size, 2)
19
+ assert_raise(ArgumentError) { @ws.comments.add_comment() }
20
+ assert_raise(ArgumentError) { @ws.comments.add_comment(:text => 'Yes We Can', :ref => 'A1') }
21
+ assert_raise(ArgumentError) { @ws.comments.add_comment(:author => 'bob', :ref => 'A1') }
22
+ assert_raise(ArgumentError) { @ws.comments.add_comment(:author => 'bob', :text => 'Yes We Can')}
23
+ assert_nothing_raised { @ws.comments.add_comment(:author => 'bob', :text => 'Yes We Can', :ref => 'A1') }
24
+ assert_equal(@ws.comments.size, 3)
25
+ end
26
+ def test_authors
27
+ assert_equal(@ws.comments.authors.size, @ws.comments.size)
28
+ @ws.add_comment(:text => 'Yes We Can!', :author => 'bob', :ref => 'F1')
29
+ assert_equal(@ws.comments.authors.size, 3)
30
+ @ws.add_comment(:text => 'Yes We Can!', :author => 'bob', :ref => 'F1')
31
+ assert_equal(@ws.comments.authors.size, 3, 'only unique authors are returned')
32
+ end
33
+ def test_pn
34
+ assert_equal(@ws.comments.pn, Axlsx::COMMENT_PN % (@ws.index+1).to_s)
35
+ end
36
+
37
+ def test_index
38
+ assert_equal(@ws.index, @ws.comments.index)
39
+ end
40
+
41
+ def test_to_xml_string
42
+ doc = Nokogiri::XML(@ws.comments.to_xml_string)
43
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
44
+ errors = []
45
+ schema.validate(doc).each do |error|
46
+ errors << error
47
+ end
48
+ assert_equal(0, errors.length)
49
+
50
+ # TODO figure out why these xpath expressions dont work!
51
+ # assert(doc.xpath("//comments"))
52
+ # assert_equal(doc.xpath("//xmlns:author").size, @ws.comments.authors.size)
53
+ # assert_equal(doc.xpath("//comment").size, @ws.comments.size)
54
+ end
55
+ end
56
+
57
+