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
@@ -1,77 +1,6 @@
|
|
1
1
|
RSpec.describe Magick::Image, '#composite' do
|
2
2
|
let(:img1) { Magick::Image.read(IMAGES_DIR + '/Button_0.gif').first }
|
3
3
|
let(:img2) { Magick::Image.read(IMAGES_DIR + '/Button_1.gif').first }
|
4
|
-
let(:composite_ops) do
|
5
|
-
[
|
6
|
-
Magick::UndefinedCompositeOp,
|
7
|
-
Magick::NoCompositeOp,
|
8
|
-
Magick::AddCompositeOp,
|
9
|
-
Magick::AtopCompositeOp,
|
10
|
-
Magick::BumpmapCompositeOp,
|
11
|
-
Magick::ClearCompositeOp,
|
12
|
-
Magick::ColorizeCompositeOp,
|
13
|
-
Magick::CopyBlueCompositeOp,
|
14
|
-
Magick::CopyCompositeOp,
|
15
|
-
Magick::CopyGreenCompositeOp,
|
16
|
-
Magick::CopyOpacityCompositeOp,
|
17
|
-
Magick::CopyRedCompositeOp,
|
18
|
-
Magick::CopyCyanCompositeOp,
|
19
|
-
Magick::CopyMagentaCompositeOp,
|
20
|
-
Magick::CopyYellowCompositeOp,
|
21
|
-
Magick::CopyBlackCompositeOp,
|
22
|
-
Magick::DarkenCompositeOp,
|
23
|
-
Magick::DifferenceCompositeOp,
|
24
|
-
Magick::DisplaceCompositeOp,
|
25
|
-
Magick::DissolveCompositeOp,
|
26
|
-
Magick::DstAtopCompositeOp,
|
27
|
-
Magick::DstCompositeOp,
|
28
|
-
Magick::DstInCompositeOp,
|
29
|
-
Magick::DstOutCompositeOp,
|
30
|
-
Magick::DstOverCompositeOp,
|
31
|
-
Magick::HueCompositeOp,
|
32
|
-
Magick::InCompositeOp,
|
33
|
-
Magick::LightenCompositeOp,
|
34
|
-
Magick::LuminizeCompositeOp,
|
35
|
-
Magick::MinusCompositeOp,
|
36
|
-
Magick::ModulateCompositeOp,
|
37
|
-
Magick::MultiplyCompositeOp,
|
38
|
-
Magick::OutCompositeOp,
|
39
|
-
Magick::OverCompositeOp,
|
40
|
-
Magick::OverlayCompositeOp,
|
41
|
-
Magick::PlusCompositeOp,
|
42
|
-
Magick::ReplaceCompositeOp,
|
43
|
-
Magick::SaturateCompositeOp,
|
44
|
-
Magick::ScreenCompositeOp,
|
45
|
-
Magick::SrcAtopCompositeOp,
|
46
|
-
Magick::SrcCompositeOp,
|
47
|
-
Magick::SrcInCompositeOp,
|
48
|
-
Magick::SrcOutCompositeOp,
|
49
|
-
Magick::SrcOverCompositeOp,
|
50
|
-
Magick::SubtractCompositeOp,
|
51
|
-
Magick::ThresholdCompositeOp,
|
52
|
-
Magick::XorCompositeOp,
|
53
|
-
Magick::BlendCompositeOp,
|
54
|
-
Magick::ColorBurnCompositeOp,
|
55
|
-
Magick::ColorDodgeCompositeOp,
|
56
|
-
Magick::ExclusionCompositeOp,
|
57
|
-
Magick::HardLightCompositeOp,
|
58
|
-
Magick::SoftLightCompositeOp,
|
59
|
-
Magick::MathematicsCompositeOp,
|
60
|
-
Magick::DivideSrcCompositeOp,
|
61
|
-
Magick::MinusSrcCompositeOp,
|
62
|
-
Magick::DarkenIntensityCompositeOp,
|
63
|
-
Magick::LightenIntensityCompositeOp
|
64
|
-
]
|
65
|
-
end
|
66
|
-
let(:gravity) do
|
67
|
-
[
|
68
|
-
Magick::NorthEastGravity,
|
69
|
-
Magick::EastGravity,
|
70
|
-
Magick::SouthWestGravity,
|
71
|
-
Magick::SouthGravity,
|
72
|
-
Magick::SouthEastGravity
|
73
|
-
]
|
74
|
-
end
|
75
4
|
|
76
5
|
it 'raises an error given invalid arguments' do
|
77
6
|
expect { img1.composite }.to raise_error(ArgumentError)
|
@@ -85,8 +14,8 @@ RSpec.describe Magick::Image, '#composite' do
|
|
85
14
|
|
86
15
|
context 'when given 3 arguments' do
|
87
16
|
it 'works when 2nd argument is a gravity' do
|
88
|
-
|
89
|
-
|
17
|
+
Magick::CompositeOperator.values do |op|
|
18
|
+
Magick::GravityType.values do |grav|
|
90
19
|
expect { img1.composite(img2, grav, op) }.not_to raise_error
|
91
20
|
end
|
92
21
|
end
|
@@ -103,7 +32,7 @@ RSpec.describe Magick::Image, '#composite' do
|
|
103
32
|
it 'works when 4th argument is a composite operator' do
|
104
33
|
# there are way too many CompositeOperators to test them all, so just try
|
105
34
|
# few representative ops
|
106
|
-
|
35
|
+
Magick::CompositeOperator.values do |op|
|
107
36
|
expect { img1.composite(img2, 0, 0, op) }.not_to raise_error
|
108
37
|
end
|
109
38
|
end
|
@@ -120,8 +49,8 @@ RSpec.describe Magick::Image, '#composite' do
|
|
120
49
|
|
121
50
|
context 'when given 5 arguments' do
|
122
51
|
it 'works when 2nd argument is gravity and 5th is a composite operator' do
|
123
|
-
|
124
|
-
|
52
|
+
Magick::CompositeOperator.values do |op|
|
53
|
+
Magick::GravityType.values do |grav|
|
125
54
|
expect { img1.composite(img2, grav, 0, 0, op) }.not_to raise_error
|
126
55
|
end
|
127
56
|
end
|
data/test/Draw.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
|
class DrawUT < Test::Unit::TestCase
|
8
8
|
def setup
|
@@ -17,17 +17,15 @@ class DrawUT < Test::Unit::TestCase
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def test_align
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
assert_nothing_raised { @draw.align = Magick::RightAlign }
|
20
|
+
Magick::AlignType.values do |align|
|
21
|
+
assert_nothing_raised { @draw.align = align }
|
22
|
+
end
|
24
23
|
end
|
25
24
|
|
26
25
|
def test_decorate
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
assert_nothing_raised { @draw.decorate = Magick::LineThroughDecoration }
|
26
|
+
Magick::DecorationType.values do |decoration|
|
27
|
+
assert_nothing_raised { @draw.decorate = decoration }
|
28
|
+
end
|
31
29
|
end
|
32
30
|
|
33
31
|
def test_density
|
@@ -72,54 +70,34 @@ class DrawUT < Test::Unit::TestCase
|
|
72
70
|
end
|
73
71
|
|
74
72
|
def test_font_stretch
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
assert_nothing_raised { @draw.font_stretch = Magick::CondensedStretch }
|
79
|
-
assert_nothing_raised { @draw.font_stretch = Magick::SemiCondensedStretch }
|
80
|
-
assert_nothing_raised { @draw.font_stretch = Magick::SemiExpandedStretch }
|
81
|
-
assert_nothing_raised { @draw.font_stretch = Magick::ExpandedStretch }
|
82
|
-
assert_nothing_raised { @draw.font_stretch = Magick::ExtraExpandedStretch }
|
83
|
-
assert_nothing_raised { @draw.font_stretch = Magick::UltraExpandedStretch }
|
84
|
-
assert_nothing_raised { @draw.font_stretch = Magick::AnyStretch }
|
73
|
+
Magick::StretchType.values do |stretch|
|
74
|
+
assert_nothing_raised { @draw.font_stretch = stretch }
|
75
|
+
end
|
85
76
|
|
86
77
|
assert_raise(TypeError) { @draw.font_stretch = 2 }
|
87
78
|
end
|
88
79
|
|
89
80
|
def test_font_style
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
assert_nothing_raised { @draw.font_style = Magick::AnyStyle }
|
81
|
+
Magick::StyleType.values do |style|
|
82
|
+
assert_nothing_raised { @draw.font_style = style }
|
83
|
+
end
|
94
84
|
|
95
85
|
assert_raise(TypeError) { @draw.font_style = 2 }
|
96
86
|
end
|
97
87
|
|
98
88
|
def test_font_weight
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
assert_nothing_raised { @draw.font_weight = Magick::BolderWeight }
|
103
|
-
assert_nothing_raised { @draw.font_weight = Magick::LighterWeight }
|
104
|
-
assert_nothing_raised { @draw.font_weight = 200 }
|
89
|
+
Magick::WeightType.values do |weight|
|
90
|
+
assert_nothing_raised { @draw.font_weight = weight }
|
91
|
+
end
|
105
92
|
|
106
93
|
assert_raise(ArgumentError) { @draw.font_weight = 99 }
|
107
94
|
assert_raise(ArgumentError) { @draw.font_weight = 901 }
|
108
95
|
end
|
109
96
|
|
110
97
|
def test_gravity
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
assert_nothing_raised { @draw.gravity = Magick::NorthGravity }
|
115
|
-
assert_nothing_raised { @draw.gravity = Magick::NorthEastGravity }
|
116
|
-
assert_nothing_raised { @draw.gravity = Magick::WestGravity }
|
117
|
-
assert_nothing_raised { @draw.gravity = Magick::CenterGravity }
|
118
|
-
assert_nothing_raised { @draw.gravity = Magick::EastGravity }
|
119
|
-
assert_nothing_raised { @draw.gravity = Magick::SouthWestGravity }
|
120
|
-
assert_nothing_raised { @draw.gravity = Magick::SouthGravity }
|
121
|
-
assert_nothing_raised { @draw.gravity = Magick::SouthEastGravity }
|
122
|
-
assert_nothing_raised { @draw.gravity = Magick::StaticGravity }
|
98
|
+
Magick::GravityType.values do |gravity|
|
99
|
+
assert_nothing_raised { @draw.gravity = gravity }
|
100
|
+
end
|
123
101
|
|
124
102
|
assert_raise(TypeError) { @draw.gravity = 2 }
|
125
103
|
end
|
@@ -215,6 +193,16 @@ class DrawUT < Test::Unit::TestCase
|
|
215
193
|
assert_raise(NoMethodError) { @draw.annotate('x', 0, 0, 0, 20, 'Hello world') }
|
216
194
|
end
|
217
195
|
|
196
|
+
def test_annotate_stack_buffer_overflow
|
197
|
+
assert_nothing_raised do
|
198
|
+
if 1.size == 8
|
199
|
+
# 64-bit environment can use larger value for Integer and it can causes stack buffer overflow.
|
200
|
+
img = Magick::Image.new(10, 10)
|
201
|
+
@draw.annotate(img, 2**63, 2**63, 2**62, 2**62, 'Hello world')
|
202
|
+
end
|
203
|
+
end
|
204
|
+
end
|
205
|
+
|
218
206
|
def test_dup
|
219
207
|
@draw.path('M110,100 h-75 a75,75 0 1,0 75,-75 z')
|
220
208
|
@draw.taint
|
@@ -231,82 +219,10 @@ class DrawUT < Test::Unit::TestCase
|
|
231
219
|
end
|
232
220
|
|
233
221
|
def test_composite
|
234
|
-
composite_operators = [
|
235
|
-
Magick::AddCompositeOp,
|
236
|
-
Magick::AtopCompositeOp,
|
237
|
-
Magick::BlendCompositeOp,
|
238
|
-
Magick::BlurCompositeOp,
|
239
|
-
Magick::BumpmapCompositeOp,
|
240
|
-
Magick::ChangeMaskCompositeOp,
|
241
|
-
Magick::ClearCompositeOp,
|
242
|
-
Magick::ColorBurnCompositeOp,
|
243
|
-
Magick::ColorDodgeCompositeOp,
|
244
|
-
Magick::ColorizeCompositeOp,
|
245
|
-
Magick::CopyBlackCompositeOp,
|
246
|
-
Magick::CopyBlueCompositeOp,
|
247
|
-
Magick::CopyCompositeOp,
|
248
|
-
Magick::CopyCyanCompositeOp,
|
249
|
-
Magick::CopyGreenCompositeOp,
|
250
|
-
Magick::CopyMagentaCompositeOp,
|
251
|
-
Magick::CopyOpacityCompositeOp,
|
252
|
-
Magick::CopyRedCompositeOp,
|
253
|
-
Magick::CopyYellowCompositeOp,
|
254
|
-
Magick::DarkenCompositeOp,
|
255
|
-
Magick::DarkenIntensityCompositeOp,
|
256
|
-
Magick::DistortCompositeOp,
|
257
|
-
Magick::DivideCompositeOp,
|
258
|
-
Magick::DivideSrcCompositeOp,
|
259
|
-
Magick::DstAtopCompositeOp,
|
260
|
-
Magick::DstCompositeOp,
|
261
|
-
Magick::DstInCompositeOp,
|
262
|
-
Magick::DstOutCompositeOp,
|
263
|
-
Magick::DstOverCompositeOp,
|
264
|
-
Magick::DifferenceCompositeOp,
|
265
|
-
Magick::DisplaceCompositeOp,
|
266
|
-
Magick::DissolveCompositeOp,
|
267
|
-
Magick::ExclusionCompositeOp,
|
268
|
-
Magick::HardLightCompositeOp,
|
269
|
-
Magick::HueCompositeOp,
|
270
|
-
Magick::InCompositeOp,
|
271
|
-
Magick::LightenCompositeOp,
|
272
|
-
Magick::LightenIntensityCompositeOp,
|
273
|
-
Magick::LinearBurnCompositeOp,
|
274
|
-
Magick::LinearDodgeCompositeOp,
|
275
|
-
Magick::LinearLightCompositeOp,
|
276
|
-
Magick::LuminizeCompositeOp,
|
277
|
-
Magick::MathematicsCompositeOp,
|
278
|
-
Magick::MinusCompositeOp,
|
279
|
-
Magick::MinusSrcCompositeOp,
|
280
|
-
Magick::ModulateCompositeOp,
|
281
|
-
Magick::MultiplyCompositeOp,
|
282
|
-
Magick::NoCompositeOp,
|
283
|
-
Magick::OutCompositeOp,
|
284
|
-
Magick::OverCompositeOp,
|
285
|
-
Magick::OverlayCompositeOp,
|
286
|
-
Magick::PegtopLightCompositeOp,
|
287
|
-
Magick::PinLightCompositeOp,
|
288
|
-
Magick::PlusCompositeOp,
|
289
|
-
Magick::ReplaceCompositeOp,
|
290
|
-
Magick::SaturateCompositeOp,
|
291
|
-
Magick::ScreenCompositeOp,
|
292
|
-
Magick::SoftLightCompositeOp,
|
293
|
-
Magick::SrcAtopCompositeOp,
|
294
|
-
Magick::SrcCompositeOp,
|
295
|
-
Magick::SrcInCompositeOp,
|
296
|
-
Magick::SrcOutCompositeOp,
|
297
|
-
Magick::SrcOverCompositeOp,
|
298
|
-
Magick::SubtractCompositeOp,
|
299
|
-
Magick::ThresholdCompositeOp,
|
300
|
-
Magick::UndefinedCompositeOp,
|
301
|
-
Magick::VividLightCompositeOp,
|
302
|
-
Magick::XorCompositeOp
|
303
|
-
]
|
304
|
-
composite_operators << Magick::HardMixCompositeOp if Gem::Version.new('6.8.9') <= Gem::Version.new(IM_VERSION)
|
305
|
-
|
306
222
|
img = Magick::Image.new(10, 10)
|
307
223
|
assert_nothing_raised { @draw.composite(0, 0, 10, 10, img) }
|
308
224
|
|
309
|
-
|
225
|
+
Magick::CompositeOperator.values do |op|
|
310
226
|
assert_nothing_raised { @draw.composite(0, 0, 10, 10, img, op) }
|
311
227
|
end
|
312
228
|
|
@@ -317,7 +233,7 @@ class DrawUT < Test::Unit::TestCase
|
|
317
233
|
assert_raise(TypeError) { @draw.composite(0, 0, 10, 10, img, Magick::CenterAlign) }
|
318
234
|
assert_raise(NoMethodError) { @draw.composite(0, 0, 10, 10, 'image') }
|
319
235
|
assert_raise(ArgumentError) { @draw.composite(0, 0, 10, 10) }
|
320
|
-
assert_raise(ArgumentError) { @draw.composite(0, 0, 10, 10, img, Magick::
|
236
|
+
assert_raise(ArgumentError) { @draw.composite(0, 0, 10, 10, img, Magick::ModulusAddCompositeOp, 'x') }
|
321
237
|
end
|
322
238
|
|
323
239
|
def test_draw
|
@@ -411,4 +327,25 @@ class DrawUT < Test::Unit::TestCase
|
|
411
327
|
assert_instance_of(Magick::Image::DrawOptions, yield_obj)
|
412
328
|
end
|
413
329
|
end
|
330
|
+
|
331
|
+
def test_issue_604
|
332
|
+
points = [0, 0, 1, 1, 2, 2]
|
333
|
+
|
334
|
+
pr = Magick::Draw.new
|
335
|
+
|
336
|
+
pr.define_clip_path('example') do
|
337
|
+
pr.polygon(*points)
|
338
|
+
end
|
339
|
+
|
340
|
+
pr.push
|
341
|
+
pr.clip_path('example')
|
342
|
+
|
343
|
+
composite = Magick::Image.new(10, 10)
|
344
|
+
pr.composite(0, 0, 10, 10, composite)
|
345
|
+
|
346
|
+
pr.pop
|
347
|
+
|
348
|
+
canvas = Magick::Image.new(10, 10)
|
349
|
+
pr.draw(canvas)
|
350
|
+
end
|
414
351
|
end
|
data/test/Enum.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
|
class EnumUT < Test::Unit::TestCase
|
8
8
|
def test_new
|
@@ -73,4 +73,156 @@ class EnumUT < Test::Unit::TestCase
|
|
73
73
|
def test_type_inspect
|
74
74
|
assert_equal('UndefinedAlign=0', Magick::AlignType.values[0].inspect)
|
75
75
|
end
|
76
|
+
|
77
|
+
def test_using_compose_does_not_cause_endless_loop
|
78
|
+
img = Magick::Image.new(10, 10)
|
79
|
+
Magick::CompositeOperator.values do |op|
|
80
|
+
img.compose = op
|
81
|
+
assert_equal(op, img.compose)
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def test_using_class_type_does_not_cause_endless_loop
|
86
|
+
img = Magick::Image.new(1, 1)
|
87
|
+
Magick::ClassType.values do |value|
|
88
|
+
next if value == Magick::UndefinedClass
|
89
|
+
|
90
|
+
img.class_type = value
|
91
|
+
assert_equal(value, img.class_type)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def test_using_colorspace_type_does_not_cause_endless_loop
|
96
|
+
img = Magick::Image.new(1, 1)
|
97
|
+
Magick::ColorspaceType.values do |value|
|
98
|
+
next if value == Magick::SRGBColorspace
|
99
|
+
|
100
|
+
assert_not_equal(value, img.colorspace)
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
def test_using_compression_type_does_not_cause_endless_loop
|
105
|
+
img = Magick::Image.new(1, 1)
|
106
|
+
Magick::CompressionType.values do |value|
|
107
|
+
img.compression = value
|
108
|
+
assert_equal(value, img.compression)
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
def test_using_dispose_type_does_not_cause_endless_loop
|
113
|
+
img = Magick::Image.new(1, 1)
|
114
|
+
Magick::DisposeType.values do |value|
|
115
|
+
img.dispose = value
|
116
|
+
assert_equal(value, img.dispose)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
def test_using_endian_type_does_not_cause_endless_loop
|
121
|
+
img = Magick::Image.new(1, 1)
|
122
|
+
Magick::EndianType.values do |value|
|
123
|
+
img.endian = value
|
124
|
+
assert_equal(value, img.endian)
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
128
|
+
def test_using_filter_does_not_cause_endless_loop
|
129
|
+
img = Magick::Image.new(1, 1)
|
130
|
+
Magick::FilterType.values do |value|
|
131
|
+
img.filter = value
|
132
|
+
assert_equal(value, img.filter)
|
133
|
+
end
|
134
|
+
end
|
135
|
+
|
136
|
+
def test_using_gravity_type_does_not_cause_endless_loop
|
137
|
+
img = Magick::Image.new(1, 1)
|
138
|
+
Magick::GravityType.values do |value|
|
139
|
+
img.gravity = value
|
140
|
+
assert_equal(value, img.gravity)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
def test_using_image_type_does_not_cause_endless_loop
|
145
|
+
info = Magick::Image::Info.new
|
146
|
+
Magick::ImageType.values do |value|
|
147
|
+
info.image_type = value
|
148
|
+
assert_equal(value, info.image_type)
|
149
|
+
end
|
150
|
+
end
|
151
|
+
|
152
|
+
def test_using_orientation_type_does_not_cause_endless_loop
|
153
|
+
info = Magick::Image::Info.new
|
154
|
+
Magick::OrientationType.values do |value|
|
155
|
+
info.orientation = value
|
156
|
+
assert_equal(value, info.orientation)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
def test_using_interlace_type_does_not_cause_endless_loop
|
161
|
+
info = Magick::Image::Info.new
|
162
|
+
Magick::InterlaceType.values do |value|
|
163
|
+
info.interlace = value
|
164
|
+
assert_equal(value, info.interlace)
|
165
|
+
end
|
166
|
+
end
|
167
|
+
|
168
|
+
def test_using_pixel_interpolation_method_does_not_cause_endless_loop
|
169
|
+
img = Magick::Image.new(1, 1)
|
170
|
+
Magick::PixelInterpolateMethod.values do |value|
|
171
|
+
img.pixel_interpolation_method = value
|
172
|
+
assert_equal(value, img.pixel_interpolation_method)
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
def test_using_rendering_intent_does_not_cause_endless_loop
|
177
|
+
img = Magick::Image.new(1, 1)
|
178
|
+
Magick::RenderingIntent.values do |value|
|
179
|
+
img.rendering_intent = value
|
180
|
+
assert_equal(value, img.rendering_intent)
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
def test_using_resolution_type_does_not_cause_endless_loop
|
185
|
+
info = Magick::Image::Info.new
|
186
|
+
Magick::ResolutionType.values do |value|
|
187
|
+
info.units = value
|
188
|
+
assert_equal(value, info.units)
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
def test_using_virtual_pixel_method_does_not_cause_endless_loop
|
193
|
+
img = Magick::Image.new(1, 1)
|
194
|
+
Magick::VirtualPixelMethod.values do |value|
|
195
|
+
img.virtual_pixel_method = value
|
196
|
+
assert_equal(value, img.virtual_pixel_method)
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
def test_storage_type_name
|
201
|
+
img = Magick::Image.new(20, 20)
|
202
|
+
pixels = img.export_pixels(0, 0, 20, 20, 'RGB').pack('D*')
|
203
|
+
|
204
|
+
assert_raise_message(/UndefinedPixel/) do
|
205
|
+
img.import_pixels(0, 0, 20, 20, 'RGB', pixels, Magick::UndefinedPixel)
|
206
|
+
end
|
207
|
+
end
|
208
|
+
|
209
|
+
def test_stretch_type_name
|
210
|
+
Magick::StretchType.values do |stretch|
|
211
|
+
font = Magick::Font.new('Arial', 'font test', 'Arial family', Magick::NormalStyle, stretch, 400, nil, 'test foundry', 'test format')
|
212
|
+
assert_match(/stretch=#{stretch.to_s}/, font.to_s)
|
213
|
+
end
|
214
|
+
|
215
|
+
font = Magick::Font.new('Arial', 'font test', 'Arial family', Magick::NormalStyle, nil, 400, nil, 'test foundry', 'test format')
|
216
|
+
assert_match(/stretch=UndefinedStretch/, font.to_s)
|
217
|
+
end
|
218
|
+
|
219
|
+
def test_style_type_name
|
220
|
+
Magick::StyleType.values do |style|
|
221
|
+
font = Magick::Font.new('Arial', 'font test', 'Arial family', style, Magick::NormalStretch, 400, nil, 'test foundry', 'test format')
|
222
|
+
assert_match(/style=#{style.to_s}/, font.to_s)
|
223
|
+
end
|
224
|
+
|
225
|
+
font = Magick::Font.new('Arial', 'font test', 'Arial family', nil, Magick::NormalStretch, 400, nil, 'test foundry', 'test format')
|
226
|
+
assert_match(/style=UndefinedStyle/, font.to_s)
|
227
|
+
end
|
76
228
|
end
|