rmagick 2.13.2 → 2.13.3.rc1

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of rmagick might be problematic. Click here for more details.

Files changed (185) hide show
  1. checksums.yaml +15 -0
  2. data/LICENSE +20 -0
  3. data/README +15 -0
  4. data/README.rc +231 -0
  5. data/build_tarball.rake +1 -1
  6. data/doc/comtasks.html +2 -2
  7. data/doc/constants.html +2 -2
  8. data/doc/draw.html +2 -2
  9. data/doc/ex/PreserveAspectRatio.rb +0 -0
  10. data/doc/ex/ViewBox.rb +0 -0
  11. data/doc/ex/adaptive_threshold.rb +0 -0
  12. data/doc/ex/add_noise.rb +0 -0
  13. data/doc/ex/affine.rb +0 -0
  14. data/doc/ex/affine_transform.rb +0 -0
  15. data/doc/ex/arc.rb +0 -0
  16. data/doc/ex/arcpath.rb +0 -0
  17. data/doc/ex/average.rb +0 -0
  18. data/doc/ex/axes.rb +0 -0
  19. data/doc/ex/bilevel_channel.rb +0 -0
  20. data/doc/ex/blur_image.rb +0 -0
  21. data/doc/ex/border.rb +0 -0
  22. data/doc/ex/bounding_box.rb +0 -0
  23. data/doc/ex/cbezier1.rb +0 -0
  24. data/doc/ex/cbezier2.rb +0 -0
  25. data/doc/ex/cbezier3.rb +0 -0
  26. data/doc/ex/cbezier4.rb +0 -0
  27. data/doc/ex/cbezier5.rb +0 -0
  28. data/doc/ex/cbezier6.rb +0 -0
  29. data/doc/ex/channel.rb +0 -0
  30. data/doc/ex/charcoal.rb +0 -0
  31. data/doc/ex/chop.rb +0 -0
  32. data/doc/ex/circle.rb +0 -0
  33. data/doc/ex/clip_path.rb +0 -0
  34. data/doc/ex/coalesce.rb +0 -0
  35. data/doc/ex/color_fill_to_border.rb +0 -0
  36. data/doc/ex/color_floodfill.rb +0 -0
  37. data/doc/ex/color_histogram.rb +0 -0
  38. data/doc/ex/color_reset.rb +0 -0
  39. data/doc/ex/colorize.rb +0 -0
  40. data/doc/ex/colors.rb +0 -0
  41. data/doc/ex/composite.rb +0 -0
  42. data/doc/ex/composite_layers.rb +0 -0
  43. data/doc/ex/contrast.rb +0 -0
  44. data/doc/ex/crop.rb +0 -0
  45. data/doc/ex/cycle_colormap.rb +0 -0
  46. data/doc/ex/drawcomp.rb +0 -0
  47. data/doc/ex/drop_shadow.rb +0 -0
  48. data/doc/ex/edge.rb +0 -0
  49. data/doc/ex/ellipse.rb +0 -0
  50. data/doc/ex/emboss.rb +0 -0
  51. data/doc/ex/enhance.rb +0 -0
  52. data/doc/ex/equalize.rb +0 -0
  53. data/doc/ex/evenodd.rb +0 -0
  54. data/doc/ex/flatten_images.rb +0 -0
  55. data/doc/ex/flip.rb +0 -0
  56. data/doc/ex/flop.rb +0 -0
  57. data/doc/ex/fonts.rb +0 -0
  58. data/doc/ex/frame.rb +0 -0
  59. data/doc/ex/gaussian_blur.rb +0 -0
  60. data/doc/ex/get_pixels.rb +0 -0
  61. data/doc/ex/gradientfill.rb +0 -0
  62. data/doc/ex/grav.rb +0 -0
  63. data/doc/ex/gravity.rb +0 -0
  64. data/doc/ex/hatchfill.rb +0 -0
  65. data/doc/ex/images/logo400x83.gif +0 -0
  66. data/doc/ex/implode.rb +0 -0
  67. data/doc/ex/level.rb +0 -0
  68. data/doc/ex/line.rb +0 -0
  69. data/doc/ex/matte_fill_to_border.rb +0 -0
  70. data/doc/ex/matte_floodfill.rb +0 -0
  71. data/doc/ex/matte_replace.rb +0 -0
  72. data/doc/ex/median_filter.rb +0 -0
  73. data/doc/ex/modulate.rb +0 -0
  74. data/doc/ex/mono.rb +0 -0
  75. data/doc/ex/morph.rb +0 -0
  76. data/doc/ex/mosaic.rb +0 -0
  77. data/doc/ex/motion_blur.rb +0 -0
  78. data/doc/ex/negate.rb +0 -0
  79. data/doc/ex/nested_rvg.rb +0 -0
  80. data/doc/ex/nonzero.rb +0 -0
  81. data/doc/ex/normalize.rb +0 -0
  82. data/doc/ex/oil_paint.rb +0 -0
  83. data/doc/ex/opacity.rb +0 -0
  84. data/doc/ex/ordered_dither.rb +0 -0
  85. data/doc/ex/path.rb +0 -0
  86. data/doc/ex/pattern1.rb +0 -0
  87. data/doc/ex/pattern2.rb +0 -0
  88. data/doc/ex/polygon.rb +0 -0
  89. data/doc/ex/polyline.rb +0 -0
  90. data/doc/ex/preview.rb +0 -0
  91. data/doc/ex/qbezierpath.rb +0 -0
  92. data/doc/ex/quantize-m.rb +0 -0
  93. data/doc/ex/radial_blur.rb +0 -0
  94. data/doc/ex/raise.rb +0 -0
  95. data/doc/ex/rectangle.rb +0 -0
  96. data/doc/ex/reduce_noise.rb +0 -0
  97. data/doc/ex/roll.rb +0 -0
  98. data/doc/ex/rotate.rb +0 -0
  99. data/doc/ex/rotate_f.rb +0 -0
  100. data/doc/ex/roundrect.rb +0 -0
  101. data/doc/ex/rubyname.rb +0 -0
  102. data/doc/ex/rvg_linecap.rb +0 -0
  103. data/doc/ex/rvg_linejoin.rb +0 -0
  104. data/doc/ex/rvg_opacity.rb +0 -0
  105. data/doc/ex/rvg_stroke_dasharray.rb +0 -0
  106. data/doc/ex/segment.rb +0 -0
  107. data/doc/ex/shade.rb +0 -0
  108. data/doc/ex/shave.rb +0 -0
  109. data/doc/ex/shear.rb +0 -0
  110. data/doc/ex/sketch.rb +0 -0
  111. data/doc/ex/skewx.rb +0 -0
  112. data/doc/ex/skewy.rb +0 -0
  113. data/doc/ex/smile.rb +0 -0
  114. data/doc/ex/solarize.rb +0 -0
  115. data/doc/ex/spread.rb +0 -0
  116. data/doc/ex/stegano.rb +0 -0
  117. data/doc/ex/stroke_dasharray.rb +0 -0
  118. data/doc/ex/stroke_fill.rb +0 -0
  119. data/doc/ex/stroke_linecap.rb +0 -0
  120. data/doc/ex/stroke_linejoin.rb +0 -0
  121. data/doc/ex/stroke_width.rb +0 -0
  122. data/doc/ex/swirl.rb +0 -0
  123. data/doc/ex/text.rb +0 -0
  124. data/doc/ex/text_align.rb +0 -0
  125. data/doc/ex/text_antialias.rb +0 -0
  126. data/doc/ex/text_undercolor.rb +0 -0
  127. data/doc/ex/texture_fill_to_border.rb +0 -0
  128. data/doc/ex/texture_floodfill.rb +0 -0
  129. data/doc/ex/texturefill.rb +0 -0
  130. data/doc/ex/threshold.rb +0 -0
  131. data/doc/ex/to_blob.rb +0 -0
  132. data/doc/ex/translate.rb +0 -0
  133. data/doc/ex/transparent.rb +0 -0
  134. data/doc/ex/unsharp_mask.rb +0 -0
  135. data/doc/ex/wave.rb +0 -0
  136. data/doc/ilist.html +2 -2
  137. data/doc/image1.html +2 -2
  138. data/doc/image2.html +2 -2
  139. data/doc/image3.html +2 -2
  140. data/doc/imageattrs.html +2 -2
  141. data/doc/imusage.html +2 -2
  142. data/doc/index.html +3 -3
  143. data/doc/info.html +2 -2
  144. data/doc/magick.html +2 -2
  145. data/doc/optequiv.html +2 -2
  146. data/doc/rvg.html +2 -2
  147. data/doc/rvgclip.html +2 -2
  148. data/doc/rvggroup.html +2 -2
  149. data/doc/rvgimage.html +2 -2
  150. data/doc/rvgpattern.html +2 -2
  151. data/doc/rvgshape.html +2 -2
  152. data/doc/rvgstyle.html +2 -2
  153. data/doc/rvgtext.html +2 -2
  154. data/doc/rvgtspan.html +2 -2
  155. data/doc/rvgtut.html +2 -2
  156. data/doc/rvguse.html +2 -2
  157. data/doc/rvgxform.html +2 -2
  158. data/doc/struct.html +2 -2
  159. data/doc/usage.html +2 -2
  160. data/examples/crop_with_gravity.rb +0 -0
  161. data/examples/demo.rb +0 -0
  162. data/examples/describe.rb +0 -0
  163. data/examples/rotating_text.rb +0 -0
  164. data/ext/RMagick/extconf.rb +1 -9
  165. data/ext/RMagick/rmimage.c +1 -1
  166. data/lib/rvg/to_c.rb +103 -0
  167. data/rmagick.gemspec +5 -3
  168. data/test/Draw.rb +121 -0
  169. data/test/Image1.rb +763 -0
  170. data/test/Image2.rb +1308 -0
  171. data/test/Image3.rb +1002 -0
  172. data/test/ImageList1.rb +808 -0
  173. data/test/ImageList2.rb +389 -0
  174. data/test/Image_attributes.rb +683 -0
  175. data/test/Import_Export.rb +116 -0
  176. data/test/Info.rb +349 -0
  177. data/test/Magick.rb +364 -0
  178. data/test/Pixel.rb +120 -0
  179. data/test/Preview.rb +62 -0
  180. data/test/all_basic.rb +42 -0
  181. data/test/cmyk.icm +0 -0
  182. data/test/srgb.icm +0 -0
  183. metadata +339 -320
  184. data/README.html +0 -10
  185. data/ext/RMagick/MANIFEST +0 -358
@@ -0,0 +1,1002 @@
1
+ #! /usr/local/bin/ruby -w
2
+
3
+ require 'RMagick'
4
+ require 'test/unit'
5
+ require 'test/unit/ui/console/testrunner' if !RUBY_VERSION[/^1\.9|^2/]
6
+ require 'fileutils'
7
+
8
+ ColorspaceTypes = [
9
+ Magick::RGBColorspace,
10
+ Magick::GRAYColorspace,
11
+ Magick::TransparentColorspace,
12
+ Magick::OHTAColorspace,
13
+ Magick::LABColorspace,
14
+ Magick::XYZColorspace,
15
+ Magick::YCbCrColorspace,
16
+ Magick::YCCColorspace,
17
+ Magick::YIQColorspace,
18
+ Magick::YPbPrColorspace,
19
+ Magick::YUVColorspace,
20
+ Magick::CMYKColorspace,
21
+ Magick::SRGBColorspace,
22
+ Magick::HSLColorspace,
23
+ Magick::HWBColorspace,
24
+ Magick::HSBColorspace,
25
+ Magick::LABColorspace,
26
+ Magick::Rec601LumaColorspace,
27
+ Magick::Rec601YCbCrColorspace,
28
+ Magick::Rec709LumaColorspace,
29
+ Magick::Rec709YCbCrColorspace,
30
+ Magick::LogColorspace
31
+ ]
32
+
33
+
34
+
35
+ class Image3_UT < Test::Unit::TestCase
36
+ FreezeError = RUBY_VERSION[/^1\.9|^2/] ? RuntimeError : TypeError
37
+
38
+ def setup
39
+ @img = Magick::Image.new(20, 20)
40
+ @p = Magick::Image.read(IMAGE_WITH_PROFILE).first.color_profile
41
+ end
42
+
43
+ def test_profile!
44
+ assert_nothing_raised do
45
+ res = @img.profile!('*', nil)
46
+ assert_same(@img, res)
47
+ end
48
+ assert_nothing_raised { @img.profile!('icc', @p) }
49
+ assert_nothing_raised { @img.profile!('iptc', 'xxx') }
50
+ assert_nothing_raised { @img.profile!('icc', nil) }
51
+ assert_nothing_raised { @img.profile!('iptc', nil) }
52
+
53
+ @img.freeze
54
+ assert_raise(FreezeError) { @img.profile!('icc', 'xxx') }
55
+ assert_raise(FreezeError) { @img.profile!('*', nil) }
56
+ end
57
+
58
+ def test_quantize
59
+ assert_nothing_raised do
60
+ res = @img.quantize
61
+ assert_instance_of(Magick::Image, res)
62
+ end
63
+
64
+ ColorspaceTypes.each do |cs|
65
+ assert_nothing_raised { @img.quantize(256, cs) }
66
+ end
67
+ assert_nothing_raised { @img.quantize(256, Magick::RGBColorspace, false) }
68
+ assert_nothing_raised { @img.quantize(256, Magick::RGBColorspace, true) }
69
+ assert_nothing_raised { @img.quantize(256, Magick::RGBColorspace, Magick::NoDitherMethod) }
70
+ assert_nothing_raised { @img.quantize(256, Magick::RGBColorspace, Magick::RiemersmaDitherMethod) }
71
+ assert_nothing_raised { @img.quantize(256, Magick::RGBColorspace, Magick::FloydSteinbergDitherMethod) }
72
+ assert_nothing_raised { @img.quantize(256, Magick::RGBColorspace, true, 2) }
73
+ assert_nothing_raised { @img.quantize(256, Magick::RGBColorspace, true, 2, true) }
74
+ assert_raise(TypeError) { @img.quantize('x') }
75
+ assert_raise(TypeError) { @img.quantize(16, 2) }
76
+ assert_raise(TypeError) { @img.quantize(16, Magick::RGBColorspace, false, 'x') }
77
+ end
78
+
79
+ def test_quantum_operator
80
+ quantum_ops = [
81
+ Magick::AddQuantumOperator,
82
+ Magick::AndQuantumOperator,
83
+ Magick::DivideQuantumOperator,
84
+ Magick::LShiftQuantumOperator,
85
+ Magick::MultiplyQuantumOperator,
86
+ Magick::OrQuantumOperator,
87
+ Magick::RShiftQuantumOperator,
88
+ Magick::SubtractQuantumOperator,
89
+ Magick::XorQuantumOperator ]
90
+
91
+ assert_nothing_raised do
92
+ res = @img.quantum_operator(Magick::AddQuantumOperator, 2)
93
+ assert_instance_of(Magick::Image, res)
94
+ end
95
+ quantum_ops.each do |op|
96
+ assert_nothing_raised { @img.quantum_operator(op, 2) }
97
+ end
98
+ assert_nothing_raised { @img.quantum_operator(Magick::AddQuantumOperator, 2, Magick::RedChannel) }
99
+ assert_raise(TypeError) { @img.quantum_operator(2, 2) }
100
+ assert_raise(TypeError) { @img.quantum_operator(Magick::AddQuantumOperator, 'x') }
101
+ assert_raise(TypeError) { @img.quantum_operator(Magick::AddQuantumOperator, 2, 2) }
102
+ assert_raise(ArgumentError) { @img.quantum_operator(Magick::AddQuantumOperator, 2, Magick::RedChannel, 2) }
103
+ end
104
+
105
+ def test_radial_blur
106
+ assert_nothing_raised do
107
+ res = @img.radial_blur(30)
108
+ assert_instance_of(Magick::Image, res)
109
+ end
110
+ end
111
+
112
+ def test_radial_blur_channel
113
+ res = nil
114
+ assert_nothing_raised { res = @img.radial_blur_channel(30) }
115
+ assert_not_nil(res)
116
+ assert_instance_of(Magick::Image, res)
117
+ assert_nothing_raised { res = @img.radial_blur_channel(30, Magick::RedChannel) }
118
+ assert_nothing_raised { res = @img.radial_blur_channel(30, Magick::RedChannel, Magick::BlueChannel) }
119
+
120
+ assert_raise(ArgumentError) { @img.radial_blur_channel }
121
+ assert_raise(TypeError) { @img.radial_blur_channel(30, 2) }
122
+ end
123
+
124
+ def test_raise
125
+ assert_nothing_raised do
126
+ res = @img.raise
127
+ assert_instance_of(Magick::Image, res)
128
+ end
129
+ assert_nothing_raised { @img.raise(4) }
130
+ assert_nothing_raised { @img.raise(4,4) }
131
+ assert_nothing_raised { @img.raise(4,4, false) }
132
+ assert_raise(TypeError) { @img.raise('x') }
133
+ assert_raise(TypeError) { @img.raise(2, 'x') }
134
+ assert_raise(ArgumentError) { @img.raise(4, 4, false, 2) }
135
+ end
136
+
137
+ def test_random_threshold_channel
138
+ assert_nothing_raised do
139
+ res = @img.random_threshold_channel('20%')
140
+ assert_instance_of(Magick::Image, res)
141
+ end
142
+ threshold = Magick::Geometry.new(20)
143
+ assert_nothing_raised { @img.random_threshold_channel(threshold) }
144
+ assert_nothing_raised { @img.random_threshold_channel(threshold, Magick::RedChannel) }
145
+ assert_nothing_raised { @img.random_threshold_channel(threshold, Magick::RedChannel, Magick::BlueChannel) }
146
+ assert_raise(ArgumentError) { @img.random_threshold_channel }
147
+ assert_raise(TypeError) { @img.random_threshold_channel('20%', 2) }
148
+ end
149
+
150
+ def test_reduce_noise
151
+ assert_nothing_raised do
152
+ res = @img.reduce_noise(0)
153
+ assert_instance_of(Magick::Image, res)
154
+ end
155
+ assert_nothing_raised { @img.reduce_noise(4) }
156
+ end
157
+
158
+ def test_remap
159
+ remap_image = Magick::Image.new(20,20) {self.background_color = "green"}
160
+ assert_nothing_raised { @img.remap(remap_image) }
161
+ assert_nothing_raised { @img.remap(remap_image, Magick::NoDitherMethod) }
162
+ assert_nothing_raised { @img.remap(remap_image, Magick::RiemersmaDitherMethod) }
163
+ assert_nothing_raised { @img.remap(remap_image, Magick::FloydSteinbergDitherMethod) }
164
+
165
+ assert_raise(ArgumentError) {@img.remap() }
166
+ assert_raise(ArgumentError) {@img.remap(remap_image, Magick::NoDitherMethod, 1) }
167
+ assert_raise(TypeError) {@img.remap(remap_image, 1) }
168
+ end
169
+
170
+ def test_resample
171
+ assert_nothing_raised { @img.resample }
172
+ assert_nothing_raised { @img.resample(100) }
173
+ assert_nothing_raised { @img.resample(100, 100) }
174
+
175
+ girl = Magick::Image.read(IMAGES_DIR+'/Flower_Hat.jpg').first
176
+ assert_equal(240.0, girl.x_resolution)
177
+ assert_equal(240.0, girl.y_resolution)
178
+ res = girl.resample(120, 120)
179
+ assert_equal(100, res.columns)
180
+ assert_equal(125, res.rows)
181
+ assert_equal(120.0, res.x_resolution)
182
+ assert_equal(120.0, res.y_resolution)
183
+
184
+ assert_raise(NoMethodError) { @img.resample('x') }
185
+ assert_raise(NoMethodError) { @img.resample(100, 'x') }
186
+ end
187
+
188
+ def test_resize
189
+ assert_nothing_raised do
190
+ res = @img.resize(2)
191
+ assert_instance_of(Magick::Image, res)
192
+ end
193
+ assert_nothing_raised { @img.resize(50,50) }
194
+ filters = [
195
+ Magick::PointFilter,
196
+ Magick::BoxFilter,
197
+ Magick::TriangleFilter,
198
+ Magick::HermiteFilter,
199
+ Magick::HanningFilter,
200
+ Magick::HammingFilter,
201
+ Magick::BlackmanFilter,
202
+ Magick::GaussianFilter,
203
+ Magick::QuadraticFilter,
204
+ Magick::CubicFilter,
205
+ Magick::CatromFilter,
206
+ Magick::MitchellFilter,
207
+ Magick::LanczosFilter,
208
+ Magick::BesselFilter,
209
+ Magick::SincFilter ]
210
+
211
+ filters.each do |filter|
212
+ assert_nothing_raised { @img.resize(50, 50, filter) }
213
+ end
214
+ assert_nothing_raised { @img.resize(50, 50, Magick::PointFilter, 2.0) }
215
+ assert_raise(TypeError) { @img.resize('x') }
216
+ assert_raise(TypeError) { @img.resize(50, 'x') }
217
+ assert_raise(TypeError) { @img.resize(50, 50, 2) }
218
+ assert_raise(TypeError) { @img.resize(50, 50, Magick::CubicFilter, 'x') }
219
+ assert_raise(ArgumentError) { @img.resize(50, 50, Magick::SincFilter, 2.0, 'x') }
220
+ assert_raise(ArgumentError) { @img.resize }
221
+ end
222
+
223
+ def test_resize!
224
+ assert_nothing_raised do
225
+ res = @img.resize!(2)
226
+ assert_same(@img, res)
227
+ end
228
+ @img.freeze
229
+ assert_raise(FreezeError) { @img.resize!(0.50) }
230
+ end
231
+
232
+ def test_resize_to_fill_0
233
+ changed = @img.resize_to_fill(@img.columns,@img.rows)
234
+ assert_equal(@img.columns, changed.columns)
235
+ assert_equal(@img.rows, changed.rows)
236
+ assert_not_same(changed, @img)
237
+ end
238
+
239
+ def test_resize_to_fill_1
240
+ @img = Magick::Image.new(200, 250)
241
+ @img.resize_to_fill!(100,100)
242
+ assert_equal(100, @img.columns)
243
+ assert_equal(100, @img.rows)
244
+ end
245
+
246
+ def test_resize_to_fill_2
247
+ @img = Magick::Image.new(200, 250)
248
+ changed = @img.resize_to_fill(300,100)
249
+ assert_equal(300, changed.columns)
250
+ assert_equal(100, changed.rows)
251
+ end
252
+
253
+ def test_resize_to_fill_3
254
+ @img = Magick::Image.new(200, 250)
255
+ changed = @img.resize_to_fill(100,300)
256
+ assert_equal(100, changed.columns)
257
+ assert_equal(300, changed.rows)
258
+ end
259
+
260
+ def test_resize_to_fill_4
261
+ @img = Magick::Image.new(200, 250)
262
+ changed = @img.resize_to_fill(300,350)
263
+ assert_equal(300, changed.columns)
264
+ assert_equal(350, changed.rows)
265
+ end
266
+
267
+ def test_resize_to_fill_5
268
+ changed = @img.resize_to_fill(20,400)
269
+ assert_equal(20, changed.columns)
270
+ assert_equal(400, changed.rows)
271
+ end
272
+ def test_resize_to_fill_6
273
+ changed = @img.resize_to_fill(3000,400)
274
+ assert_equal(3000, changed.columns)
275
+ assert_equal(400, changed.rows)
276
+ end
277
+
278
+ # Make sure the old name is still around
279
+ def test_resize_to_fill_7
280
+ assert_block {@img.respond_to? :crop_resized}
281
+ assert_block {@img.respond_to? :crop_resized!}
282
+ end
283
+
284
+ # 2nd argument defaults to the same value as the 1st argument
285
+ def test_resize_to_fill_8
286
+ changed = @img.resize_to_fill(100)
287
+ assert_equal(100, changed.columns)
288
+ assert_equal(100, changed.rows)
289
+ end
290
+
291
+ def test_resize_to_fit
292
+ img = Magick::Image.new(200, 250)
293
+ res = nil
294
+ assert_nothing_raised { res = img.resize_to_fit(50, 50) }
295
+ assert_not_nil(res)
296
+ assert_instance_of(Magick::Image, res)
297
+ assert_not_same(img, res)
298
+ assert_equal(40, res.columns)
299
+ assert_equal(50, res.rows)
300
+ end
301
+
302
+ def test_resize_to_fit2
303
+ img = Magick::Image.new(200, 300)
304
+ changed = img.resize_to_fit(100)
305
+ assert_instance_of(Magick::Image, changed)
306
+ assert_not_same(img, changed)
307
+ assert_equal(67, changed.columns)
308
+ assert_equal(100, changed.rows)
309
+ end
310
+
311
+ def test_resize_to_fit3
312
+ img = Magick::Image.new(200, 300)
313
+ keep = img
314
+ img.resize_to_fit!(100)
315
+ assert_instance_of(Magick::Image, img)
316
+ assert_same(img, keep)
317
+ assert_equal(67, img.columns)
318
+ assert_equal(100, img.rows)
319
+ end
320
+
321
+ def test_roll
322
+ assert_nothing_raised do
323
+ res = @img.roll(5, 5)
324
+ assert_instance_of(Magick::Image, res)
325
+ end
326
+ end
327
+
328
+ def test_rotate
329
+ assert_nothing_raised do
330
+ res = @img.rotate(45)
331
+ assert_instance_of(Magick::Image, res)
332
+ end
333
+ assert_nothing_raised { @img.rotate(-45) }
334
+
335
+ img = Magick::Image.new(100, 50)
336
+ assert_nothing_raised do
337
+ res = img.rotate(90, '>')
338
+ assert_instance_of(Magick::Image, res)
339
+ assert_equal(50, res.columns)
340
+ assert_equal(100, res.rows);
341
+ end
342
+ assert_nothing_raised do
343
+ res = img.rotate(90, '<')
344
+ assert_nil(res)
345
+ end
346
+ assert_raise(ArgumentError) { img.rotate(90, 't') }
347
+ assert_raise(TypeError) { img.rotate(90, []) }
348
+ end
349
+
350
+ def test_rotate!
351
+ assert_nothing_raised do
352
+ res = @img.rotate!(45)
353
+ assert_same(@img, res)
354
+ end
355
+ @img.freeze
356
+ assert_raise(FreezeError) { @img.rotate!(45) }
357
+ end
358
+
359
+ def test_sample
360
+ assert_nothing_raised do
361
+ res = @img.sample(10, 10)
362
+ assert_instance_of(Magick::Image, res)
363
+ end
364
+ assert_nothing_raised { @img.sample(2) }
365
+ assert_raise(ArgumentError) { @img.sample }
366
+ assert_raise(ArgumentError) { @img.sample(25, 25, 25) }
367
+ assert_raise(TypeError) { @img.sample('x') }
368
+ assert_raise(TypeError) { @img.sample(10, 'x') }
369
+ end
370
+
371
+ def test_sample!
372
+ assert_nothing_raised do
373
+ res = @img.sample!(2)
374
+ assert_same(@img, res)
375
+ end
376
+ @img.freeze
377
+ assert_raise(FreezeError) { @img.sample!(0.50) }
378
+ end
379
+
380
+ def test_scale
381
+ assert_nothing_raised do
382
+ res = @img.scale(10, 10)
383
+ assert_instance_of(Magick::Image, res)
384
+ end
385
+ assert_nothing_raised { @img.scale(2) }
386
+ assert_raise(ArgumentError) { @img.scale }
387
+ assert_raise(ArgumentError) { @img.scale(25, 25, 25) }
388
+ assert_raise(TypeError) { @img.scale('x') }
389
+ assert_raise(TypeError) { @img.scale(10, 'x') }
390
+ end
391
+
392
+ def test_scale!
393
+ assert_nothing_raised do
394
+ res = @img.scale!(2)
395
+ assert_same(@img, res)
396
+ end
397
+ @img.freeze
398
+ assert_raise(FreezeError) { @img.scale!(0.50) }
399
+ end
400
+
401
+ def test_segment
402
+ assert_nothing_raised do
403
+ res = @img.segment
404
+ assert_instance_of(Magick::Image, res)
405
+ end
406
+
407
+ # Don't test colorspaces that require PsuedoColor images
408
+ (ColorspaceTypes - [Magick::OHTAColorspace,
409
+ Magick::LABColorspace,
410
+ Magick::XYZColorspace,
411
+ Magick::YCbCrColorspace,
412
+ Magick::YCCColorspace,
413
+ Magick::YIQColorspace,
414
+ Magick::YPbPrColorspace,
415
+ Magick::YUVColorspace,
416
+ Magick::Rec601YCbCrColorspace,
417
+ Magick::Rec709YCbCrColorspace,
418
+ Magick::LogColorspace]).each do |cs|
419
+ assert_nothing_raised { @img.segment(cs) }
420
+ end
421
+
422
+ assert_nothing_raised { @img.segment(Magick::RGBColorspace, 2.0) }
423
+ assert_nothing_raised { @img.segment(Magick::RGBColorspace, 2.0, 2.0) }
424
+ assert_nothing_raised { @img.segment(Magick::RGBColorspace, 2.0, 2.0, false) }
425
+
426
+ assert_raise(ArgumentError) { @img.segment(Magick::RGBColorspace, 2.0, 2.0, false, 2) }
427
+ assert_raise(TypeError) { @img.segment(2) }
428
+ assert_raise(TypeError) { @img.segment(Magick::RGBColorspace, 'x') }
429
+ assert_raise(TypeError) { @img.segment(Magick::RGBColorspace, 2.0, 'x') }
430
+ end
431
+
432
+ def test_selective_blur_channel
433
+ res = nil
434
+ assert_nothing_raised { res = @img.selective_blur_channel(0, 1, '10%') }
435
+ assert_instance_of(Magick::Image, res)
436
+ assert_not_same(@img, res)
437
+ assert_equal([@img.columns, @img.rows], [res.columns, res.rows])
438
+
439
+ assert_nothing_raised { @img.selective_blur_channel(0, 1, 0.1) }
440
+ assert_nothing_raised { @img.selective_blur_channel(0, 1, '10%', Magick::RedChannel) }
441
+ assert_nothing_raised { @img.selective_blur_channel(0, 1, '10%', Magick::RedChannel, Magick::BlueChannel) }
442
+ assert_nothing_raised { @img.selective_blur_channel(0, 1, '10%', Magick::RedChannel, Magick::BlueChannel, Magick::GreenChannel) }
443
+ # not enough arguments
444
+ assert_raise(ArgumentError) { @img.selective_blur_channel(0, 1) }
445
+ end
446
+
447
+ def test_sepiatone
448
+ assert_nothing_raised do
449
+ res = @img.sepiatone
450
+ assert_instance_of(Magick::Image, res)
451
+ end
452
+ assert_nothing_raised { @img.sepiatone(Magick::QuantumRange*0.80) }
453
+ assert_raise(ArgumentError) { @img.sepiatone(Magick::QuantumRange, 2) }
454
+ assert_raise(TypeError) { @img.sepiatone('x') }
455
+ end
456
+
457
+ def test_set_channel_depth
458
+ channels = [
459
+ Magick::RedChannel,
460
+ Magick::GrayChannel,
461
+ Magick::CyanChannel,
462
+ Magick::GreenChannel,
463
+ Magick::MagentaChannel,
464
+ Magick::BlueChannel,
465
+ Magick::YellowChannel,
466
+ # Magick::AlphaChannel,
467
+ Magick::OpacityChannel,
468
+ Magick::MatteChannel,
469
+ Magick::BlackChannel,
470
+ Magick::IndexChannel,
471
+ Magick::AllChannels]
472
+
473
+ channels.each do |ch|
474
+ assert_nothing_raised {@img.set_channel_depth(ch, 8) }
475
+ end
476
+ end
477
+
478
+ def test_shade
479
+ assert_nothing_raised do
480
+ res = @img.shade
481
+ assert_instance_of(Magick::Image, res)
482
+ end
483
+ assert_nothing_raised { @img.shade(true) }
484
+ assert_nothing_raised { @img.shade(true, 30) }
485
+ assert_nothing_raised { @img.shade(true, 30, 30) }
486
+ assert_raise(ArgumentError) { @img.shade(true, 30, 30, 2) }
487
+ assert_raise(TypeError) { @img.shade(true, 'x') }
488
+ assert_raise(TypeError) { @img.shade(true, 30, 'x') }
489
+ end
490
+
491
+ def test_shadow
492
+ assert_nothing_raised do
493
+ res = @img.shadow
494
+ assert_instance_of(Magick::Image, res)
495
+ end
496
+ assert_nothing_raised { @img.shadow(5) }
497
+ assert_nothing_raised { @img.shadow(5, 5) }
498
+ assert_nothing_raised { @img.shadow(5, 5, 3.0) }
499
+ assert_nothing_raised { @img.shadow(5, 5, 3.0, 0.50) }
500
+ assert_nothing_raised { @img.shadow(5, 5, 3.0, '50%') }
501
+ assert_raise(ArgumentError) { @img.shadow(5, 5, 3.0, 0.50, 2) }
502
+ assert_raise(TypeError) { @img.shadow('x') }
503
+ assert_raise(TypeError) { @img.shadow(5, 'x') }
504
+ assert_raise(TypeError) { @img.shadow(5, 5, 'x') }
505
+ assert_raise(ArgumentError) { @img.shadow(5, 5, 3.0, 'x') }
506
+ end
507
+
508
+ def test_sharpen
509
+ assert_nothing_raised do
510
+ res = @img.sharpen
511
+ assert_instance_of(Magick::Image, res)
512
+ end
513
+ assert_nothing_raised { @img.sharpen(2.0) }
514
+ assert_nothing_raised { @img.sharpen(2.0, 1.0) }
515
+ assert_raise(ArgumentError) { @img.sharpen(2.0, 1.0, 2) }
516
+ assert_raise(TypeError) { @img.sharpen('x') }
517
+ assert_raise(TypeError) { @img.sharpen(2.0, 'x') }
518
+ end
519
+
520
+ def test_sharpen_channel
521
+ assert_nothing_raised do
522
+ res = @img.sharpen_channel
523
+ assert_instance_of(Magick::Image, res)
524
+ end
525
+ assert_nothing_raised { @img.sharpen_channel(2.0) }
526
+ assert_nothing_raised { @img.sharpen_channel(2.0, 1.0) }
527
+ assert_nothing_raised { @img.sharpen_channel(2.0, 1.0, Magick::RedChannel) }
528
+ assert_nothing_raised { @img.sharpen_channel(2.0, 1.0, Magick::RedChannel, Magick::BlueChannel) }
529
+ assert_raise(TypeError) { @img.sharpen_channel(2.0, 1.0, Magick::RedChannel, 2) }
530
+ assert_raise(TypeError) { @img.sharpen_channel('x') }
531
+ assert_raise(TypeError) { @img.sharpen_channel(2.0, 'x') }
532
+ end
533
+
534
+ def test_shave
535
+ assert_nothing_raised do
536
+ res = @img.shave(5,5)
537
+ assert_instance_of(Magick::Image, res)
538
+ end
539
+ assert_nothing_raised do
540
+ res = @img.shave!(5,5)
541
+ assert_same(@img, res)
542
+ end
543
+ @img.freeze
544
+ assert_raise(FreezeError) { @img.shave!(2,2) }
545
+ end
546
+
547
+ def test_shear
548
+ assert_nothing_raised do
549
+ res = @img.shear(30, 30)
550
+ assert_instance_of(Magick::Image, res)
551
+ end
552
+ end
553
+
554
+ def test_sigmoidal_contrast_channel
555
+ assert_nothing_raised do
556
+ res = @img.sigmoidal_contrast_channel
557
+ assert_instance_of(Magick::Image, res)
558
+ end
559
+ assert_nothing_raised { @img.sigmoidal_contrast_channel(3.0) }
560
+ assert_nothing_raised { @img.sigmoidal_contrast_channel(3.0, 50.0) }
561
+ assert_nothing_raised { @img.sigmoidal_contrast_channel(3.0, 50.0, true) }
562
+ assert_nothing_raised { @img.sigmoidal_contrast_channel(3.0, 50.0, true, Magick::RedChannel) }
563
+ assert_nothing_raised { @img.sigmoidal_contrast_channel(3.0, 50.0, true, Magick::RedChannel, Magick::BlueChannel) }
564
+ assert_raise(TypeError) { @img.sigmoidal_contrast_channel(3.0, 50.0, true, Magick::RedChannel, 2) }
565
+ assert_raise(TypeError) { @img.sigmoidal_contrast_channel('x') }
566
+ assert_raise(TypeError) { @img.sigmoidal_contrast_channel(3.0, 'x') }
567
+ end
568
+
569
+ def test_signature
570
+ assert_nothing_raised do
571
+ res = @img.signature
572
+ assert_instance_of(String, res)
573
+ end
574
+ end
575
+
576
+ def test_sketch
577
+ assert_nothing_raised { @img.sketch }
578
+ assert_nothing_raised { @img.sketch(0) }
579
+ assert_nothing_raised { @img.sketch(0, 1) }
580
+ assert_nothing_raised { @img.sketch(0, 1, 0) }
581
+ assert_raise(ArgumentError) { @img.sketch(0, 1, 0, 1) }
582
+ assert_raise(TypeError) { @img.sketch('x') }
583
+ assert_raise(TypeError) { @img.sketch(0, 'x') }
584
+ assert_raise(TypeError) { @img.sketch(0, 1, 'x') }
585
+ end
586
+
587
+ def test_solarize
588
+ assert_nothing_raised do
589
+ res = @img.solarize
590
+ assert_instance_of(Magick::Image, res)
591
+ end
592
+ assert_nothing_raised { @img.solarize(100) }
593
+ assert_raise(ArgumentError) { @img.solarize(100, 2) }
594
+ assert_raise(TypeError) { @img.solarize('x') }
595
+ end
596
+
597
+ def test_sparse_color
598
+ img = Magick::Image.new(100, 100)
599
+ args = [30, 10, 'red', 10, 80, 'blue', 70, 60, 'lime', 80, 20, 'yellow']
600
+ # assert good calls work
601
+ Magick::SparseColorMethod.values do |v|
602
+ next if v == Magick::UndefinedColorInterpolate
603
+ assert_nothing_raised { img.sparse_color(v, *args) }
604
+ end
605
+ args << Magick::RedChannel
606
+ assert_nothing_raised { img.sparse_color(Magick::VoronoiColorInterpolate, *args) }
607
+ args << Magick::GreenChannel
608
+ assert_nothing_raised { img.sparse_color(Magick::VoronoiColorInterpolate, *args) }
609
+ args << Magick::BlueChannel
610
+ assert_nothing_raised { img.sparse_color(Magick::VoronoiColorInterpolate, *args) }
611
+
612
+ # bad calls
613
+ args = [30, 10, 'red', 10, 80, 'blue', 70, 60, 'lime', 80, 20, 'yellow']
614
+ # invalid method
615
+ assert_raise(TypeError) { img.sparse_color(1, *args) }
616
+ # missing arguments
617
+ assert_raise(ArgumentError) { img.sparse_color(Magick::VoronoiColorInterpolate) }
618
+ args << 10 # too many arguments
619
+ assert_raise(ArgumentError) { img.sparse_color(Magick::VoronoiColorInterpolate, *args) }
620
+ args.shift
621
+ args.shift # too few
622
+ assert_raise(ArgumentError) { img.sparse_color(Magick::VoronoiColorInterpolate, *args) }
623
+ end
624
+
625
+ def test_splice
626
+ assert_nothing_raised do
627
+ res = @img.splice(0, 0, 2, 2)
628
+ assert_instance_of(Magick::Image, res)
629
+ end
630
+ assert_nothing_raised { @img.splice(0, 0, 2, 2, 'red') }
631
+ red = Magick::Pixel.new(Magick::QuantumRange)
632
+ assert_nothing_raised { @img.splice(0, 0, 2, 2, red) }
633
+ assert_raise(ArgumentError) { @img.splice(0,0, 2, 2, red, 'x') }
634
+ assert_raise(TypeError) { @img.splice([], 0, 2, 2, red) }
635
+ assert_raise(TypeError) { @img.splice(0, 'x', 2, 2, red) }
636
+ assert_raise(TypeError) { @img.splice(0, 0, 'x', 2, red) }
637
+ assert_raise(TypeError) { @img.splice(0, 0, 2, [], red) }
638
+ assert_raise(TypeError) { @img.splice(0, 0, 2, 2, /m/) }
639
+ end
640
+
641
+ def test_spread
642
+ assert_nothing_raised do
643
+ res = @img.spread
644
+ assert_instance_of(Magick::Image, res)
645
+ end
646
+ assert_nothing_raised { @img.spread(3.0) }
647
+ assert_raise(ArgumentError) { @img.spread(3.0, 2) }
648
+ assert_raise(TypeError) { @img.spread('x') }
649
+ end
650
+
651
+ def test_stegano
652
+ img = Magick::Image.new(100, 100) { self.background_color = 'black' }
653
+ watermark = Magick::Image.new(10, 10) { self.background_color = 'white' }
654
+ assert_nothing_raised do
655
+ res = @img.stegano(watermark, 0)
656
+ assert_instance_of(Magick::Image, res)
657
+ end
658
+
659
+ watermark.destroy!
660
+ assert_raise(Magick::DestroyedImageError) { @img.stegano(watermark, 0) }
661
+ end
662
+
663
+ def test_stereo
664
+ assert_nothing_raised do
665
+ res = @img.stereo(@img)
666
+ assert_instance_of(Magick::Image, res)
667
+ end
668
+
669
+ img = Magick::Image.new(20,20)
670
+ img.destroy!
671
+ assert_raise(Magick::DestroyedImageError) { @img.stereo(img) }
672
+ end
673
+
674
+ def test_store_pixels
675
+ pixels = @img.get_pixels(0, 0, @img.columns, 1)
676
+ assert_nothing_raised do
677
+ res = @img.store_pixels(0, 0, @img.columns, 1, pixels)
678
+ assert_same(@img, res)
679
+ end
680
+
681
+ pixels[0] = 'x'
682
+ assert_raise(TypeError) { @img.store_pixels(0, 0, @img.columns, 1, pixels) }
683
+ assert_raise(RangeError) { @img.store_pixels(-1, 0, @img.columns, 1, pixels) }
684
+ assert_raise(RangeError) { @img.store_pixels(0, -1, @img.columns, 1, pixels) }
685
+ assert_raise(RangeError) { @img.store_pixels(0, 0, 1+@img.columns, 1, pixels) }
686
+ assert_raise(RangeError) { @img.store_pixels(-1, 0, 1, 1+@img.rows, pixels) }
687
+ assert_raise(IndexError) { @img.store_pixels(0, 0, @img.columns, 1, ['x']) }
688
+ end
689
+
690
+ def test_strip!
691
+ assert_nothing_raised do
692
+ res = @img.strip!
693
+ assert_same(@img, res)
694
+ end
695
+ end
696
+
697
+ def test_swirl
698
+ assert_nothing_raised do
699
+ res = @img.swirl(30)
700
+ assert_instance_of(Magick::Image, res)
701
+ end
702
+ end
703
+
704
+ def test_sync_profiles
705
+ assert_nothing_raised { assert(@img.sync_profiles) }
706
+ end
707
+
708
+ def test_texture_fill_to_border
709
+ texture = Magick::Image.read('granite:').first
710
+ assert_nothing_raised do
711
+ res = @img.texture_fill_to_border(@img.columns/2, @img.rows/2, texture)
712
+ assert_instance_of(Magick::Image, res)
713
+ end
714
+ assert_raise(NoMethodError) { @img.texture_fill_to_border(@img.columns/2, @img.rows/2, 'x') }
715
+ end
716
+
717
+ def test_texture_floodfill
718
+ texture = Magick::Image.read('granite:').first
719
+ assert_nothing_raised do
720
+ res = @img.texture_floodfill(@img.columns/2, @img.rows/2, texture)
721
+ assert_instance_of(Magick::Image, res)
722
+ end
723
+ assert_raise(NoMethodError) { @img.texture_floodfill(@img.columns/2, @img.rows/2, 'x') }
724
+ texture.destroy!
725
+ assert_raise(Magick::DestroyedImageError) { @img.texture_floodfill(@img.columns/2, @img.rows/2, texture) }
726
+ end
727
+
728
+ def test_threshold
729
+ assert_nothing_raised do
730
+ res = @img.threshold(100)
731
+ assert_instance_of(Magick::Image, res)
732
+ end
733
+ end
734
+
735
+ def test_thumbnail
736
+ assert_nothing_raised do
737
+ res = @img.thumbnail(10, 10)
738
+ assert_instance_of(Magick::Image, res)
739
+ end
740
+ assert_nothing_raised { @img.thumbnail(2) }
741
+ assert_raise(ArgumentError) { @img.thumbnail }
742
+ assert_raise(ArgumentError) { @img.thumbnail(25, 25, 25) }
743
+ assert_raise(TypeError) { @img.thumbnail('x') }
744
+ assert_raise(TypeError) { @img.thumbnail(10, 'x') }
745
+ end
746
+
747
+ def test_thumbnail!
748
+ assert_nothing_raised do
749
+ res = @img.thumbnail!(2)
750
+ assert_same(@img, res)
751
+ end
752
+ @img.freeze
753
+ assert_raise(FreezeError) { @img.thumbnail!(0.50) }
754
+ end
755
+
756
+ def test_to_blob
757
+ res = nil
758
+ assert_nothing_raised { res = @img.to_blob { self.format = 'miff' } }
759
+ assert_instance_of(String, res)
760
+ restored = Magick::Image.from_blob(res)
761
+ assert_equal(@img, restored[0])
762
+ end
763
+
764
+ def test_to_color
765
+ red = Magick::Pixel.new(Magick::QuantumRange)
766
+ assert_nothing_raised do
767
+ res = @img.to_color(red)
768
+ assert_equal('red', res)
769
+ end
770
+ end
771
+
772
+ def test_transparent
773
+ assert_nothing_raised do
774
+ res = @img.transparent('white')
775
+ assert_instance_of(Magick::Image, res)
776
+ end
777
+ pixel = Magick::Pixel.new
778
+ assert_nothing_raised { @img.transparent(pixel) }
779
+ assert_nothing_raised { @img.transparent('white', Magick::TransparentOpacity) }
780
+ assert_raise(ArgumentError) { @img.transparent('white', Magick::TransparentOpacity, 2) }
781
+ assert_nothing_raised { @img.transparent('white', Magick::QuantumRange/2) }
782
+ assert_raise(TypeError) { @img.transparent(2) }
783
+ end
784
+
785
+ def test_transpose
786
+ assert_nothing_raised do
787
+ res = @img.transpose
788
+ assert_instance_of(Magick::Image, res)
789
+ assert_not_same(@img, res)
790
+ end
791
+ assert_nothing_raised do
792
+ res = @img.transpose!
793
+ assert_instance_of(Magick::Image, res)
794
+ assert_same(@img, res)
795
+ end
796
+ end
797
+
798
+ def test_transverse
799
+ assert_nothing_raised do
800
+ res = @img.transverse
801
+ assert_instance_of(Magick::Image, res)
802
+ assert_not_same(@img, res)
803
+ end
804
+ assert_nothing_raised do
805
+ res = @img.transverse!
806
+ assert_instance_of(Magick::Image, res)
807
+ assert_same(@img, res)
808
+ end
809
+ end
810
+
811
+ def test_trim
812
+ # Can't use the default image because it's a solid color
813
+ hat = Magick::Image.read(IMAGES_DIR+'/Flower_Hat.jpg').first
814
+ assert_nothing_raised do
815
+ res = hat.trim
816
+ assert_instance_of(Magick::Image, res)
817
+ end
818
+ assert_nothing_raised do
819
+ res = hat.trim!
820
+ assert_same(hat, res)
821
+ end
822
+ end
823
+
824
+ def test_unique_colors
825
+ assert_nothing_raised do
826
+ res = @img.unique_colors
827
+ assert_instance_of(Magick::Image, res)
828
+ assert_equal(1, res.columns)
829
+ assert_equal(1, res.rows)
830
+ end
831
+ end
832
+
833
+ def test_unsharp_mask
834
+ assert_nothing_raised do
835
+ res = @img.unsharp_mask
836
+ assert_instance_of(Magick::Image, res)
837
+ end
838
+
839
+ assert_nothing_raised { @img.unsharp_mask(2.0) }
840
+ assert_nothing_raised { @img.unsharp_mask(2.0, 1.0) }
841
+ assert_nothing_raised { @img.unsharp_mask(2.0, 1.0, 0.50) }
842
+ assert_nothing_raised { @img.unsharp_mask(2.0, 1.0, 0.50, 0.10) }
843
+ assert_raise(ArgumentError) { @img.unsharp_mask(2.0, 1.0, 0.50, 0.10, 2) }
844
+ assert_raise(TypeError) { @img.unsharp_mask('x') }
845
+ assert_raise(TypeError) { @img.unsharp_mask(2.0, 'x') }
846
+ assert_raise(TypeError) { @img.unsharp_mask(2.0, 1.0, 'x') }
847
+ assert_raise(TypeError) { @img.unsharp_mask(2.0, 1.0, 0.50, 'x') }
848
+ end
849
+
850
+ def test_unsharp_mask_channel
851
+ assert_nothing_raised do
852
+ res = @img.unsharp_mask_channel
853
+ assert_instance_of(Magick::Image, res)
854
+ end
855
+
856
+ assert_nothing_raised { @img.unsharp_mask_channel(2.0) }
857
+ assert_nothing_raised { @img.unsharp_mask_channel(2.0, 1.0) }
858
+ assert_nothing_raised { @img.unsharp_mask_channel(2.0, 1.0, 0.50) }
859
+ assert_nothing_raised { @img.unsharp_mask_channel(2.0, 1.0, 0.50, 0.10) }
860
+ assert_nothing_raised { @img.unsharp_mask_channel(2.0, 1.0, 0.50, 0.10, Magick::RedChannel) }
861
+ assert_nothing_raised { @img.unsharp_mask_channel(2.0, 1.0, 0.50, 0.10, Magick::RedChannel, Magick::BlueChannel) }
862
+ assert_raise(TypeError) { @img.unsharp_mask_channel(2.0, 1.0, 0.50, 0.10, Magick::RedChannel, 2) }
863
+ assert_raise(TypeError) { @img.unsharp_mask_channel(2.0, 1.0, 0.50, 0.10, 2) }
864
+ assert_raise(TypeError) { @img.unsharp_mask_channel('x') }
865
+ assert_raise(TypeError) { @img.unsharp_mask_channel(2.0, 'x') }
866
+ assert_raise(TypeError) { @img.unsharp_mask_channel(2.0, 1.0, 'x') }
867
+ assert_raise(TypeError) { @img.unsharp_mask_channel(2.0, 1.0, 0.50, 'x') }
868
+ end
869
+
870
+ def test_view
871
+ assert_nothing_raised do
872
+ res = @img.view(0, 0, 5, 5)
873
+ assert_instance_of(Magick::Image::View, res)
874
+ end
875
+ assert_nothing_raised do
876
+ @img.view(0, 0, 5, 5) { |v| assert_instance_of(Magick::Image::View, v) }
877
+ end
878
+ assert_raise(RangeError) { @img.view(-1, 0, 5, 5) }
879
+ assert_raise(RangeError) { @img.view(0, -1, 5, 5) }
880
+ assert_raise(RangeError) { @img.view(1, 0, @img.columns, 5) }
881
+ assert_raise(RangeError) { @img.view(0, 1, 5, @img.rows) }
882
+ assert_raise(ArgumentError) { @img.view(0, 0, 0, 1) }
883
+ assert_raise(ArgumentError) { @img.view(0, 0, 1, 0) }
884
+ end
885
+
886
+ def test_vignette
887
+ assert_nothing_raised do
888
+ res = @img.vignette
889
+ assert_instance_of(Magick::Image, res)
890
+ assert_not_same(res, @img)
891
+ end
892
+ assert_nothing_raised { @img.vignette(0) }
893
+ assert_nothing_raised { @img.vignette(0, 0) }
894
+ assert_nothing_raised { @img.vignette(0, 0, 0) }
895
+ assert_nothing_raised { @img.vignette(0, 0, 0, 1) }
896
+ # too many arguments
897
+ assert_raise(ArgumentError) { @img.vignette(0, 0, 0, 1, 1) }
898
+ end
899
+
900
+ def test_watermark
901
+ mark = Magick::Image.new(5,5)
902
+ mark_list = Magick::ImageList.new
903
+ mark_list << mark.copy
904
+ assert_nothing_raised { @img.watermark(mark) }
905
+ assert_nothing_raised { @img.watermark(mark_list) }
906
+ assert_nothing_raised { @img.watermark(mark, 0.50) }
907
+ assert_nothing_raised { @img.watermark(mark, '50%') }
908
+ assert_nothing_raised { @img.watermark(mark, 0.50, 0.50) }
909
+ assert_nothing_raised { @img.watermark(mark, 0.50, '50%') }
910
+ assert_nothing_raised { @img.watermark(mark, 0.50, 0.50, 10) }
911
+ assert_nothing_raised { @img.watermark(mark, 0.50, 0.50, 10, 10) }
912
+ assert_nothing_raised { @img.watermark(mark, 0.50, 0.50, Magick::NorthEastGravity) }
913
+ assert_nothing_raised { @img.watermark(mark, 0.50, 0.50, Magick::NorthEastGravity, 10) }
914
+ assert_nothing_raised { @img.watermark(mark, 0.50, 0.50, Magick::NorthEastGravity, 10, 10) }
915
+
916
+ assert_raise(ArgumentError) { @img.watermark(mark, 'x') }
917
+ assert_raise(ArgumentError) { @img.watermark(mark, 0.50, 'x') }
918
+ assert_raise(TypeError) { @img.watermark(mark, 0.50, 0.50, 'x') }
919
+ assert_raise(TypeError) { @img.watermark(mark, 0.50, 0.50, Magick::NorthEastGravity, 'x') }
920
+ assert_raise(TypeError) { @img.watermark(mark, 0.50, 0.50, Magick::NorthEastGravity, 10, 'x') }
921
+
922
+ mark.destroy!
923
+ assert_raise(Magick::DestroyedImageError) { @img.watermark(mark) }
924
+ end
925
+
926
+ def test_wave
927
+ assert_nothing_raised do
928
+ res = @img.wave
929
+ assert_instance_of(Magick::Image, res)
930
+ end
931
+ assert_nothing_raised { @img.wave(25) }
932
+ assert_nothing_raised { @img.wave(25, 200) }
933
+ assert_raise(ArgumentError) { @img.wave(25, 200, 2) }
934
+ assert_raise(TypeError) { @img.wave('x') }
935
+ assert_raise(TypeError) { @img.wave(25, 'x') }
936
+ end
937
+
938
+ def test_white_threshold
939
+ assert_raise(ArgumentError) { @img.white_threshold }
940
+ assert_nothing_raised { @img.white_threshold(50) }
941
+ assert_nothing_raised { @img.white_threshold(50, 50) }
942
+ assert_nothing_raised { @img.white_threshold(50, 50, 50) }
943
+ assert_nothing_raised { @img.white_threshold(50, 50, 50, 50) }
944
+ assert_raise(ArgumentError) { @img.white_threshold(50, 50, 50, 50, 50) }
945
+ res = @img.white_threshold(50)
946
+ assert_instance_of(Magick::Image, res)
947
+ end
948
+
949
+ # test write with #format= attribute
950
+ def test_write
951
+
952
+ @img.write('temp.gif')
953
+ img = Magick::Image.read('temp.gif')
954
+ assert_equal("GIF", img.first.format)
955
+ FileUtils.rm('temp.gif')
956
+
957
+ @img.write("jpg:temp.foo")
958
+ img = Magick::Image.read('temp.foo')
959
+ assert_equal("JPEG", img.first.format)
960
+ FileUtils.rm('temp.foo')
961
+
962
+ @img.write("temp.0") { self.format = "JPEG" }
963
+ img = Magick::Image.read('temp.0')
964
+ assert_equal("JPEG", img.first.format)
965
+
966
+ # JPEG has two names.
967
+ @img.write("jpeg:temp.0") { self.format = "JPEG" }
968
+ img = Magick::Image.read('temp.0')
969
+ assert_equal("JPEG", img.first.format)
970
+
971
+ @img.write("jpg:temp.0") { self.format = "JPG" }
972
+ img = Magick::Image.read('temp.0')
973
+ assert_equal("JPEG", img.first.format)
974
+
975
+ @img.write("jpg:temp.0") { self.format = "JPEG" }
976
+ img = Magick::Image.read('temp.0')
977
+ assert_equal("JPEG", img.first.format)
978
+
979
+ @img.write("jpeg:temp.0") { self.format = "JPG" }
980
+ img = Magick::Image.read('temp.0')
981
+ assert_equal("JPEG", img.first.format)
982
+
983
+ assert_raise(RuntimeError) do
984
+ @img.write("gif:temp.0") { self.format = "JPEG" }
985
+ end
986
+
987
+ f = File.new("test.0", "w")
988
+ @img.write(f) { self.format = "JPEG" }
989
+ f.close
990
+ img = Magick::Image.read('test.0')
991
+ assert_equal("JPEG", img.first.format)
992
+ FileUtils.rm('test.0')
993
+ end
994
+
995
+
996
+ end
997
+
998
+ if __FILE__ == $0
999
+ IMAGES_DIR = '../doc/ex/images'
1000
+ FILES = Dir[IMAGES_DIR+'/Button_*.gif']
1001
+ Test::Unit::UI::Console::TestRunner.run(Image3_UT) if !RUBY_VERSION[/^1\.9|^2/]
1002
+ end