openxml-docx 0.9.0 → 0.10.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 (211) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +4 -4
  3. data/examples/drawing-ml +134 -0
  4. data/examples/table +28 -0
  5. data/lib/openxml/docx.rb +9 -0
  6. data/lib/openxml/docx/attribute_builder.rb +17 -4
  7. data/lib/openxml/docx/elements/absolute_position_tab.rb +4 -19
  8. data/lib/openxml/docx/elements/bidi_embed.rb +1 -10
  9. data/lib/openxml/docx/elements/bidi_override.rb +1 -9
  10. data/lib/openxml/docx/elements/break.rb +3 -14
  11. data/lib/openxml/docx/elements/control.rb +5 -2
  12. data/lib/openxml/docx/elements/deleted_text.rb +1 -1
  13. data/lib/openxml/docx/elements/drawing.rb +9 -0
  14. data/lib/openxml/docx/elements/element.rb +2 -1
  15. data/lib/openxml/docx/elements/embed_bold.rb +25 -0
  16. data/lib/openxml/docx/elements/embed_bold_italic.rb +25 -0
  17. data/lib/openxml/docx/elements/embed_italic.rb +25 -0
  18. data/lib/openxml/docx/elements/embed_regular.rb +25 -0
  19. data/lib/openxml/docx/elements/family.rb +22 -0
  20. data/lib/openxml/docx/elements/font.rb +14 -0
  21. data/lib/openxml/docx/elements/grid_column.rb +2 -2
  22. data/lib/openxml/docx/elements/group_shape.rb +10 -0
  23. data/lib/openxml/docx/elements/markup_compatibility_alternate_content.rb +10 -0
  24. data/lib/openxml/docx/elements/markup_compatibility_choice.rb +13 -0
  25. data/lib/openxml/docx/elements/markup_compatibility_fallback.rb +10 -0
  26. data/lib/openxml/docx/elements/paper_source.rb +4 -2
  27. data/lib/openxml/docx/elements/section_properties.rb +9 -0
  28. data/lib/openxml/docx/elements/symbol.rb +4 -2
  29. data/lib/openxml/docx/elements/table.rb +1 -1
  30. data/lib/openxml/docx/elements/table_cell.rb +2 -1
  31. data/lib/openxml/docx/elements/table_row.rb +7 -5
  32. data/lib/openxml/docx/elements/text.rb +1 -10
  33. data/lib/openxml/docx/elements/vml_container.rb +10 -0
  34. data/lib/openxml/docx/elements/word_processing_drawing_anchor.rb +23 -0
  35. data/lib/openxml/docx/elements/word_processing_drawing_effect_extent.rb +16 -0
  36. data/lib/openxml/docx/elements/word_processing_drawing_extent.rb +14 -0
  37. data/lib/openxml/docx/elements/word_processing_drawing_nv_graphic_frame_properties.rb +11 -0
  38. data/lib/openxml/docx/elements/word_processing_drawing_object_nv_properties.rb +17 -0
  39. data/lib/openxml/docx/elements/word_processing_drawing_position_h.rb +23 -0
  40. data/lib/openxml/docx/elements/word_processing_drawing_position_offset.rb +10 -0
  41. data/lib/openxml/docx/elements/word_processing_drawing_position_v.rb +23 -0
  42. data/lib/openxml/docx/elements/word_processing_drawing_simple_position.rb +13 -0
  43. data/lib/openxml/docx/elements/word_processing_drawing_wrap_none.rb +10 -0
  44. data/lib/openxml/docx/elements/word_processing_shapes_body_properties.rb +58 -0
  45. data/lib/openxml/docx/elements/word_processing_shapes_shape.rb +12 -0
  46. data/lib/openxml/docx/elements/word_processing_shapes_shape_properties.rb +23 -0
  47. data/lib/openxml/docx/package.rb +73 -1
  48. data/lib/openxml/docx/parts/document.rb +6 -24
  49. data/lib/openxml/docx/parts/fonts.rb +35 -0
  50. data/lib/openxml/docx/parts/footer.rb +32 -0
  51. data/lib/openxml/docx/parts/header.rb +32 -0
  52. data/lib/openxml/docx/parts/settings.rb +6 -2
  53. data/lib/openxml/docx/parts/styles.rb +5 -6
  54. data/lib/openxml/docx/properties.rb +0 -1
  55. data/lib/openxml/docx/properties/alignment.rb +1 -1
  56. data/lib/openxml/docx/properties/base_property.rb +13 -0
  57. data/lib/openxml/docx/properties/border.rb +11 -9
  58. data/lib/openxml/docx/properties/color.rb +6 -4
  59. data/lib/openxml/docx/properties/column.rb +4 -2
  60. data/lib/openxml/docx/properties/columns.rb +6 -4
  61. data/lib/openxml/docx/properties/complex_property.rb +1 -1
  62. data/lib/openxml/docx/properties/conditional_formatting.rb +14 -12
  63. data/lib/openxml/docx/properties/document_grid.rb +4 -10
  64. data/lib/openxml/docx/properties/east_asian_layout.rb +6 -11
  65. data/lib/openxml/docx/properties/font.rb +18 -22
  66. data/lib/openxml/docx/properties/footer_reference.rb +21 -0
  67. data/lib/openxml/docx/properties/frame.rb +16 -47
  68. data/lib/openxml/docx/properties/header_reference.rb +21 -0
  69. data/lib/openxml/docx/properties/indentation.rb +11 -8
  70. data/lib/openxml/docx/properties/language.rb +5 -3
  71. data/lib/openxml/docx/properties/latent_styles.rb +9 -6
  72. data/lib/openxml/docx/properties/latent_styles_exception.rb +9 -6
  73. data/lib/openxml/docx/properties/line_numbering.rb +5 -11
  74. data/lib/openxml/docx/properties/manual_width.rb +4 -2
  75. data/lib/openxml/docx/properties/numbering.rb +4 -2
  76. data/lib/openxml/docx/properties/page_borders.rb +6 -19
  77. data/lib/openxml/docx/properties/page_margins.rb +10 -7
  78. data/lib/openxml/docx/properties/page_numbering.rb +66 -74
  79. data/lib/openxml/docx/properties/page_size.rb +5 -12
  80. data/lib/openxml/docx/properties/shading.rb +46 -52
  81. data/lib/openxml/docx/properties/spacing.rb +9 -14
  82. data/lib/openxml/docx/properties/table_border.rb +12 -10
  83. data/lib/openxml/docx/properties/table_cell_border.rb +12 -10
  84. data/lib/openxml/docx/properties/table_cell_margin.rb +6 -4
  85. data/lib/openxml/docx/properties/table_cell_spacing.rb +5 -3
  86. data/lib/openxml/docx/properties/table_cell_width.rb +5 -3
  87. data/lib/openxml/docx/properties/table_indent.rb +5 -3
  88. data/lib/openxml/docx/properties/table_layout.rb +2 -4
  89. data/lib/openxml/docx/properties/table_look.rb +8 -6
  90. data/lib/openxml/docx/properties/table_p_pr.rb +11 -30
  91. data/lib/openxml/docx/properties/table_row_height.rb +13 -0
  92. data/lib/openxml/docx/properties/table_width.rb +5 -3
  93. data/lib/openxml/docx/properties/underline.rb +13 -12
  94. data/lib/openxml/docx/properties/wafter.rb +5 -3
  95. data/lib/openxml/docx/properties/wbefore.rb +5 -3
  96. data/lib/openxml/docx/root_namespaces.rb +74 -0
  97. data/lib/openxml/docx/section.rb +2 -0
  98. data/lib/openxml/docx/style.rb +4 -4
  99. data/lib/openxml/docx/version.rb +1 -1
  100. data/lib/openxml/drawingml.rb +17 -0
  101. data/lib/openxml/drawingml/elements.rb +13 -0
  102. data/lib/openxml/drawingml/elements/adjust_values_list.rb +11 -0
  103. data/lib/openxml/drawingml/elements/blip_fill.rb +14 -0
  104. data/lib/openxml/drawingml/elements/extension.rb +13 -0
  105. data/lib/openxml/drawingml/elements/extension_list.rb +11 -0
  106. data/lib/openxml/drawingml/elements/extents.rb +14 -0
  107. data/lib/openxml/drawingml/elements/graphic.rb +10 -0
  108. data/lib/openxml/drawingml/elements/graphic_data.rb +12 -0
  109. data/lib/openxml/drawingml/elements/graphic_frame_locks.rb +17 -0
  110. data/lib/openxml/drawingml/elements/head_end.rb +28 -0
  111. data/lib/openxml/drawingml/elements/no_fill.rb +10 -0
  112. data/lib/openxml/drawingml/elements/non_visual_drawing_properties.rb +17 -0
  113. data/lib/openxml/drawingml/elements/non_visual_picture_drawing_properties.rb +12 -0
  114. data/lib/openxml/drawingml/elements/non_visual_picture_properties.rb +10 -0
  115. data/lib/openxml/drawingml/elements/offset.rb +14 -0
  116. data/lib/openxml/drawingml/elements/outline.rb +36 -0
  117. data/lib/openxml/drawingml/elements/picture.rb +10 -0
  118. data/lib/openxml/drawingml/elements/preset_geometry.rb +210 -0
  119. data/lib/openxml/drawingml/elements/round.rb +10 -0
  120. data/lib/openxml/drawingml/elements/shape_guide.rb +40 -0
  121. data/lib/openxml/drawingml/elements/solid_fill.rb +10 -0
  122. data/lib/openxml/drawingml/elements/srgb_color.rb +14 -0
  123. data/lib/openxml/drawingml/elements/tail_end.rb +28 -0
  124. data/lib/openxml/drawingml/elements/transform_effect.rb +18 -0
  125. data/lib/openxml/drawingml/elements/wordprocessing_shape_group.rb +11 -0
  126. data/lib/openxml/vml.rb +17 -0
  127. data/lib/openxml/vml/elements.rb +13 -0
  128. data/lib/openxml/vml/elements/group.rb +88 -0
  129. data/lib/openxml/vml/elements/rectangle.rb +115 -0
  130. data/lib/openxml/vml/elements/rounded_rectangle.rb +121 -0
  131. data/openxml-docx.gemspec +1 -1
  132. data/spec/elements/absolute_position_tab_spec.rb +15 -47
  133. data/spec/elements/bidi_embed_spec.rb +4 -8
  134. data/spec/elements/bidi_override_spec.rb +4 -8
  135. data/spec/elements/break_spec.rb +8 -31
  136. data/spec/elements/content_part_spec.rb +2 -2
  137. data/spec/elements/control_spec.rb +6 -6
  138. data/spec/elements/deleted_text_spec.rb +2 -2
  139. data/spec/elements/drawing_spec.rb +11 -0
  140. data/spec/elements/drawingml/adjust_values_list_spec.rb +8 -0
  141. data/spec/elements/drawingml/blip_fill_spec.rb +34 -0
  142. data/spec/elements/drawingml/extension_list_spec.rb +8 -0
  143. data/spec/elements/drawingml/extension_spec.rb +19 -0
  144. data/spec/elements/drawingml/extents_spec.rb +33 -0
  145. data/spec/elements/drawingml/graphic_data_spec.rb +19 -0
  146. data/spec/elements/drawingml/graphic_frame_locks_spec.rb +78 -0
  147. data/spec/elements/drawingml/graphic_spec.rb +8 -0
  148. data/spec/elements/drawingml/head_end_spec.rb +45 -0
  149. data/spec/elements/drawingml/no_fill_spec.rb +8 -0
  150. data/spec/elements/drawingml/non_visual_drawing_properties_spec.rb +63 -0
  151. data/spec/elements/drawingml/non_visual_picture_drawing_properties_spec.rb +18 -0
  152. data/spec/elements/drawingml/non_visual_picture_properties_spec.rb +8 -0
  153. data/spec/elements/drawingml/offset_spec.rb +32 -0
  154. data/spec/elements/drawingml/outline_spec.rb +58 -0
  155. data/spec/elements/drawingml/picture_spec.rb +8 -0
  156. data/spec/elements/drawingml/preset_geometry_spec.rb +19 -0
  157. data/spec/elements/drawingml/round_spec.rb +8 -0
  158. data/spec/elements/drawingml/shape_guide_spec.rb +49 -0
  159. data/spec/elements/drawingml/solid_fill_spec.rb +8 -0
  160. data/spec/elements/drawingml/srgb_color_spec.rb +20 -0
  161. data/spec/elements/drawingml/tail_end_spec.rb +44 -0
  162. data/spec/elements/drawingml/transform_effect_spec.rb +80 -0
  163. data/spec/elements/drawingml/wordprocessing_shape_group_spec.rb +12 -0
  164. data/spec/elements/group_shape_spec.rb +11 -0
  165. data/spec/elements/markup_compatibility_alternate_content_spec.rb +11 -0
  166. data/spec/elements/markup_compatibility_choice_spec.rb +22 -0
  167. data/spec/elements/markup_compatibility_fallback_spec.rb +11 -0
  168. data/spec/elements/section_properties_spec.rb +12 -0
  169. data/spec/elements/symbol_spec.rb +4 -7
  170. data/spec/elements/text_spec.rb +2 -2
  171. data/spec/elements/vml/group_spec.rb +542 -0
  172. data/spec/elements/vml/rectangle_spec.rb +739 -0
  173. data/spec/elements/vml/rounded_rectangle_spec.rb +656 -0
  174. data/spec/elements/vml_container_spec.rb +11 -0
  175. data/spec/elements/word_processing_drawing_anchor_spec.rb +40 -0
  176. data/spec/elements/word_processing_drawing_effect_extent_spec.rb +57 -0
  177. data/spec/elements/word_processing_drawing_extent_spec.rb +34 -0
  178. data/spec/elements/word_processing_drawing_nv_graphic_frame_properties_spec.rb +11 -0
  179. data/spec/elements/word_processing_drawing_object_nv_properties_spec.rb +67 -0
  180. data/spec/elements/word_processing_drawing_position_h_spec.rb +21 -0
  181. data/spec/elements/word_processing_drawing_position_v_spec.rb +21 -0
  182. data/spec/elements/word_processing_drawing_simple_position_spec.rb +34 -0
  183. data/spec/elements/word_processing_drawing_wrap_none_spec.rb +12 -0
  184. data/spec/elements/word_processing_shapes_body_properties_spec.rb +223 -0
  185. data/spec/elements/word_processing_shapes_shape_properties_spec.rb +21 -0
  186. data/spec/elements/word_processing_shapes_shape_spec.rb +23 -0
  187. data/spec/parts/footer_spec.rb +33 -0
  188. data/spec/parts/header_spec.rb +33 -0
  189. data/spec/properties/footer_reference_spec.rb +32 -0
  190. data/spec/properties/header_reference_spec.rb +32 -0
  191. data/spec/properties/page_numbering_spec.rb +1 -1
  192. data/spec/properties/{table_cell_fit_text.rb → table_cell_fit_text_spec.rb} +0 -0
  193. data/spec/properties/{table_cell_width.rb → table_cell_width_spec.rb} +0 -0
  194. data/spec/properties/table_layout_spec.rb +14 -12
  195. data/spec/properties/{table_row_height.rb → table_row_height_spec.rb} +0 -0
  196. data/spec/section_spec.rb +2 -0
  197. data/spec/spec_helper.rb +2 -0
  198. data/spec/support/data/elements/grid_column_element.xml +1 -1
  199. data/spec/support/data/elements/table_grid_element.xml +1 -1
  200. data/spec/support/data/parts/document_with_children_part.xml +2 -1
  201. data/spec/support/data/parts/document_with_multiple_sections_part.xml +1 -1
  202. data/spec/support/data/parts/document_with_one_section_part.xml +1 -1
  203. data/spec/support/data/parts/empty_document_part.xml +1 -1
  204. data/spec/support/data/parts/empty_footer_part.xml +1 -0
  205. data/spec/support/data/parts/empty_header_part.xml +1 -0
  206. data/spec/support/data/parts/footer_with_children_part.xml +1 -0
  207. data/spec/support/data/parts/header_with_children_part.xml +1 -0
  208. data/spec/support/element_test_macros.rb +58 -9
  209. metadata +126 -9
  210. data/lib/openxml/docx/properties/tr_height.rb +0 -19
  211. data/lib/openxml/docx/properties/width_property.rb +0 -17
@@ -0,0 +1,656 @@
1
+ require "spec_helper"
2
+
3
+ describe OpenXml::Vml::Elements::RoundedRectangle do
4
+ include ElementTestMacros
5
+
6
+ it_should_use tag: :roundrect, name: "rounded_rectangle"
7
+
8
+ # Arc Size Attribute
9
+
10
+ for_attribute(:arc_size, displays_as: :arcsize) do
11
+ with_values(%w(50% 1% 9000f)) do
12
+ it_should_assign_successfully
13
+ it_should_output_regular_xml
14
+ end
15
+
16
+ with_values([50, 2, "9000"]) do
17
+ it_should_raise_an_exception
18
+ end
19
+ end
20
+
21
+
22
+ # Connector Type Attribute
23
+
24
+ for_attribute(:connector_type, displays_as: :connectortype, with_namespace: :o) do
25
+ with_values(%i(curved elbow none straight)) do
26
+ it_should_assign_successfully
27
+ it_should_output_regular_xml
28
+ end
29
+
30
+ with_values([:funky, 5, "auto"]) do
31
+ it_should_raise_an_exception
32
+ end
33
+ end
34
+
35
+
36
+ # HR Align Attribute
37
+
38
+ for_attribute(:hr_align, displays_as: :hralign, with_namespace: :o) do
39
+ with_values(%i(center left right)) do
40
+ it_should_assign_successfully
41
+ it_should_output_regular_xml
42
+ end
43
+
44
+ with_values([:justified, 4, "overThere"]) do
45
+ it_should_raise_an_exception
46
+ end
47
+ end
48
+
49
+
50
+ # Inset Mode Attribute
51
+
52
+ for_attribute(:inset_mode, displays_as: :insetmode, with_namespace: :o) do
53
+ with_values(%i(auto custom)) do
54
+ it_should_assign_successfully
55
+ it_should_output_regular_xml
56
+ end
57
+
58
+ with_values([:left, "right", 0]) do
59
+ it_should_raise_an_exception
60
+ end
61
+ end
62
+
63
+
64
+ # Coordinate-based Attributes
65
+
66
+ good_coord_values = [ "100,100", "-100,-100", "100,-100", "100, 100", "-100, -100", "100, -100" ]
67
+ bad_coord_values = [ "100 100", "x:10,y:10", :over_there ]
68
+
69
+ for_attribute(:coordinate_origin, displays_as: :coordorigin) do
70
+ with_values(good_coord_values) do
71
+ it_should_assign_successfully
72
+ it_should_output_regular_xml
73
+ end
74
+
75
+ with_values(bad_coord_values) do
76
+ it_should_raise_an_exception
77
+ end
78
+ end
79
+
80
+ for_attribute(:coordinate_size, displays_as: :coordsize) do
81
+ with_values(good_coord_values) do
82
+ it_should_assign_successfully
83
+ it_should_output_regular_xml
84
+ end
85
+
86
+ with_values(bad_coord_values) do
87
+ it_should_raise_an_exception
88
+ end
89
+ end
90
+
91
+
92
+ # Color-based Attributes
93
+
94
+ good_color_values = [ "#FFFFFF", :red, "palateEntry [0]", "palateEntry" ]
95
+ bad_color_values = [ 54, 0 ]
96
+
97
+ for_attribute(:chroma_key, displays_as: :chromakey) do
98
+ with_values(good_color_values) do
99
+ it_should_assign_successfully
100
+ it_should_output_regular_xml
101
+ end
102
+
103
+ with_values(bad_color_values) do
104
+ it_should_raise_an_exception
105
+ end
106
+ end
107
+
108
+ for_attribute(:fill_color, displays_as: :fillcolor) do
109
+ with_values(good_color_values) do
110
+ it_should_assign_successfully
111
+ it_should_output_regular_xml
112
+ end
113
+
114
+ with_values(bad_color_values) do
115
+ it_should_raise_an_exception
116
+ end
117
+ end
118
+
119
+ for_attribute(:stroke_color, displays_as: :strokecolor) do
120
+ with_values(good_color_values) do
121
+ it_should_assign_successfully
122
+ it_should_output_regular_xml
123
+ end
124
+
125
+ with_values(bad_color_values) do
126
+ it_should_raise_an_exception
127
+ end
128
+ end
129
+
130
+
131
+ # Diagram Layout-based Attributes
132
+
133
+ good_diagram_layout_values = (0..3)
134
+ bad_diagram_layout_values = [ -1, 4, "Five is Right Out" ]
135
+
136
+ for_attribute(:diagram_node_layout, displays_as: :dgmlayout, with_namespace: :o) do
137
+ with_values(good_diagram_layout_values) do
138
+ it_should_assign_successfully
139
+ it_should_output_regular_xml
140
+ end
141
+
142
+ with_values(bad_diagram_layout_values) do
143
+ it_should_raise_an_exception
144
+ end
145
+ end
146
+
147
+ for_attribute(:diagram_node_recent_layout, displays_as: :dgmlayoutmru, with_namespace: :o) do
148
+ with_values(good_diagram_layout_values) do
149
+ it_should_assign_successfully
150
+ it_should_output_regular_xml
151
+ end
152
+
153
+ with_values(bad_diagram_layout_values) do
154
+ it_should_raise_an_exception
155
+ end
156
+ end
157
+
158
+
159
+ # Integer-based Attributes
160
+
161
+ good_integer_values = [1, -1, 0]
162
+ bad_integer_values = [2.5, :five, "five"]
163
+
164
+ for_attribute(:diagram_node_kind, displays_as: :dgmnodekind, with_namespace: :o) do
165
+ with_values(good_integer_values) do
166
+ it_should_assign_successfully
167
+ it_should_output_regular_xml
168
+ end
169
+
170
+ with_values(bad_integer_values) do
171
+ it_should_raise_an_exception
172
+ end
173
+ end
174
+
175
+ for_attribute(:hr_percent, displays_as: :hrpct, with_namespace: :o) do
176
+ with_values(good_integer_values) do
177
+ it_should_assign_successfully
178
+ it_should_output_regular_xml
179
+ end
180
+
181
+ with_values(bad_integer_values) do
182
+ it_should_raise_an_exception
183
+ end
184
+ end
185
+
186
+ for_attribute(:regroup_id, displays_as: :regroupid, with_namespace: :o) do
187
+ with_values(good_integer_values) do
188
+ it_should_assign_successfully
189
+ it_should_output_regular_xml
190
+ end
191
+
192
+ with_values(bad_integer_values) do
193
+ it_should_raise_an_exception
194
+ end
195
+ end
196
+
197
+
198
+ # Black and White Mode-based Attributes
199
+
200
+ good_bw_mode_values = %i(auto black blackTextAndLines color grayOutline grayScale hide highContrast inverseGray lightGrayscale undrawn white)
201
+ bad_bw_mode_values = [:paintItBlack, 0, "rainbows"]
202
+
203
+ for_attribute(:bw_mode, displays_as: :bwmode, with_namespace: :o) do
204
+ with_values(good_bw_mode_values) do
205
+ it_should_assign_successfully
206
+ it_should_output_regular_xml
207
+ end
208
+
209
+ with_values(bad_bw_mode_values) do
210
+ it_should_raise_an_exception
211
+ end
212
+ end
213
+
214
+ for_attribute(:bw_normal, displays_as: :bwnormal, with_namespace: :o) do
215
+ with_values(good_bw_mode_values) do
216
+ it_should_assign_successfully
217
+ it_should_output_regular_xml
218
+ end
219
+
220
+ with_values(bad_bw_mode_values) do
221
+ it_should_raise_an_exception
222
+ end
223
+ end
224
+
225
+ for_attribute(:bw_pure, displays_as: :bwpure, with_namespace: :o) do
226
+ with_values(good_bw_mode_values) do
227
+ it_should_assign_successfully
228
+ it_should_output_regular_xml
229
+ end
230
+
231
+ with_values(bad_bw_mode_values) do
232
+ it_should_raise_an_exception
233
+ end
234
+ end
235
+
236
+
237
+ # String-based Attributes
238
+
239
+ good_string_values = ["A String", "AnotherString", "000001f"]
240
+ bad_string_values = [0, :nope, false]
241
+
242
+ for_attribute(:alt) do
243
+ with_values(good_string_values) do
244
+ it_should_assign_successfully
245
+ it_should_output_regular_xml
246
+ end
247
+
248
+ with_values(bad_string_values) do
249
+ it_should_raise_an_exception
250
+ end
251
+ end
252
+
253
+ for_attribute(:css_class, displays_as: :class) do
254
+ with_values(good_string_values) do
255
+ it_should_assign_successfully
256
+ it_should_output_regular_xml
257
+ end
258
+
259
+ with_values(bad_string_values) do
260
+ it_should_raise_an_exception
261
+ end
262
+ end
263
+
264
+ for_attribute(:href) do
265
+ with_values(good_string_values) do
266
+ it_should_assign_successfully
267
+ it_should_output_regular_xml
268
+ end
269
+
270
+ with_values(bad_string_values) do
271
+ it_should_raise_an_exception
272
+ end
273
+ end
274
+
275
+ for_attribute(:id) do
276
+ with_values(good_string_values) do
277
+ it_should_assign_successfully
278
+ it_should_output_regular_xml
279
+ end
280
+
281
+ with_values(bad_string_values) do
282
+ it_should_raise_an_exception
283
+ end
284
+ end
285
+
286
+ for_attribute(:opacity) do
287
+ with_values(good_string_values) do
288
+ it_should_assign_successfully
289
+ it_should_output_regular_xml
290
+ end
291
+
292
+ with_values(bad_string_values) do
293
+ it_should_raise_an_exception
294
+ end
295
+ end
296
+
297
+ for_attribute(:stroke_weight, displays_as: :strokeweight) do
298
+ with_values(good_string_values) do
299
+ it_should_assign_successfully
300
+ it_should_output_regular_xml
301
+ end
302
+
303
+ with_values(bad_string_values) do
304
+ it_should_raise_an_exception
305
+ end
306
+ end
307
+
308
+ for_attribute(:style) do
309
+ with_values(good_string_values) do
310
+ it_should_assign_successfully
311
+ it_should_output_regular_xml
312
+ end
313
+
314
+ with_values(bad_string_values) do
315
+ it_should_raise_an_exception
316
+ end
317
+ end
318
+
319
+ for_attribute(:target) do
320
+ with_values(good_string_values) do
321
+ it_should_assign_successfully
322
+ it_should_output_regular_xml
323
+ end
324
+
325
+ with_values(bad_string_values) do
326
+ it_should_raise_an_exception
327
+ end
328
+ end
329
+
330
+ for_attribute(:title) do
331
+ with_values(good_string_values) do
332
+ it_should_assign_successfully
333
+ it_should_output_regular_xml
334
+ end
335
+
336
+ with_values(bad_string_values) do
337
+ it_should_raise_an_exception
338
+ end
339
+ end
340
+
341
+ for_attribute(:wrap_coordinates, displays_as: :wrapcoords) do
342
+ with_values(good_string_values) do
343
+ it_should_assign_successfully
344
+ it_should_output_regular_xml
345
+ end
346
+
347
+ with_values(bad_string_values) do
348
+ it_should_raise_an_exception
349
+ end
350
+ end
351
+
352
+ for_attribute(:border_bottom_color, displays_as: :borderbottomcolor, with_namespace: :o) do
353
+ with_values(good_string_values) do
354
+ it_should_assign_successfully
355
+ it_should_output_regular_xml
356
+ end
357
+
358
+ with_values(bad_string_values) do
359
+ it_should_raise_an_exception
360
+ end
361
+ end
362
+
363
+ for_attribute(:border_left_color, displays_as: :borderleftcolor, with_namespace: :o) do
364
+ with_values(good_string_values) do
365
+ it_should_assign_successfully
366
+ it_should_output_regular_xml
367
+ end
368
+
369
+ with_values(bad_string_values) do
370
+ it_should_raise_an_exception
371
+ end
372
+ end
373
+
374
+ for_attribute(:border_right_color, displays_as: :borderrightcolor, with_namespace: :o) do
375
+ with_values(good_string_values) do
376
+ it_should_assign_successfully
377
+ it_should_output_regular_xml
378
+ end
379
+
380
+ with_values(bad_string_values) do
381
+ it_should_raise_an_exception
382
+ end
383
+ end
384
+
385
+ for_attribute(:border_top_color, displays_as: :bordertopcolor, with_namespace: :o) do
386
+ with_values(good_string_values) do
387
+ it_should_assign_successfully
388
+ it_should_output_regular_xml
389
+ end
390
+
391
+ with_values(bad_string_values) do
392
+ it_should_raise_an_exception
393
+ end
394
+ end
395
+
396
+ for_attribute(:optional_string, displays_as: :spid, with_namespace: :o) do
397
+ with_values(good_string_values) do
398
+ it_should_assign_successfully
399
+ it_should_output_regular_xml
400
+ end
401
+
402
+ with_values(bad_string_values) do
403
+ it_should_raise_an_exception
404
+ end
405
+ end
406
+
407
+ for_attribute(:optional_number, displays_as: :spt, with_namespace: :o) do
408
+ with_values(good_string_values) do
409
+ it_should_assign_successfully
410
+ it_should_output_regular_xml
411
+ end
412
+
413
+ with_values(bad_string_values) do
414
+ it_should_raise_an_exception
415
+ end
416
+ end
417
+
418
+
419
+ # (Explicitly) True/False-based Attributes
420
+
421
+ good_tf_values = %w(0 1 t f true false)
422
+ bad_tf_values = ["yes", "no", "on", "off", 5]
423
+
424
+ for_attribute(:filled) do
425
+ with_values(good_tf_values) do
426
+ it_should_assign_successfully
427
+ it_should_output_regular_xml
428
+ end
429
+
430
+ with_values(bad_tf_values) do
431
+ it_should_raise_an_exception
432
+ end
433
+ end
434
+
435
+ for_attribute(:inset_pen, displays_as: :insetpen) do
436
+ with_values(good_tf_values) do
437
+ it_should_assign_successfully
438
+ it_should_output_regular_xml
439
+ end
440
+
441
+ with_values(bad_tf_values) do
442
+ it_should_raise_an_exception
443
+ end
444
+ end
445
+
446
+ for_attribute(:print) do
447
+ with_values(good_tf_values) do
448
+ it_should_assign_successfully
449
+ it_should_output_regular_xml
450
+ end
451
+
452
+ with_values(bad_tf_values) do
453
+ it_should_raise_an_exception
454
+ end
455
+ end
456
+
457
+ for_attribute(:stroked) do
458
+ with_values(good_tf_values) do
459
+ it_should_assign_successfully
460
+ it_should_output_regular_xml
461
+ end
462
+
463
+ with_values(bad_tf_values) do
464
+ it_should_raise_an_exception
465
+ end
466
+ end
467
+
468
+ for_attribute(:allow_in_cell, displays_as: :allowincell, with_namespace: :o) do
469
+ with_values(good_tf_values) do
470
+ it_should_assign_successfully
471
+ it_should_output_regular_xml
472
+ end
473
+
474
+ with_values(bad_tf_values) do
475
+ it_should_raise_an_exception
476
+ end
477
+ end
478
+
479
+ for_attribute(:allow_overlap, displays_as: :allowoverlap, with_namespace: :o) do
480
+ with_values(good_tf_values) do
481
+ it_should_assign_successfully
482
+ it_should_output_regular_xml
483
+ end
484
+
485
+ with_values(bad_tf_values) do
486
+ it_should_raise_an_exception
487
+ end
488
+ end
489
+
490
+ for_attribute(:bullet, with_namespace: :o) do
491
+ with_values(good_tf_values) do
492
+ it_should_assign_successfully
493
+ it_should_output_regular_xml
494
+ end
495
+
496
+ with_values(bad_tf_values) do
497
+ it_should_raise_an_exception
498
+ end
499
+ end
500
+
501
+ for_attribute(:button, with_namespace: :o) do
502
+ with_values(good_tf_values) do
503
+ it_should_assign_successfully
504
+ it_should_output_regular_xml
505
+ end
506
+
507
+ with_values(bad_tf_values) do
508
+ it_should_raise_an_exception
509
+ end
510
+ end
511
+
512
+ for_attribute(:clip, with_namespace: :o) do
513
+ with_values(good_tf_values) do
514
+ it_should_assign_successfully
515
+ it_should_output_regular_xml
516
+ end
517
+
518
+ with_values(bad_tf_values) do
519
+ it_should_raise_an_exception
520
+ end
521
+ end
522
+
523
+ for_attribute(:clip_to_wrap, displays_as: :cliptowrap, with_namespace: :o) do
524
+ with_values(good_tf_values) do
525
+ it_should_assign_successfully
526
+ it_should_output_regular_xml
527
+ end
528
+
529
+ with_values(bad_tf_values) do
530
+ it_should_raise_an_exception
531
+ end
532
+ end
533
+
534
+ for_attribute(:double_click_notify, displays_as: :doubleclicknotify, with_namespace: :o) do
535
+ with_values(good_tf_values) do
536
+ it_should_assign_successfully
537
+ it_should_output_regular_xml
538
+ end
539
+
540
+ with_values(bad_tf_values) do
541
+ it_should_raise_an_exception
542
+ end
543
+ end
544
+
545
+ for_attribute(:force_dash, displays_as: :forcedash, with_namespace: :o) do
546
+ with_values(good_tf_values) do
547
+ it_should_assign_successfully
548
+ it_should_output_regular_xml
549
+ end
550
+
551
+ with_values(bad_tf_values) do
552
+ it_should_raise_an_exception
553
+ end
554
+ end
555
+
556
+ for_attribute(:hr, with_namespace: :o) do
557
+ with_values(good_tf_values) do
558
+ it_should_assign_successfully
559
+ it_should_output_regular_xml
560
+ end
561
+
562
+ with_values(bad_tf_values) do
563
+ it_should_raise_an_exception
564
+ end
565
+ end
566
+
567
+ for_attribute(:hr_no_shade, displays_as: :hrnoshade, with_namespace: :o) do
568
+ with_values(good_tf_values) do
569
+ it_should_assign_successfully
570
+ it_should_output_regular_xml
571
+ end
572
+
573
+ with_values(bad_tf_values) do
574
+ it_should_raise_an_exception
575
+ end
576
+ end
577
+
578
+ for_attribute(:hr_standard, displays_as: :hrstd, with_namespace: :o) do
579
+ with_values(good_tf_values) do
580
+ it_should_assign_successfully
581
+ it_should_output_regular_xml
582
+ end
583
+
584
+ with_values(bad_tf_values) do
585
+ it_should_raise_an_exception
586
+ end
587
+ end
588
+
589
+ for_attribute(:ole, with_namespace: :o) do
590
+ with_values(good_tf_values) do
591
+ it_should_assign_successfully
592
+ it_should_output_regular_xml
593
+ end
594
+
595
+ with_values(bad_tf_values) do
596
+ it_should_raise_an_exception
597
+ end
598
+ end
599
+
600
+ for_attribute(:ole_icon, displays_as: :oleicon, with_namespace: :o) do
601
+ with_values(good_tf_values) do
602
+ it_should_assign_successfully
603
+ it_should_output_regular_xml
604
+ end
605
+
606
+ with_values(bad_tf_values) do
607
+ it_should_raise_an_exception
608
+ end
609
+ end
610
+
611
+ for_attribute(:hide_extra_handles, displays_as: :oned, with_namespace: :o) do
612
+ with_values(good_tf_values) do
613
+ it_should_assign_successfully
614
+ it_should_output_regular_xml
615
+ end
616
+
617
+ with_values(bad_tf_values) do
618
+ it_should_raise_an_exception
619
+ end
620
+ end
621
+
622
+ for_attribute(:prefer_relative, displays_as: :preferrelative, with_namespace: :o) do
623
+ with_values(good_tf_values) do
624
+ it_should_assign_successfully
625
+ it_should_output_regular_xml
626
+ end
627
+
628
+ with_values(bad_tf_values) do
629
+ it_should_raise_an_exception
630
+ end
631
+ end
632
+
633
+ for_attribute(:user_drawn, displays_as: :userdrawn, with_namespace: :o) do
634
+ with_values(good_tf_values) do
635
+ it_should_assign_successfully
636
+ it_should_output_regular_xml
637
+ end
638
+
639
+ with_values(bad_tf_values) do
640
+ it_should_raise_an_exception
641
+ end
642
+ end
643
+
644
+ for_attribute(:user_hidden, displays_as: :userhidden, with_namespace: :o) do
645
+ with_values(good_tf_values) do
646
+ it_should_assign_successfully
647
+ it_should_output_regular_xml
648
+ end
649
+
650
+ with_values(bad_tf_values) do
651
+ it_should_raise_an_exception
652
+ end
653
+ end
654
+
655
+
656
+ end