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,117 @@
1
+ # encoding: UTF-8
2
+ require 'tc_helper.rb'
3
+
4
+ # <xsd:complexType name="CT_SheetProtection">
5
+ # <xsd:attribute name="sheet" type="xsd:boolean" use="optional" default="false"/>
6
+ # <xsd:attribute name="objects" type="xsd:boolean" use="optional" default="false"/>
7
+ # <xsd:attribute name="scenarios" type="xsd:boolean" use="optional" default="false"/>
8
+ # <xsd:attribute name="formatCells" type="xsd:boolean" use="optional" default="true"/>
9
+ # <xsd:attribute name="formatColumns" type="xsd:boolean" use="optional" default="true"/>
10
+ # <xsd:attribute name="formatRows" type="xsd:boolean" use="optional" default="true"/>
11
+ # <xsd:attribute name="insertColumns" type="xsd:boolean" use="optional" default="true"/>
12
+ # <xsd:attribute name="insertRows" type="xsd:boolean" use="optional" default="true"/>
13
+ # <xsd:attribute name="insertHyperlinks" type="xsd:boolean" use="optional" default="true"/>
14
+ # <xsd:attribute name="deleteColumns" type="xsd:boolean" use="optional" default="true"/>
15
+ # <xsd:attribute name="deleteRows" type="xsd:boolean" use="optional" default="true"/>
16
+ # <xsd:attribute name="selectLockedCells" type="xsd:boolean" use="optional" default="false"/>
17
+ # <xsd:attribute name="sort" type="xsd:boolean" use="optional" default="true"/>
18
+ # <xsd:attribute name="autoFilter" type="xsd:boolean" use="optional" default="true"/>
19
+ # <xsd:attribute name="pivotTables" type="xsd:boolean" use="optional" default="true"/>
20
+ # <xsd:attribute name="selectUnlockedCells" type="xsd:boolean" use="optional" default="false"/>
21
+ # <xsd:attribute name="password" type="xsd:string" use="optional" default="nil"/>
22
+ # </xsd:complexType>
23
+
24
+ class TestSheetProtection < Test::Unit::TestCase
25
+ def setup
26
+ #inverse defaults
27
+ @boolean_options = { :sheet => false, :objects => true, :scenarios => true, :format_cells => false,
28
+ :format_columns => false, :format_rows => false, :insert_columns => false, :insert_rows => false,
29
+ :insert_hyperlinks => false, :delete_columns => false, :delete_rows => false, :select_locked_cells => true,
30
+ :sort => false, :auto_filter => false, :pivot_tables => false, :select_unlocked_cells => true }
31
+
32
+ @string_options = { :password => nil }
33
+
34
+ @options = @boolean_options.merge(@string_options)
35
+
36
+ @sp = Axlsx::SheetProtection.new(@options)
37
+ end
38
+
39
+ def test_initialize
40
+ sp = Axlsx::SheetProtection.new
41
+ @boolean_options.each do |key, value|
42
+ assert_equal(!value, sp.send(key.to_sym), "initialized default #{key} should be #{!value}")
43
+ assert_equal(value, @sp.send(key.to_sym), "initialized options #{key} should be #{value}")
44
+ end
45
+ end
46
+
47
+ def test_boolean_attribute_validation
48
+ @boolean_options.each do |key, value|
49
+ assert_raise(ArgumentError, "#{key} must be boolean") { @sp.send("#{key}=".to_sym, 'A') }
50
+ assert_nothing_raised { @sp.send("#{key}=".to_sym, true) }
51
+ assert_nothing_raised { @sp.send("#{key}=".to_sym, true) }
52
+ end
53
+ end
54
+
55
+ def test_to_xml_string
56
+ @sp.password = 'fish' # -> CA3F
57
+ doc = Nokogiri::XML(@sp.to_xml_string)
58
+ @options.each do |key, value|
59
+ assert(doc.xpath("//sheetProtection[@#{key.to_s.gsub(/_(.)/){ $1.upcase }}='#{value}']"))
60
+ end
61
+ end
62
+
63
+ end
64
+
65
+
66
+
67
+
68
+
69
+
70
+
71
+
72
+
73
+
74
+
75
+
76
+
77
+
78
+
79
+
80
+
81
+
82
+
83
+
84
+
85
+
86
+
87
+
88
+
89
+
90
+
91
+
92
+
93
+
94
+
95
+
96
+
97
+
98
+
99
+
100
+
101
+
102
+
103
+
104
+
105
+
106
+
107
+
108
+
109
+
110
+
111
+
112
+
113
+
114
+
115
+
116
+
117
+
@@ -0,0 +1,214 @@
1
+ # encoding: UTF-8
2
+ $LOAD_PATH.unshift "#{File.dirname(__FILE__)}/../../"
3
+ require 'tc_helper.rb'
4
+
5
+ class TestSheetView < Test::Unit::TestCase
6
+ def setup
7
+ #inverse defaults for booleans
8
+ @boolean_options = { :right_to_left => true, :show_formulas => true, :show_outline_symbols => true,
9
+ :show_white_space => true, :tab_selected => true, :default_grid_color => false, :show_grid_lines => false,
10
+ :show_row_col_headers => false, :show_ruler => false, :show_zeros => false, :window_protection => true }
11
+ @symbol_options = { :view => :page_break_preview }
12
+ @nil_options = { :color_id => 2, :top_left_cell => 'A2' }
13
+ @int_0 = { :zoom_scale_normal => 100, :zoom_scale_page_layout_view => 100, :zoom_scale_sheet_layout_view => 100, :workbook_view_id => 2 }
14
+ @int_100 = { :zoom_scale => 10 }
15
+
16
+ @integer_options = { :color_id => 2, :workbook_view_id => 2 }.merge(@int_0).merge(@int_100)
17
+ @string_options = { :top_left_cell => 'A2' }
18
+
19
+
20
+ @options = @boolean_options.merge(@boolean_options).merge(@symbol_options).merge(@nil_options).merge(@int_0).merge(@int_100)
21
+
22
+ @sv = Axlsx::SheetView.new(@options)
23
+ end
24
+
25
+ def test_initialize
26
+ sv = Axlsx::SheetView.new
27
+
28
+ @boolean_options.each do |key, value|
29
+ assert_equal(!value, sv.send(key.to_sym), "initialized default #{key} should be #{!value}")
30
+ assert_equal(value, @sv.send(key.to_sym), "initialized options #{key} should be #{value}")
31
+ end
32
+
33
+ @nil_options.each do |key, value|
34
+ assert_equal(nil, sv.send(key.to_sym), "initialized default #{key} should be nil")
35
+ assert_equal(value, @sv.send(key.to_sym), "initialized options #{key} should be #{value}")
36
+ end
37
+
38
+ @int_0.each do |key, value|
39
+ assert_equal(0, sv.send(key.to_sym), "initialized default #{key} should be 0")
40
+ assert_equal(value, @sv.send(key.to_sym), "initialized options #{key} should be #{value}")
41
+ end
42
+
43
+ @int_100.each do |key, value|
44
+ assert_equal(100, sv.send(key.to_sym), "initialized default #{key} should be 100")
45
+ assert_equal(value, @sv.send(key.to_sym), "initialized options #{key} should be #{value}")
46
+ end
47
+ end
48
+
49
+ def test_boolean_attribute_validation
50
+ @boolean_options.each do |key, value|
51
+ assert_raise(ArgumentError, "#{key} must be boolean") { @sv.send("#{key}=".to_sym, 'A') }
52
+ assert_nothing_raised { @sv.send("#{key}=".to_sym, true) }
53
+ end
54
+ end
55
+
56
+ def test_string_attribute_validation
57
+ @string_options.each do |key, value|
58
+ assert_raise(ArgumentError, "#{key} must be string") { @sv.send("#{key}=".to_sym, :symbol) }
59
+ assert_nothing_raised { @sv.send("#{key}=".to_sym, "foo") }
60
+ end
61
+ end
62
+
63
+ def test_symbol_attribute_validation
64
+ @symbol_options.each do |key, value|
65
+ assert_raise(ArgumentError, "#{key} must be symbol") { @sv.send("#{key}=".to_sym, "foo") }
66
+ assert_nothing_raised { @sv.send("#{key}=".to_sym, value) }
67
+ end
68
+ end
69
+
70
+ def test_integer_attribute_validation
71
+ @integer_options.each do |key, value|
72
+ assert_raise(ArgumentError, "#{key} must be integer") { @sv.send("#{key}=".to_sym, "foo") }
73
+ assert_nothing_raised { @sv.send("#{key}=".to_sym, value) }
74
+ end
75
+ end
76
+
77
+ def test_color_id
78
+ assert_raise(ArgumentError) { @sv.color_id = "10" }
79
+ assert_nothing_raised { @sv.color_id = 2 }
80
+ assert_equal(@sv.color_id, 2)
81
+ end
82
+
83
+ def test_default_grid_color
84
+ assert_raise(ArgumentError) { @sv.default_grid_color = "foo" }
85
+ assert_nothing_raised { @sv.default_grid_color = false }
86
+ assert_equal(@sv.default_grid_color, false)
87
+ end
88
+
89
+ def test_right_to_left
90
+ assert_raise(ArgumentError) { @sv.right_to_left = "foo´" }
91
+ assert_nothing_raised { @sv.right_to_left = true }
92
+ assert_equal(@sv.right_to_left, true)
93
+ end
94
+
95
+ def test_show_formulas
96
+ assert_raise(ArgumentError) { @sv.show_formulas = 'foo' }
97
+ assert_nothing_raised { @sv.show_formulas = false }
98
+ assert_equal(@sv.show_formulas, false)
99
+ end
100
+
101
+ def test_show_grid_lines
102
+ assert_raise(ArgumentError) { @sv.show_grid_lines = "foo" }
103
+ assert_nothing_raised { @sv.show_grid_lines = false }
104
+ assert_equal(@sv.show_grid_lines, false)
105
+ end
106
+
107
+ def test_show_outline_symbols
108
+ assert_raise(ArgumentError) { @sv.show_outline_symbols = 'foo' }
109
+ assert_nothing_raised { @sv.show_outline_symbols = false }
110
+ assert_equal(@sv.show_outline_symbols, false)
111
+ end
112
+
113
+ def test_show_row_col_headers
114
+ assert_raise(ArgumentError) { @sv.show_row_col_headers = "foo" }
115
+ assert_nothing_raised { @sv.show_row_col_headers = false }
116
+ assert_equal(@sv.show_row_col_headers, false)
117
+ end
118
+
119
+ def test_show_ruler
120
+ assert_raise(ArgumentError) { @sv.show_ruler = 'foo' }
121
+ assert_nothing_raised { @sv.show_ruler = false }
122
+ assert_equal(@sv.show_ruler, false)
123
+ end
124
+
125
+ def test_show_white_space
126
+ assert_raise(ArgumentError) { @sv.show_white_space = 'foo' }
127
+ assert_nothing_raised { @sv.show_white_space = false }
128
+ assert_equal(@sv.show_white_space, false)
129
+ end
130
+
131
+ def test_show_zeros
132
+ assert_raise(ArgumentError) { @sv.show_zeros = "foo" }
133
+ assert_nothing_raised { @sv.show_zeros = false }
134
+ assert_equal(@sv.show_zeros, false)
135
+ end
136
+
137
+ def test_tab_selected
138
+ assert_raise(ArgumentError) { @sv.tab_selected = "foo" }
139
+ assert_nothing_raised { @sv.tab_selected = false }
140
+ assert_equal(@sv.tab_selected, false)
141
+ end
142
+
143
+ def test_top_left_cell
144
+ assert_raise(ArgumentError) { @sv.top_left_cell = :cell_adress }
145
+ assert_nothing_raised { @sv.top_left_cell = "A2" }
146
+ assert_equal(@sv.top_left_cell, "A2")
147
+ end
148
+
149
+ def test_view
150
+ assert_raise(ArgumentError) { @sv.view = 'view' }
151
+ assert_nothing_raised { @sv.view = :page_break_preview }
152
+ assert_equal(@sv.view, :page_break_preview)
153
+ end
154
+
155
+ def test_window_protection
156
+ assert_raise(ArgumentError) { @sv.window_protection = "foo" }
157
+ assert_nothing_raised { @sv.window_protection = false }
158
+ assert_equal(@sv.window_protection, false)
159
+ end
160
+
161
+ def test_workbook_view_id
162
+ assert_raise(ArgumentError) { @sv.workbook_view_id = "1" }
163
+ assert_nothing_raised { @sv.workbook_view_id = 1 }
164
+ assert_equal(@sv.workbook_view_id, 1)
165
+ end
166
+
167
+ def test_zoom_scale
168
+ assert_raise(ArgumentError) { @sv.zoom_scale = "50" }
169
+ assert_nothing_raised { @sv.zoom_scale = 50 }
170
+ assert_equal(@sv.zoom_scale, 50)
171
+ end
172
+
173
+ def test_zoom_scale_normal
174
+ assert_raise(ArgumentError) { @sv.zoom_scale_normal = "50" }
175
+ assert_nothing_raised { @sv.zoom_scale_normal = 50 }
176
+ assert_equal(@sv.zoom_scale_normal, 50)
177
+ end
178
+
179
+ def test_zoom_scale_page_layout_view
180
+ assert_raise(ArgumentError) { @sv.zoom_scale_page_layout_view = "50" }
181
+ assert_nothing_raised { @sv.zoom_scale_page_layout_view = 50 }
182
+ assert_equal(@sv.zoom_scale_page_layout_view, 50)
183
+ end
184
+
185
+ def test_zoom_scale_sheet_layout_view
186
+ assert_raise(ArgumentError) { @sv.zoom_scale_sheet_layout_view = "50" }
187
+ assert_nothing_raised { @sv.zoom_scale_sheet_layout_view = 50 }
188
+ assert_equal(@sv.zoom_scale_sheet_layout_view, 50)
189
+ end
190
+
191
+ def test_to_xml
192
+ p = Axlsx::Package.new
193
+ @ws = p.workbook.add_worksheet :name => "sheetview"
194
+ @ws.sheet_view do |vs|
195
+ vs.view = :page_break_preview
196
+ end
197
+
198
+ doc = Nokogiri::XML.parse(@ws.sheet_view.to_xml_string)
199
+
200
+ assert_equal(1, doc.xpath("//sheetView[@tabSelected='false']").size)
201
+
202
+ assert_equal(1, doc.xpath("//sheetView[@tabSelected='false'][@showWhiteSpace='false'][@showOutlineSymbols='false'][@showFormulas='false']
203
+ [@rightToLeft='false'][@windowProtection='false'][@showZeros='true'][@showRuler='true']
204
+ [@showRowColHeaders='true'][@showGridLines='true'][@defaultGridColor='true']
205
+ [@zoomScale='100'][@workbookViewId='0'][@zoomScaleSheetLayoutView='0'][@zoomScalePageLayoutView='0']
206
+ [@zoomScaleNormal='0'][@view='pageBreakPreview']").size)
207
+ end
208
+
209
+ def test_add_selection
210
+ @sv.add_selection(:top_left, :active_cell => "A1")
211
+ assert_equal('A1', @sv.selections[:top_left].active_cell)
212
+ end
213
+
214
+ end
@@ -0,0 +1,68 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestTable < Test::Unit::TestCase
4
+ def setup
5
+ p = Axlsx::Package.new
6
+ @ws = p.workbook.add_worksheet
7
+ 40.times do
8
+ @ws << ["aa","aa","aa","aa","aa","aa"]
9
+ end
10
+ end
11
+
12
+ def test_initialization
13
+ assert(@ws.workbook.tables.empty?)
14
+ assert(@ws.tables.empty?)
15
+
16
+ end
17
+
18
+ def test_table_style_info
19
+ table = @ws.add_table('A1:D5', :name => 'foo', :style_info => { :show_row_stripes => true, :name => "TableStyleMedium25" })
20
+ assert_equal('TableStyleMedium25', table.table_style_info.name)
21
+ assert_equal(true, table.table_style_info.show_row_stripes)
22
+ end
23
+
24
+ def test_add_table
25
+ name = "test"
26
+ table = @ws.add_table("A1:D5", :name => name)
27
+ assert(table.is_a?(Axlsx::Table), "must create a table")
28
+ assert_equal(@ws.workbook.tables.last, table, "must be added to workbook table collection")
29
+ assert_equal(@ws.tables.last, table, "must be added to worksheet table collection")
30
+ assert_equal(table.name, name, "options for name are applied")
31
+ end
32
+
33
+ def test_pn
34
+ @ws.add_table("A1:D5")
35
+ assert_equal(@ws.tables.first.pn, "tables/table1.xml")
36
+ end
37
+
38
+ def test_rId
39
+ table = @ws.add_table("A1:D5")
40
+ assert_equal @ws.relationships.for(table).Id, table.rId
41
+ end
42
+
43
+ def test_index
44
+ @ws.add_table("A1:D5")
45
+ assert_equal(@ws.tables.first.index, @ws.workbook.tables.index(@ws.tables.first))
46
+ end
47
+
48
+ def test_relationships
49
+ assert(@ws.relationships.empty?)
50
+ table = @ws.add_table("A1:D5")
51
+ assert_equal(@ws.relationships.size, 1, "adding a table adds a relationship")
52
+ table = @ws.add_table("F1:J5")
53
+ assert_equal(@ws.relationships.size, 2, "adding a table adds a relationship")
54
+ end
55
+
56
+ def test_to_xml_string
57
+ table = @ws.add_table("A1:D5")
58
+ schema = Nokogiri::XML::Schema(File.open(Axlsx::SML_XSD))
59
+ doc = Nokogiri::XML(table.to_xml_string)
60
+ errors = []
61
+ schema.validate(doc).each do |error|
62
+ errors.push error
63
+ puts error.message
64
+ end
65
+ assert(errors.empty?, "error free validation")
66
+ end
67
+
68
+ end
@@ -0,0 +1,53 @@
1
+ require 'tc_helper.rb'
2
+
3
+ class TestTableStyleInfo < Test::Unit::TestCase
4
+ def setup
5
+ p = Axlsx::Package.new
6
+ @ws = p.workbook.add_worksheet
7
+ 40.times do
8
+ @ws.add_row %w(aa bb cc dd ee ff gg hh ii jj kk)
9
+ end
10
+ @table = @ws.add_table(Axlsx::cell_range([@ws.rows.first.cells.first,@ws.rows.last.cells.last], false), :name => 'foo')
11
+ @options = { :show_first_column => 1,
12
+ :show_last_column => 1,
13
+ :show_row_stripes => 1,
14
+ :show_column_stripes => 1,
15
+ :name => "TableStyleDark4" }
16
+
17
+
18
+ end
19
+
20
+ def test_initialize
21
+ table_style = Axlsx::TableStyleInfo.new @options
22
+ @options.each do |key, value|
23
+ assert_equal(value, table_style.send(key.to_sym))
24
+ end
25
+ end
26
+
27
+ def test_boolean_properties
28
+ table_style = Axlsx::TableStyleInfo.new
29
+ @options.keys.each do |key|
30
+ assert_nothing_raised { table_style.send("#{key.to_sym}=", true) }
31
+ assert_raises(ArgumentError) { table_style.send(key.to_sym, 'foo') }
32
+ end
33
+ end
34
+ def doc
35
+ @doc ||= Nokogiri::XML(Axlsx::TableStyleInfo.new(@options).to_xml_string)
36
+ end
37
+
38
+ def test_to_xml_string_first_column
39
+ assert(doc.xpath('//tableStyleInfo[@showLastColumn=1]'))
40
+ end
41
+
42
+ def test_to_xml_string_row_stripes
43
+ assert(doc.xpath('//tableStyleInfo[@showRowStripes=1]'))
44
+ end
45
+
46
+ def test_to_xml_string_column_stripes
47
+ assert(doc.xpath('//tableStyleInfo[@showColumnStripes=1]'))
48
+ end
49
+
50
+ def test_to_xml_string_name
51
+ assert(doc.xpath("//tableStyleInfo[@name=#{@options[:name]}]"))
52
+ end
53
+ end