rmagick 3.1.0 → 3.2.0
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.
- checksums.yaml +4 -4
- data/.appveyor.yml +4 -4
- data/.circleci/config.yml +1 -1
- data/.gitignore +1 -0
- data/.rubocop_todo.yml +6 -0
- data/.travis.yml +26 -8
- data/CHANGELOG.md +104 -0
- data/before_install_linux.sh +19 -10
- data/benchmarks/memory/README.md +50 -0
- data/benchmarks/memory/image_new.rb +8 -0
- data/benchmarks/memory/rmagick.gnuplot +16 -0
- data/doc/ex/coalesce.rb +2 -2
- data/doc/ex/drawcomp.rb +3 -3
- data/doc/ex/get_pixels.rb +1 -1
- data/doc/ex/images/Coffee.png +0 -0
- data/doc/ex/images/No.png +0 -0
- data/doc/ex/images/Snake.png +0 -0
- data/doc/ex/implode.rb +2 -2
- data/doc/ex/mask.rb +1 -1
- data/doc/ex/matte_fill_to_border.rb +1 -1
- data/doc/ex/matte_floodfill.rb +1 -1
- data/doc/ex/matte_replace.rb +1 -1
- data/doc/ex/stegano.rb +1 -1
- data/examples/constitute.rb +1 -1
- data/examples/crop_with_gravity.rb +1 -1
- data/examples/demo.rb +4 -4
- data/examples/find_similar_region.rb +1 -1
- data/examples/histogram.rb +3 -3
- data/examples/identify.rb +46 -46
- data/examples/image_opacity.rb +2 -2
- data/examples/vignette.rb +3 -3
- data/ext/RMagick/extconf.rb +19 -15
- data/ext/RMagick/rmagick.c +1 -2
- data/ext/RMagick/rmagick.h +59 -30
- data/ext/RMagick/rmdraw.c +62 -274
- data/ext/RMagick/rmenum.c +121 -665
- data/ext/RMagick/rmfill.c +7 -7
- data/ext/RMagick/rmilist.c +91 -7
- data/ext/RMagick/rmimage.c +568 -379
- data/ext/RMagick/rminfo.c +152 -110
- data/ext/RMagick/rmkinfo.c +17 -1
- data/ext/RMagick/rmmain.c +75 -74
- data/ext/RMagick/rmmontage.c +33 -33
- data/ext/RMagick/rmpixel.c +75 -14
- data/ext/RMagick/rmstruct.c +5 -5
- data/ext/RMagick/rmutil.c +3 -13
- data/lib/obsolete.rb +66 -0
- data/lib/rmagick/version.rb +1 -1
- data/lib/rmagick_internal.rb +54 -41
- data/spec/rmagick/image/composite_spec.rb +5 -76
- data/spec/rmagick/image/properties_spec.rb +1 -1
- data/test/Draw.rb +52 -115
- data/test/Enum.rb +153 -1
- data/test/Fill.rb +1 -1
- data/test/Image1.rb +97 -43
- data/test/Image2.rb +140 -36
- data/test/Image3.rb +110 -120
- data/test/ImageList1.rb +46 -11
- data/test/ImageList2.rb +11 -21
- data/test/Image_attributes.rb +81 -127
- data/test/Import_Export.rb +2 -2
- data/test/Info.rb +5 -1
- data/test/KernelInfo.rb +67 -0
- data/test/Magick.rb +17 -35
- data/test/Pixel.rb +193 -24
- data/test/PolaroidOptions.rb +1 -1
- data/test/Preview.rb +3 -35
- data/test/Struct.rb +45 -0
- data/test/appearance/Montage.rb +26 -0
- data/test/appearance/appearance_assertion.rb +13 -0
- data/test/appearance/expected/montage_border_color.jpg +0 -0
- data/test/lib/Obsolete.rb +30 -0
- data/test/lib/internal/Draw.rb +823 -0
- data/test/lib/internal/Geometry.rb +98 -0
- data/test/lib/internal/Magick.rb +40 -0
- data/test/test_all_basic.rb +16 -17
- metadata +27 -5
- data/doc/ex/images/Coffee.wmf +0 -0
- data/doc/ex/images/No.wmf +0 -0
- data/doc/ex/images/Snake.wmf +0 -0
data/test/Fill.rb
CHANGED
data/test/Image1.rb
CHANGED
@@ -2,13 +2,29 @@
|
|
2
2
|
|
3
3
|
require 'rmagick'
|
4
4
|
require 'test/unit'
|
5
|
-
require 'test/unit/ui/console/testrunner'
|
5
|
+
require 'test/unit/ui/console/testrunner'
|
6
6
|
|
7
7
|
class Image1_UT < Test::Unit::TestCase
|
8
8
|
def setup
|
9
9
|
@img = Magick::Image.new(20, 20)
|
10
10
|
end
|
11
11
|
|
12
|
+
def test_class_type
|
13
|
+
assert_raise(ArgumentError) { @img.class_type = Magick::UndefinedClass }
|
14
|
+
end
|
15
|
+
|
16
|
+
def test_constitute
|
17
|
+
pixels = @img.dispatch(0, 0, @img.columns, @img.rows, 'RGBA')
|
18
|
+
res = Magick::Image.constitute(@img.columns, @img.rows, 'RGBA', pixels)
|
19
|
+
assert_equal(res.columns, @img.columns)
|
20
|
+
assert_equal(res.rows, @img.rows)
|
21
|
+
|
22
|
+
assert_nothing_raised { Magick::Image.constitute(@img.columns, @img.rows, 'RGBA', [1.0] * (4 * @img.columns * @img.rows)) }
|
23
|
+
assert_raise(TypeError) { Magick::Image.constitute(@img.columns, @img.rows, 'RGBA', ['x'] * (4 * @img.columns * @img.rows)) }
|
24
|
+
assert_raise(ArgumentError) { Magick::Image.constitute(0, @img.rows, 'RGBA', pixels) }
|
25
|
+
assert_raise(ArgumentError) { Magick::Image.constitute(@img.columns, 0, 'RGBA', pixels) }
|
26
|
+
end
|
27
|
+
|
12
28
|
def test_read_inline
|
13
29
|
img = Magick::Image.read(IMAGES_DIR + '/Button_0.gif').first
|
14
30
|
blob = img.to_blob
|
@@ -33,6 +49,7 @@ class Image1_UT < Test::Unit::TestCase
|
|
33
49
|
assert_equal(sig1 <=> sig0, img1 <=> img0)
|
34
50
|
assert_equal(img0, img0)
|
35
51
|
assert_not_equal(img0, img1)
|
52
|
+
assert_nil(img0 <=> nil)
|
36
53
|
end
|
37
54
|
|
38
55
|
def test_adaptive_blur
|
@@ -54,7 +71,7 @@ class Image1_UT < Test::Unit::TestCase
|
|
54
71
|
assert_nothing_raised { @img.adaptive_blur_channel(3, 2) }
|
55
72
|
assert_nothing_raised { @img.adaptive_blur_channel(3, 2, Magick::RedChannel) }
|
56
73
|
assert_nothing_raised { @img.adaptive_blur_channel(3, 2, Magick::RedChannel, Magick::BlueChannel) }
|
57
|
-
assert_raise(
|
74
|
+
assert_raise(TypeError) { @img.adaptive_blur_channel(3, 2, 2) }
|
58
75
|
end
|
59
76
|
|
60
77
|
def test_adaptive_resize
|
@@ -63,8 +80,10 @@ class Image1_UT < Test::Unit::TestCase
|
|
63
80
|
assert_instance_of(Magick::Image, res)
|
64
81
|
end
|
65
82
|
assert_nothing_raised { @img.adaptive_resize(2) }
|
83
|
+
assert_raise(ArgumentError) { @img.adaptive_resize(-1.0) }
|
66
84
|
assert_raise(ArgumentError) { @img.adaptive_resize(10, 10, 10) }
|
67
85
|
assert_raise(ArgumentError) { @img.adaptive_resize }
|
86
|
+
assert_raise(RangeError) { @img.adaptive_resize(Float::MAX) }
|
68
87
|
end
|
69
88
|
|
70
89
|
def test_adaptive_sharpen
|
@@ -86,7 +105,7 @@ class Image1_UT < Test::Unit::TestCase
|
|
86
105
|
assert_nothing_raised { @img.adaptive_sharpen_channel(3, 2) }
|
87
106
|
assert_nothing_raised { @img.adaptive_sharpen_channel(3, 2, Magick::RedChannel) }
|
88
107
|
assert_nothing_raised { @img.adaptive_sharpen_channel(3, 2, Magick::RedChannel, Magick::BlueChannel) }
|
89
|
-
assert_raise(
|
108
|
+
assert_raise(TypeError) { @img.adaptive_sharpen_channel(3, 2, 2) }
|
90
109
|
end
|
91
110
|
|
92
111
|
def test_adaptive_threshold
|
@@ -108,15 +127,15 @@ class Image1_UT < Test::Unit::TestCase
|
|
108
127
|
assert_nothing_raised { @img.add_compose_mask(mask) }
|
109
128
|
assert_nothing_raised { @img.delete_compose_mask }
|
110
129
|
assert_nothing_raised { @img.delete_compose_mask }
|
130
|
+
|
131
|
+
mask = Magick::Image.new(10, 10)
|
132
|
+
assert_raise(ArgumentError) { @img.add_compose_mask(mask) }
|
111
133
|
end
|
112
134
|
|
113
135
|
def test_add_noise
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
assert_nothing_raised { @img.add_noise(Magick::ImpulseNoise) }
|
118
|
-
assert_nothing_raised { @img.add_noise(Magick::LaplacianNoise) }
|
119
|
-
assert_nothing_raised { @img.add_noise(Magick::PoissonNoise) }
|
136
|
+
Magick::NoiseType.values do |noise|
|
137
|
+
assert_nothing_raised { @img.add_noise(noise) }
|
138
|
+
end
|
120
139
|
assert_raise(TypeError) { @img.add_noise(0) }
|
121
140
|
end
|
122
141
|
|
@@ -136,10 +155,11 @@ class Image1_UT < Test::Unit::TestCase
|
|
136
155
|
assert_raise(ArgumentError) { @img.add_noise_channel }
|
137
156
|
end
|
138
157
|
|
139
|
-
def
|
140
|
-
img = Magick::Image.read('
|
141
|
-
assert_nothing_raised { img.add_profile('cmyk.icm') }
|
142
|
-
|
158
|
+
def test_add_delete_profile
|
159
|
+
img = Magick::Image.read(IMAGES_DIR + '/Button_0.gif').first
|
160
|
+
assert_nothing_raised { img.add_profile(File.join(__dir__, 'cmyk.icm')) }
|
161
|
+
# assert_raise(Magick::ImageMagickError) { img.add_profile(File.join(__dir__, 'srgb.icm')) }
|
162
|
+
|
143
163
|
img.each_profile { |name, _value| assert_equal('icc', name) }
|
144
164
|
assert_nothing_raised { img.delete_profile('icc') }
|
145
165
|
end
|
@@ -167,12 +187,28 @@ class Image1_UT < Test::Unit::TestCase
|
|
167
187
|
assert @img.alpha?
|
168
188
|
assert_nothing_raised { @img.alpha Magick::DeactivateAlphaChannel }
|
169
189
|
assert !@img.alpha?
|
170
|
-
assert_nothing_raised { @img.alpha Magick::
|
190
|
+
assert_nothing_raised { @img.alpha Magick::OpaqueAlphaChannel }
|
171
191
|
assert_nothing_raised { @img.alpha Magick::SetAlphaChannel }
|
192
|
+
assert_raise(ArgumentError) { @img.alpha Magick::SetAlphaChannel, Magick::OpaqueAlphaChannel }
|
172
193
|
@img.freeze
|
173
194
|
assert_raise(FreezeError) { @img.alpha Magick::SetAlphaChannel }
|
174
195
|
end
|
175
196
|
|
197
|
+
def test_aref
|
198
|
+
img = Magick::Image.read(IMAGES_DIR + '/Button_0.gif').first
|
199
|
+
assert_nil(img[nil])
|
200
|
+
assert_nil(img['label'])
|
201
|
+
assert_match(/^Creator: PolyView/, img[:comment])
|
202
|
+
end
|
203
|
+
|
204
|
+
def test_aset
|
205
|
+
@img['label'] = 'foobarbaz'
|
206
|
+
@img[:comment] = 'Hello world'
|
207
|
+
assert_equal('foobarbaz', @img['label'])
|
208
|
+
assert_equal('Hello world', @img['comment'])
|
209
|
+
assert_nothing_raised { @img[nil] = 'foobarbaz' }
|
210
|
+
end
|
211
|
+
|
176
212
|
def test_auto_gamma
|
177
213
|
res = nil
|
178
214
|
assert_nothing_raised { res = @img.auto_gamma_channel }
|
@@ -194,10 +230,14 @@ class Image1_UT < Test::Unit::TestCase
|
|
194
230
|
end
|
195
231
|
|
196
232
|
def test_auto_orient
|
197
|
-
|
198
|
-
|
199
|
-
|
200
|
-
|
233
|
+
Magick::OrientationType.values.each do |v|
|
234
|
+
assert_nothing_raised do
|
235
|
+
img = Magick::Image.new(10, 10)
|
236
|
+
img.orientation = v
|
237
|
+
res = img.auto_orient
|
238
|
+
assert_instance_of(Magick::Image, res)
|
239
|
+
assert_not_same(img, res)
|
240
|
+
end
|
201
241
|
end
|
202
242
|
|
203
243
|
assert_nothing_raised do
|
@@ -224,13 +264,17 @@ class Image1_UT < Test::Unit::TestCase
|
|
224
264
|
@img2 = Magick::Image.new(20, 20) { self.background_color = 'black' }
|
225
265
|
assert_nothing_raised { @img.blend(@img2, 0.25) }
|
226
266
|
res = @img.blend(@img2, 0.25)
|
267
|
+
|
268
|
+
Magick::GravityType.values do |gravity|
|
269
|
+
assert_nothing_raised { @img.blend(@img2, 0.25, 0.75, gravity) }
|
270
|
+
assert_nothing_raised { @img.blend(@img2, 0.25, 0.75, gravity, 10) }
|
271
|
+
assert_nothing_raised { @img.blend(@img2, 0.25, 0.75, gravity, 10, 10) }
|
272
|
+
end
|
273
|
+
|
227
274
|
assert_instance_of(Magick::Image, res)
|
228
275
|
assert_nothing_raised { @img.blend(@img2, '25%') }
|
229
276
|
assert_nothing_raised { @img.blend(@img2, 0.25, 0.75) }
|
230
277
|
assert_nothing_raised { @img.blend(@img2, '25%', '75%') }
|
231
|
-
assert_nothing_raised { @img.blend(@img2, 0.25, 0.75, Magick::CenterGravity) }
|
232
|
-
assert_nothing_raised { @img.blend(@img2, 0.25, 0.75, Magick::CenterGravity, 10) }
|
233
|
-
assert_nothing_raised { @img.blend(@img2, 0.25, 0.75, Magick::CenterGravity, 10, 10) }
|
234
278
|
assert_raise(ArgumentError) { @img.blend }
|
235
279
|
assert_raise(ArgumentError) { @img.blend(@img2, 'x') }
|
236
280
|
assert_raise(TypeError) { @img.blend(@img2, 0.25, []) }
|
@@ -242,6 +286,13 @@ class Image1_UT < Test::Unit::TestCase
|
|
242
286
|
assert_raise(Magick::DestroyedImageError) { @img.blend(@img2, '25%') }
|
243
287
|
end
|
244
288
|
|
289
|
+
def test_blue_shift
|
290
|
+
assert_not_same(@img, @img.blue_shift)
|
291
|
+
assert_not_same(@img, @img.blue_shift(2.0))
|
292
|
+
assert_raise(TypeError) { @img.blue_shift('x') }
|
293
|
+
assert_raise(ArgumentError) { @img.blue_shift(2, 2) }
|
294
|
+
end
|
295
|
+
|
245
296
|
def test_blur_channel
|
246
297
|
assert_nothing_raised { @img.blur_channel }
|
247
298
|
assert_nothing_raised { @img.blur_channel(1) }
|
@@ -271,6 +322,9 @@ class Image1_UT < Test::Unit::TestCase
|
|
271
322
|
assert_nothing_raised { @img.black_threshold(50, 50) }
|
272
323
|
assert_nothing_raised { @img.black_threshold(50, 50, 50) }
|
273
324
|
assert_nothing_raised { @img.black_threshold(50, 50, 50, 50) }
|
325
|
+
assert_nothing_raised { @img.black_threshold(50, 50, 50, alpha: 50) }
|
326
|
+
assert_raise(ArgumentError) { @img.black_threshold(50, 50, 50, wrong: 50) }
|
327
|
+
assert_raise(ArgumentError) { @img.black_threshold(50, 50, 50, alpha: 50, extra: 50) }
|
274
328
|
assert_raise(ArgumentError) { @img.black_threshold(50, 50, 50, 50, 50) }
|
275
329
|
res = @img.black_threshold(50)
|
276
330
|
assert_instance_of(Magick::Image, res)
|
@@ -285,6 +339,16 @@ class Image1_UT < Test::Unit::TestCase
|
|
285
339
|
assert_raise(FreezeError) { @img.border!(2, 2, 'red') }
|
286
340
|
end
|
287
341
|
|
342
|
+
def test_capture
|
343
|
+
# assert_nothing_raised { Magick::Image.capture }
|
344
|
+
# assert_nothing_raised { Magick::Image.capture(true) }
|
345
|
+
# assert_nothing_raised { Magick::Image.capture(true, true) }
|
346
|
+
# assert_nothing_raised { Magick::Image.capture(true, true, true) }
|
347
|
+
# assert_nothing_raised { Magick::Image.capture(true, true, true, true) }
|
348
|
+
# assert_nothing_raised { Magick::Image.capture(true, true, true, true, true) }
|
349
|
+
assert_raise(ArgumentError) { Magick::Image.capture(true, true, true, true, true, true) }
|
350
|
+
end
|
351
|
+
|
288
352
|
def test_change_geometry
|
289
353
|
assert_raise(ArgumentError) { @img.change_geometry('sss') }
|
290
354
|
assert_raise(LocalJumpError) { @img.change_geometry('100x100') }
|
@@ -302,20 +366,10 @@ class Image1_UT < Test::Unit::TestCase
|
|
302
366
|
end
|
303
367
|
|
304
368
|
def test_channel
|
305
|
-
|
306
|
-
|
307
|
-
|
308
|
-
|
309
|
-
assert_nothing_raised { @img.channel(Magick::MagentaChannel) }
|
310
|
-
assert_nothing_raised { @img.channel(Magick::CyanChannel) }
|
311
|
-
assert_nothing_raised { @img.channel(Magick::YellowChannel) }
|
312
|
-
assert_nothing_raised { @img.channel(Magick::BlackChannel) }
|
313
|
-
assert_nothing_raised { @img.channel(Magick::GrayChannel) }
|
314
|
-
assert_nothing_raised { @img.channel(Magick::AlphaChannel) }
|
315
|
-
assert_nothing_raised { @img.channel(Magick::DefaultChannels) }
|
316
|
-
assert_nothing_raised { @img.channel(Magick::HueChannel) }
|
317
|
-
assert_nothing_raised { @img.channel(Magick::LuminosityChannel) }
|
318
|
-
assert_nothing_raised { @img.channel(Magick::SaturationChannel) }
|
369
|
+
Magick::ChannelType.values do |channel|
|
370
|
+
assert_nothing_raised { @img.channel(channel) }
|
371
|
+
end
|
372
|
+
|
319
373
|
assert_instance_of(Magick::Image, @img.channel(Magick::RedChannel))
|
320
374
|
assert_raise(TypeError) { @img.channel(2) }
|
321
375
|
end
|
@@ -404,6 +458,7 @@ class Image1_UT < Test::Unit::TestCase
|
|
404
458
|
assert_same(res, img)
|
405
459
|
assert_nothing_raised { img.clut_channel(clut, Magick::RedChannel) }
|
406
460
|
assert_nothing_raised { img.clut_channel(clut, Magick::RedChannel, Magick::BlueChannel) }
|
461
|
+
assert_raises(ArgumentError) { img.clut_channel }
|
407
462
|
assert_raises(ArgumentError) { img.clut_channel(clut, 1, Magick::RedChannel) }
|
408
463
|
end
|
409
464
|
|
@@ -485,6 +540,8 @@ class Image1_UT < Test::Unit::TestCase
|
|
485
540
|
end
|
486
541
|
pixel = Magick::Pixel.new(Magick::QuantumRange)
|
487
542
|
assert_nothing_raised { pc_img.colormap(0, pixel) }
|
543
|
+
assert_raise(ArgumentError) { pc_img.colormap }
|
544
|
+
assert_raise(ArgumentError) { pc_img.colormap(0, pixel, Magick::BlackChannel) }
|
488
545
|
assert_raise(TypeError) { pc_img.colormap(0, [2]) }
|
489
546
|
pc_img.freeze
|
490
547
|
assert_raise(FreezeError) { pc_img.colormap(0, 'red') }
|
@@ -537,13 +594,10 @@ class Image1_UT < Test::Unit::TestCase
|
|
537
594
|
def test_compare_channel
|
538
595
|
img1 = Magick::Image.read(IMAGES_DIR + '/Button_0.gif').first
|
539
596
|
img2 = Magick::Image.read(IMAGES_DIR + '/Button_1.gif').first
|
540
|
-
|
541
|
-
|
542
|
-
|
543
|
-
|
544
|
-
assert_nothing_raised { img1.compare_channel(img2, Magick::RootMeanSquaredErrorMetric) }
|
545
|
-
assert_nothing_raised { img1.compare_channel(img2, Magick::NormalizedCrossCorrelationErrorMetric) }
|
546
|
-
assert_nothing_raised { img1.compare_channel(img2, Magick::FuzzErrorMetric) }
|
597
|
+
|
598
|
+
Magick::MetricType.values do |metric|
|
599
|
+
assert_nothing_raised { img1.compare_channel(img2, metric) }
|
600
|
+
end
|
547
601
|
assert_raise(TypeError) { img1.compare_channel(img2, 2) }
|
548
602
|
assert_raise(ArgumentError) { img1.compare_channel }
|
549
603
|
|
@@ -569,5 +623,5 @@ end
|
|
569
623
|
if $PROGRAM_NAME == __FILE__
|
570
624
|
IMAGES_DIR = '../doc/ex/images'
|
571
625
|
FILES = Dir[IMAGES_DIR + '/Button_*.gif']
|
572
|
-
Test::Unit::UI::Console::TestRunner.run(Image1UT)
|
626
|
+
Test::Unit::UI::Console::TestRunner.run(Image1UT)
|
573
627
|
end
|
data/test/Image2.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'rmagick'
|
4
4
|
require 'test/unit'
|
5
|
-
require 'test/unit/ui/console/testrunner'
|
5
|
+
require 'test/unit/ui/console/testrunner'
|
6
6
|
|
7
7
|
# TODO: improve exif tests - need a benchmark image with EXIF data
|
8
8
|
|
@@ -11,12 +11,42 @@ class Image2_UT < Test::Unit::TestCase
|
|
11
11
|
@img = Magick::Image.new(20, 20)
|
12
12
|
end
|
13
13
|
|
14
|
-
def test_composite
|
14
|
+
def test_composite
|
15
15
|
img1 = Magick::Image.read(IMAGES_DIR + '/Button_0.gif').first
|
16
16
|
img2 = Magick::Image.read(IMAGES_DIR + '/Button_1.gif').first
|
17
|
+
Magick::CompositeOperator.values do |op|
|
18
|
+
Magick::GravityType.values do |gravity|
|
19
|
+
assert_nothing_raised do
|
20
|
+
res = img1.composite(img2, gravity, 5, 5, op)
|
21
|
+
assert_not_same(img1, res)
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
17
26
|
assert_nothing_raised do
|
18
|
-
res = img1.composite
|
19
|
-
|
27
|
+
res = img1.composite(img2, 5, 5, Magick::OverCompositeOp)
|
28
|
+
assert_not_same(img1, res)
|
29
|
+
end
|
30
|
+
|
31
|
+
assert_raise(TypeError) { img1.composite(img2, 'x', 5, Magick::OverCompositeOp) }
|
32
|
+
assert_raise(TypeError) { img1.composite(img2, 5, 'y', Magick::OverCompositeOp) }
|
33
|
+
assert_raise(TypeError) { img1.composite(img2, Magick::NorthWestGravity, 'x', 5, Magick::OverCompositeOp) }
|
34
|
+
assert_raise(TypeError) { img1.composite(img2, Magick::NorthWestGravity, 5, 'y', Magick::OverCompositeOp) }
|
35
|
+
|
36
|
+
img1.freeze
|
37
|
+
assert_nothing_raised { img1.composite(img2, Magick::NorthWestGravity, Magick::OverCompositeOp) }
|
38
|
+
end
|
39
|
+
|
40
|
+
def test_composite!
|
41
|
+
img1 = Magick::Image.read(IMAGES_DIR + '/Button_0.gif').first
|
42
|
+
img2 = Magick::Image.read(IMAGES_DIR + '/Button_1.gif').first
|
43
|
+
Magick::CompositeOperator.values do |op|
|
44
|
+
Magick::GravityType.values do |gravity|
|
45
|
+
assert_nothing_raised do
|
46
|
+
res = img1.composite!(img2, gravity, op)
|
47
|
+
assert_same(img1, res)
|
48
|
+
end
|
49
|
+
end
|
20
50
|
end
|
21
51
|
img1.freeze
|
22
52
|
assert_raise(FreezeError) { img1.composite!(img2, Magick::NorthWestGravity, Magick::OverCompositeOp) }
|
@@ -33,6 +63,22 @@ class Image2_UT < Test::Unit::TestCase
|
|
33
63
|
end
|
34
64
|
end
|
35
65
|
|
66
|
+
def test_composite_channel
|
67
|
+
img1 = Magick::Image.read(IMAGES_DIR + '/Button_0.gif').first
|
68
|
+
img2 = Magick::Image.read(IMAGES_DIR + '/Button_1.gif').first
|
69
|
+
Magick::CompositeOperator.values do |op|
|
70
|
+
Magick::GravityType.values do |gravity|
|
71
|
+
assert_nothing_raised do
|
72
|
+
res = img1.composite_channel(img2, gravity, 5, 5, op, Magick::BlueChannel)
|
73
|
+
assert_not_same(img1, res)
|
74
|
+
end
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
assert_raise(ArgumentError) { img1.composite_channel(img2, Magick::NorthWestGravity) }
|
79
|
+
assert_raise(TypeError) { img1.composite_channel(img2, Magick::NorthWestGravity, 5, 5, Magick::OverCompositeOp, 'x') }
|
80
|
+
end
|
81
|
+
|
36
82
|
def test_composite_mathematics
|
37
83
|
bg = Magick::Image.new(50, 50)
|
38
84
|
fg = Magick::Image.new(50, 50) { self.background_color = 'black' }
|
@@ -66,6 +112,10 @@ class Image2_UT < Test::Unit::TestCase
|
|
66
112
|
assert_nothing_raised { bg.composite_tiled(fg, Magick::RedChannel) }
|
67
113
|
assert_nothing_raised { bg.composite_tiled(fg, Magick::RedChannel, Magick::GreenChannel) }
|
68
114
|
|
115
|
+
assert_raise(ArgumentError) { bg.composite_tiled }
|
116
|
+
assert_raise(TypeError) { bg.composite_tiled(fg, 'x') }
|
117
|
+
assert_raise(TypeError) { bg.composite_tiled(fg, Magick::AtopCompositeOp, Magick::RedChannel, 'x') }
|
118
|
+
|
69
119
|
fg.destroy!
|
70
120
|
assert_raise(Magick::DestroyedImageError) { bg.composite_tiled(fg) }
|
71
121
|
end
|
@@ -107,6 +157,17 @@ class Image2_UT < Test::Unit::TestCase
|
|
107
157
|
assert_raise(ArgumentError) { @img.contrast_stretch_channel(25, 'x') }
|
108
158
|
end
|
109
159
|
|
160
|
+
def test_morphology
|
161
|
+
kernel = Magick::KernelInfo.new('Octagon')
|
162
|
+
Magick::MorphologyMethod.values do |method|
|
163
|
+
assert_nothing_raised do
|
164
|
+
res = @img.morphology(method, 2, kernel)
|
165
|
+
assert_instance_of(Magick::Image, res)
|
166
|
+
assert_not_same(@img, res)
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
|
110
171
|
def test_morphology_channel
|
111
172
|
assert_raise(ArgumentError) { @img.morphology_channel }
|
112
173
|
assert_raise(ArgumentError) { @img.morphology_channel(Magick::RedChannel) }
|
@@ -131,15 +192,19 @@ class Image2_UT < Test::Unit::TestCase
|
|
131
192
|
assert_not_same(@img, res)
|
132
193
|
end
|
133
194
|
assert_raise(ArgumentError) { @img.convolve }
|
195
|
+
assert_raise(ArgumentError) { @img.convolve(0) }
|
196
|
+
assert_raise(ArgumentError) { @img.convolve(-1) }
|
134
197
|
assert_raise(ArgumentError) { @img.convolve(order) }
|
135
198
|
assert_raise(IndexError) { @img.convolve(5, kernel) }
|
136
199
|
assert_raise(IndexError) { @img.convolve(order, 'x') }
|
137
200
|
assert_raise(TypeError) { @img.convolve(3, [1.0, 1.0, 1.0, 1.0, 'x', 1.0, 1.0, 1.0, 1.0]) }
|
138
|
-
assert_raise(
|
201
|
+
assert_raise(ArgumentError) { @img.convolve(-1, [1.0, 1.0, 1.0, 1.0]) }
|
139
202
|
end
|
140
203
|
|
141
204
|
def test_convolve_channel
|
142
205
|
assert_raise(ArgumentError) { @img.convolve_channel }
|
206
|
+
assert_raise(ArgumentError) { @img.convolve_channel(0) }
|
207
|
+
assert_raise(ArgumentError) { @img.convolve_channel(-1) }
|
143
208
|
assert_raise(ArgumentError) { @img.convolve_channel(3) }
|
144
209
|
kernel = [1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0, 1.0]
|
145
210
|
order = 3
|
@@ -173,16 +238,9 @@ class Image2_UT < Test::Unit::TestCase
|
|
173
238
|
assert_instance_of(Magick::Image, res)
|
174
239
|
assert_not_same(@img, res)
|
175
240
|
end
|
176
|
-
gravity = [
|
177
|
-
Magick::NorthEastGravity,
|
178
|
-
Magick::EastGravity,
|
179
|
-
Magick::SouthWestGravity,
|
180
|
-
Magick::SouthGravity,
|
181
|
-
Magick::SouthEastGravity
|
182
|
-
]
|
183
241
|
|
184
242
|
# 3-argument form
|
185
|
-
|
243
|
+
Magick::GravityType.values do |grav|
|
186
244
|
assert_nothing_raised { @img.crop(grav, @img.columns / 2, @img.rows / 2) }
|
187
245
|
end
|
188
246
|
assert_raise(TypeError) { @img.crop(2, @img.columns / 2, @img.rows / 2) }
|
@@ -196,7 +254,7 @@ class Image2_UT < Test::Unit::TestCase
|
|
196
254
|
assert_raise(TypeError) { @img.crop(0, 0, @img.columns / 2, @img.rows / 2, 2) }
|
197
255
|
|
198
256
|
# 5-argument form
|
199
|
-
|
257
|
+
Magick::GravityType.values do |grav|
|
200
258
|
assert_nothing_raised { @img.crop(grav, 0, 0, @img.columns / 2, @img.rows / 2) }
|
201
259
|
end
|
202
260
|
|
@@ -239,6 +297,7 @@ class Image2_UT < Test::Unit::TestCase
|
|
239
297
|
def test_define
|
240
298
|
assert_nothing_raised { @img.define('deskew:auto-crop', 40) }
|
241
299
|
assert_nothing_raised { @img.undefine('deskew:auto-crop') }
|
300
|
+
assert_nothing_raised { @img.define('deskew:auto-crop', nil) }
|
242
301
|
end
|
243
302
|
|
244
303
|
def test_deskew
|
@@ -266,11 +325,7 @@ class Image2_UT < Test::Unit::TestCase
|
|
266
325
|
# ensure methods detect destroyed images
|
267
326
|
def test_destroy
|
268
327
|
methods = Magick::Image.instance_methods(false).sort
|
269
|
-
methods -=
|
270
|
-
%i[__display__ destroy! destroyed? inspect cur_image marshal_load]
|
271
|
-
else
|
272
|
-
%w[__display__ destroy! destroyed? inspect cur_image marshal_load]
|
273
|
-
end
|
328
|
+
methods -= %i[__display__ destroy! destroyed? inspect cur_image marshal_load]
|
274
329
|
|
275
330
|
assert_equal(false, @img.destroyed?)
|
276
331
|
@img.destroy!
|
@@ -288,8 +343,6 @@ class Image2_UT < Test::Unit::TestCase
|
|
288
343
|
assert_raises(Magick::DestroyedImageError) { @img.difference(other) }
|
289
344
|
elsif method == 'channel_entropy' && IM_VERSION < Gem::Version.new('6.9')
|
290
345
|
assert_raises(NotImplementedError) { @img.channel_entropy }
|
291
|
-
elsif %w[morphology morphology_channel].include?(method)
|
292
|
-
warn "skipped testing `#destroy` against `##{method}`"
|
293
346
|
elsif method == 'get_iptc_dataset'
|
294
347
|
assert_raises(Magick::DestroyedImageError) { @img.get_iptc_dataset('x') }
|
295
348
|
elsif method == 'profile!'
|
@@ -396,6 +449,7 @@ class Image2_UT < Test::Unit::TestCase
|
|
396
449
|
assert_nothing_raised { @img.dissolve(src, 0.50, 0.10, Magick::NorthEastGravity, 10) }
|
397
450
|
assert_nothing_raised { @img.dissolve(src, 0.50, 0.10, Magick::NorthEastGravity, 10, 10) }
|
398
451
|
|
452
|
+
assert_raise(ArgumentError) { @img.dissolve }
|
399
453
|
assert_raise(ArgumentError) { @img.dissolve(src, 'x') }
|
400
454
|
assert_raise(ArgumentError) { @img.dissolve(src, 0.50, 'x') }
|
401
455
|
assert_raise(TypeError) { @img.dissolve(src, 0.50, Magick::NorthEastGravity, 'x') }
|
@@ -412,9 +466,11 @@ class Image2_UT < Test::Unit::TestCase
|
|
412
466
|
assert_nothing_raised { @img.distort(Magick::BilinearDistortion, [7, 40, 4, 30, 4, 124, 4, 123, 85, 122, 100, 123, 85, 2, 100, 30]) }
|
413
467
|
assert_nothing_raised { @img.distort(Magick::PerspectiveDistortion, [7, 40, 4, 30, 4, 124, 4, 123, 85, 122, 100, 123, 85, 2, 100, 30]) }
|
414
468
|
assert_nothing_raised { @img.distort(Magick::ScaleRotateTranslateDistortion, [28, 24, 0.4, 0.8 - 110, 37.5, 60]) }
|
469
|
+
assert_nothing_raised { @img.distort(Magick::ScaleRotateTranslateDistortion, [28, 24, 0.4, 0.8 - 110, 37.5, 60], true) }
|
415
470
|
assert_raise(ArgumentError) { @img.distort }
|
416
471
|
assert_raise(ArgumentError) { @img.distort(Magick::AffineDistortion) }
|
417
472
|
assert_raise(TypeError) { @img.distort(1, [1]) }
|
473
|
+
assert_raise(TypeError) { @img.distort(Magick::AffineDistortion, [2, 60, 2, 60, 32, 60, 32, 60, 2, 30, 17, 'x']) }
|
418
474
|
end
|
419
475
|
|
420
476
|
def test_distortion_channel
|
@@ -425,7 +481,7 @@ class Image2_UT < Test::Unit::TestCase
|
|
425
481
|
end
|
426
482
|
assert_nothing_raised { @img.distortion_channel(@img, Magick::MeanSquaredErrorMetric) }
|
427
483
|
assert_nothing_raised { @img.distortion_channel(@img, Magick::PeakAbsoluteErrorMetric) }
|
428
|
-
assert_nothing_raised { @img.distortion_channel(@img, Magick::
|
484
|
+
assert_nothing_raised { @img.distortion_channel(@img, Magick::PeakSignalToNoiseRatioErrorMetric) }
|
429
485
|
assert_nothing_raised { @img.distortion_channel(@img, Magick::RootMeanSquaredErrorMetric) }
|
430
486
|
assert_nothing_raised { @img.distortion_channel(@img, Magick::MeanSquaredErrorMetric, Magick::RedChannel, Magick:: BlueChannel) }
|
431
487
|
assert_nothing_raised { @img.distortion_channel(@img, Magick::NormalizedCrossCorrelationErrorMetric) }
|
@@ -440,6 +496,18 @@ class Image2_UT < Test::Unit::TestCase
|
|
440
496
|
assert_raise(Magick::DestroyedImageError) { @img.distortion_channel(img, Magick::MeanSquaredErrorMetric) }
|
441
497
|
end
|
442
498
|
|
499
|
+
def test__dump
|
500
|
+
img = Magick::Image.read(IMAGES_DIR + '/Button_0.gif').first
|
501
|
+
assert_instance_of(String, img._dump(10))
|
502
|
+
end
|
503
|
+
|
504
|
+
def test__load
|
505
|
+
img = Magick::Image.read(IMAGES_DIR + '/Button_0.gif').first
|
506
|
+
res = img._dump(10)
|
507
|
+
|
508
|
+
assert_instance_of(Magick::Image, Magick::Image._load(res))
|
509
|
+
end
|
510
|
+
|
443
511
|
def test_dup
|
444
512
|
assert_nothing_raised do
|
445
513
|
ditto = @img.dup
|
@@ -620,8 +688,11 @@ class Image2_UT < Test::Unit::TestCase
|
|
620
688
|
assert_equal(40, res.rows)
|
621
689
|
assert_nothing_raised { @img.extent(40, 40, 5) }
|
622
690
|
assert_nothing_raised { @img.extent(40, 40, 5, 5) }
|
691
|
+
assert_raises(ArgumentError) { @img.extent(-40) }
|
623
692
|
assert_raises(ArgumentError) { @img.extent(-40, 40) }
|
624
693
|
assert_raises(ArgumentError) { @img.extent(40, -40) }
|
694
|
+
assert_raises(ArgumentError) { @img.extent(40, 40, 5, 5, 0) }
|
695
|
+
assert_raises(ArgumentError) { @img.extent(0, 0, 5, 5) }
|
625
696
|
assert_raises(TypeError) { @img.extent('x', 40) }
|
626
697
|
assert_raises(TypeError) { @img.extent(40, 'x') }
|
627
698
|
assert_raises(TypeError) { @img.extent(40, 40, 'x') }
|
@@ -714,6 +785,7 @@ class Image2_UT < Test::Unit::TestCase
|
|
714
785
|
red = Magick::Pixel.new(Magick::QuantumRange)
|
715
786
|
assert_nothing_raised { @img.frame(50, 50, 25, 25, 6, 6, red) }
|
716
787
|
assert_raise(TypeError) { @img.frame(50, 50, 25, 25, 6, 6, 2) }
|
788
|
+
assert_raise(ArgumentError) { @img.frame(50, 50, 25, 25, 6, 6, red, 2) }
|
717
789
|
end
|
718
790
|
|
719
791
|
def test_fx
|
@@ -862,6 +934,7 @@ class Image2_UT < Test::Unit::TestCase
|
|
862
934
|
assert_instance_of(Magick::Image, res)
|
863
935
|
assert_not_same(@img, res)
|
864
936
|
end
|
937
|
+
assert_raise(ArgumentError) { @img.implode(0.5, 0.5) }
|
865
938
|
end
|
866
939
|
|
867
940
|
def test_import_pixels
|
@@ -917,6 +990,12 @@ class Image2_UT < Test::Unit::TestCase
|
|
917
990
|
# Ensure that level2 uses new arg order
|
918
991
|
img1 = @img.level2(10, 200, 2)
|
919
992
|
assert_equal(img2, img1)
|
993
|
+
|
994
|
+
assert_nothing_raised { @img.level2 }
|
995
|
+
assert_nothing_raised { @img.level2(10) }
|
996
|
+
assert_nothing_raised { @img.level2(10, 10) }
|
997
|
+
assert_nothing_raised { @img.level2(10, 10, 10) }
|
998
|
+
assert_raise(ArgumentError) { @img.level2(10, 10, 10, 10) }
|
920
999
|
end
|
921
1000
|
|
922
1001
|
def test_level_channel
|
@@ -938,7 +1017,7 @@ class Image2_UT < Test::Unit::TestCase
|
|
938
1017
|
assert_raise(TypeError) { @img.level_channel(Magick::RedChannel, 0.0, 1.0, 'x') }
|
939
1018
|
end
|
940
1019
|
|
941
|
-
def
|
1020
|
+
def test_level_colors
|
942
1021
|
res = nil
|
943
1022
|
assert_nothing_raised do
|
944
1023
|
res = @img.level_colors
|
@@ -947,19 +1026,17 @@ class Image2_UT < Test::Unit::TestCase
|
|
947
1026
|
assert_not_same(@img, res)
|
948
1027
|
|
949
1028
|
assert_nothing_raised { @img.level_colors('black') }
|
950
|
-
assert_nothing_raised { @img.level_colors('black', Pixel.new(0, 0, 0)) }
|
951
|
-
assert_nothing_raised { @img.level_colors(Pixel.new(0, 0, 0), Pixel.new(Magick::QuantumRange, Magick::QuantumRange, Magick::QuantumRange)) }
|
1029
|
+
assert_nothing_raised { @img.level_colors('black', Magick::Pixel.new(0, 0, 0)) }
|
1030
|
+
assert_nothing_raised { @img.level_colors(Magick::Pixel.new(0, 0, 0), Magick::Pixel.new(Magick::QuantumRange, Magick::QuantumRange, Magick::QuantumRange)) }
|
952
1031
|
assert_nothing_raised { @img.level_colors('black', 'white') }
|
953
1032
|
assert_nothing_raised { @img.level_colors('black', 'white', false) }
|
954
|
-
|
955
|
-
assert_raises(
|
956
|
-
|
957
|
-
assert_raises(ArgumentError) { @img.level_colors([]) }
|
958
|
-
# not a color name
|
1033
|
+
|
1034
|
+
assert_raises(TypeError) { @img.level_colors('black', 'white', false, 1) }
|
1035
|
+
assert_raises(TypeError) { @img.level_colors([]) }
|
959
1036
|
assert_raises(ArgumentError) { @img.level_colors('xxx') }
|
960
1037
|
end
|
961
1038
|
|
962
|
-
def
|
1039
|
+
def test_levelize_channel
|
963
1040
|
res = nil
|
964
1041
|
assert_nothing_raised do
|
965
1042
|
res = @img.levelize_channel(0, Magick::QuantumRange)
|
@@ -967,12 +1044,13 @@ class Image2_UT < Test::Unit::TestCase
|
|
967
1044
|
assert_instance_of(Magick::Image, res)
|
968
1045
|
assert_not_same(@img, res)
|
969
1046
|
|
1047
|
+
assert_nothing_raised { @img.levelize_channel(0) }
|
1048
|
+
assert_nothing_raised { @img.levelize_channel(0, Magick::QuantumRange) }
|
970
1049
|
assert_nothing_raised { @img.levelize_channel(0, Magick::QuantumRange, 0.5) }
|
971
1050
|
assert_nothing_raised { @img.levelize_channel(0, Magick::QuantumRange, 0.5, Magick::RedChannel) }
|
972
1051
|
assert_nothing_raised { @img.levelize_channel(0, Magick::QuantumRange, 0.5, Magick::RedChannel, Magick::BlueChannel) }
|
973
|
-
|
974
|
-
assert_raise(
|
975
|
-
# not enough arguments
|
1052
|
+
|
1053
|
+
assert_raise(TypeError) { @img.levelize_channel(0, Magick::QuantumRange, 0.5, 1, Magick::RedChannel) }
|
976
1054
|
assert_raise(ArgumentError) { @img.levelize_channel }
|
977
1055
|
end
|
978
1056
|
|
@@ -1044,6 +1122,7 @@ class Image2_UT < Test::Unit::TestCase
|
|
1044
1122
|
assert_equal(20, res.columns)
|
1045
1123
|
assert_equal(20, res.rows)
|
1046
1124
|
|
1125
|
+
assert_raise(ArgumentError) { @img.mask(cimg, 'x') }
|
1047
1126
|
# mask expects an Image and calls `cur_image'
|
1048
1127
|
assert_raise(NoMethodError) { @img.mask = 2 }
|
1049
1128
|
|
@@ -1072,8 +1151,16 @@ class Image2_UT < Test::Unit::TestCase
|
|
1072
1151
|
assert_not_same(@img, res)
|
1073
1152
|
end
|
1074
1153
|
assert_nothing_raised { @img.matte_floodfill(@img.columns, @img.rows) }
|
1154
|
+
|
1155
|
+
Magick::PaintMethod.values do |method|
|
1156
|
+
next if [Magick::FillToBorderMethod, Magick::FloodfillMethod].include?(method)
|
1157
|
+
|
1158
|
+
assert_raise(ArgumentError) { @img.matte_flood_fill('blue', Magick::TransparentAlpha, @img.columns, @img.rows, method) }
|
1159
|
+
end
|
1075
1160
|
assert_raise(ArgumentError) { @img.matte_floodfill(@img.columns + 1, @img.rows) }
|
1076
1161
|
assert_raise(ArgumentError) { @img.matte_floodfill(@img.columns, @img.rows + 1) }
|
1162
|
+
assert_nothing_raised { @img.matte_flood_fill('blue', @img.columns, @img.rows, Magick::FloodfillMethod, alpha: Magick::TransparentAlpha) }
|
1163
|
+
assert_raise(ArgumentError) { @img.matte_flood_fill('blue', @img.columns, @img.rows, Magick::FloodfillMethod, wrong: Magick::TransparentAlpha) }
|
1077
1164
|
end
|
1078
1165
|
|
1079
1166
|
def test_matte_replace
|
@@ -1122,6 +1209,7 @@ class Image2_UT < Test::Unit::TestCase
|
|
1122
1209
|
assert_nothing_raised { @img.modulate(0.5) }
|
1123
1210
|
assert_nothing_raised { @img.modulate(0.5, 0.5) }
|
1124
1211
|
assert_nothing_raised { @img.modulate(0.5, 0.5, 0.5) }
|
1212
|
+
assert_raise(ArgumentError) { @img.modulate(0.0, 0.5, 0.5) }
|
1125
1213
|
assert_raise(ArgumentError) { @img.modulate(0.5, 0.5, 0.5, 0.5) }
|
1126
1214
|
assert_raise(TypeError) { @img.modulate('x', 0.5, 0.5) }
|
1127
1215
|
assert_raise(TypeError) { @img.modulate(0.5, 'x', 0.5) }
|
@@ -1225,6 +1313,7 @@ class Image2_UT < Test::Unit::TestCase
|
|
1225
1313
|
assert_raise(TypeError) { @img.opaque_channel('red', 'blue', true, 50, 50) }
|
1226
1314
|
assert_raise(TypeError) { @img.opaque_channel('red', 'blue', true, []) }
|
1227
1315
|
assert_raise(ArgumentError) { @img.opaque_channel('red') }
|
1316
|
+
assert_raise(ArgumentError) { @img.opaque_channel('red', 'blue', true, -0.1) }
|
1228
1317
|
assert_raise(TypeError) { @img.opaque_channel('red', []) }
|
1229
1318
|
end
|
1230
1319
|
|
@@ -1232,7 +1321,7 @@ class Image2_UT < Test::Unit::TestCase
|
|
1232
1321
|
assert_nothing_raised do
|
1233
1322
|
assert_block { @img.opaque? }
|
1234
1323
|
end
|
1235
|
-
@img.
|
1324
|
+
@img.alpha(Magick::TransparentAlphaChannel)
|
1236
1325
|
assert_block { !@img.opaque? }
|
1237
1326
|
end
|
1238
1327
|
|
@@ -1242,6 +1331,7 @@ class Image2_UT < Test::Unit::TestCase
|
|
1242
1331
|
assert_instance_of(Magick::Image, res)
|
1243
1332
|
assert_not_same(@img, res)
|
1244
1333
|
end
|
1334
|
+
assert_nothing_raised { @img.ordered_dither('3x3') }
|
1245
1335
|
assert_nothing_raised { @img.ordered_dither(2) }
|
1246
1336
|
assert_nothing_raised { @img.ordered_dither(3) }
|
1247
1337
|
assert_nothing_raised { @img.ordered_dither(4) }
|
@@ -1256,8 +1346,15 @@ class Image2_UT < Test::Unit::TestCase
|
|
1256
1346
|
assert_instance_of(Magick::Image, res)
|
1257
1347
|
assert_not_same(res, @img)
|
1258
1348
|
assert_nothing_raised { @img.paint_transparent('red', Magick::TransparentOpacity) }
|
1349
|
+
assert_nothing_raised { @img.paint_transparent('red', alpha: Magick::TransparentAlpha) }
|
1350
|
+
assert_raise(ArgumentError) { @img.paint_transparent('red', wrong: Magick::TransparentAlpha) }
|
1259
1351
|
assert_nothing_raised { @img.paint_transparent('red', Magick::TransparentOpacity, true) }
|
1352
|
+
assert_nothing_raised { @img.paint_transparent('red', true, alpha: Magick::TransparentAlpha) }
|
1353
|
+
assert_raise(ArgumentError) { @img.paint_transparent('red', true, wrong: Magick::TransparentAlpha) }
|
1354
|
+
assert_raise(ArgumentError) { @img.paint_transparent('red', true, alpha: Magick::TransparentAlpha, extra: Magick::TransparentAlpha) }
|
1260
1355
|
assert_nothing_raised { @img.paint_transparent('red', Magick::TransparentOpacity, true, 50) }
|
1356
|
+
assert_nothing_raised { @img.paint_transparent('red', true, 50, alpha: Magick::TransparentAlpha) }
|
1357
|
+
assert_raise(ArgumentError) { @img.paint_transparent('red', true, 50, wrong: Magick::TransparentAlpha) }
|
1261
1358
|
|
1262
1359
|
# Too many arguments
|
1263
1360
|
assert_raise(ArgumentError) { @img.paint_transparent('red', Magick::TransparentOpacity, true, 50, 50) }
|
@@ -1294,6 +1391,12 @@ class Image2_UT < Test::Unit::TestCase
|
|
1294
1391
|
# If args are out-of-bounds return the background color
|
1295
1392
|
img = Magick::Image.new(10, 10) { self.background_color = 'blue' }
|
1296
1393
|
assert_equal('blue', img.pixel_color(50, 50).to_color)
|
1394
|
+
|
1395
|
+
assert_nothing_raised do
|
1396
|
+
@img.class_type = Magick::PseudoClass
|
1397
|
+
res = @img.pixel_color(0, 0, 'red')
|
1398
|
+
assert_equal('blue', res.to_color)
|
1399
|
+
end
|
1297
1400
|
end
|
1298
1401
|
|
1299
1402
|
def test_polaroid
|
@@ -1301,6 +1404,7 @@ class Image2_UT < Test::Unit::TestCase
|
|
1301
1404
|
assert_nothing_raised { @img.polaroid(5) }
|
1302
1405
|
assert_instance_of(Magick::Image, @img.polaroid)
|
1303
1406
|
assert_raises(TypeError) { @img.polaroid('x') }
|
1407
|
+
assert_raises(ArgumentError) { @img.polaroid(5, 'x') }
|
1304
1408
|
end
|
1305
1409
|
|
1306
1410
|
def test_posterize
|
@@ -1318,5 +1422,5 @@ end
|
|
1318
1422
|
if $PROGRAM_NAME == __FILE__
|
1319
1423
|
IMAGES_DIR = '../doc/ex/images'
|
1320
1424
|
FILES = Dir[IMAGES_DIR + '/Button_*.gif']
|
1321
|
-
Test::Unit::UI::Console::TestRunner.run(Image2UT)
|
1425
|
+
Test::Unit::UI::Console::TestRunner.run(Image2UT)
|
1322
1426
|
end
|