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.

Files changed (80) hide show
  1. checksums.yaml +4 -4
  2. data/.appveyor.yml +4 -4
  3. data/.circleci/config.yml +1 -1
  4. data/.gitignore +1 -0
  5. data/.rubocop_todo.yml +6 -0
  6. data/.travis.yml +26 -8
  7. data/CHANGELOG.md +104 -0
  8. data/before_install_linux.sh +19 -10
  9. data/benchmarks/memory/README.md +50 -0
  10. data/benchmarks/memory/image_new.rb +8 -0
  11. data/benchmarks/memory/rmagick.gnuplot +16 -0
  12. data/doc/ex/coalesce.rb +2 -2
  13. data/doc/ex/drawcomp.rb +3 -3
  14. data/doc/ex/get_pixels.rb +1 -1
  15. data/doc/ex/images/Coffee.png +0 -0
  16. data/doc/ex/images/No.png +0 -0
  17. data/doc/ex/images/Snake.png +0 -0
  18. data/doc/ex/implode.rb +2 -2
  19. data/doc/ex/mask.rb +1 -1
  20. data/doc/ex/matte_fill_to_border.rb +1 -1
  21. data/doc/ex/matte_floodfill.rb +1 -1
  22. data/doc/ex/matte_replace.rb +1 -1
  23. data/doc/ex/stegano.rb +1 -1
  24. data/examples/constitute.rb +1 -1
  25. data/examples/crop_with_gravity.rb +1 -1
  26. data/examples/demo.rb +4 -4
  27. data/examples/find_similar_region.rb +1 -1
  28. data/examples/histogram.rb +3 -3
  29. data/examples/identify.rb +46 -46
  30. data/examples/image_opacity.rb +2 -2
  31. data/examples/vignette.rb +3 -3
  32. data/ext/RMagick/extconf.rb +19 -15
  33. data/ext/RMagick/rmagick.c +1 -2
  34. data/ext/RMagick/rmagick.h +59 -30
  35. data/ext/RMagick/rmdraw.c +62 -274
  36. data/ext/RMagick/rmenum.c +121 -665
  37. data/ext/RMagick/rmfill.c +7 -7
  38. data/ext/RMagick/rmilist.c +91 -7
  39. data/ext/RMagick/rmimage.c +568 -379
  40. data/ext/RMagick/rminfo.c +152 -110
  41. data/ext/RMagick/rmkinfo.c +17 -1
  42. data/ext/RMagick/rmmain.c +75 -74
  43. data/ext/RMagick/rmmontage.c +33 -33
  44. data/ext/RMagick/rmpixel.c +75 -14
  45. data/ext/RMagick/rmstruct.c +5 -5
  46. data/ext/RMagick/rmutil.c +3 -13
  47. data/lib/obsolete.rb +66 -0
  48. data/lib/rmagick/version.rb +1 -1
  49. data/lib/rmagick_internal.rb +54 -41
  50. data/spec/rmagick/image/composite_spec.rb +5 -76
  51. data/spec/rmagick/image/properties_spec.rb +1 -1
  52. data/test/Draw.rb +52 -115
  53. data/test/Enum.rb +153 -1
  54. data/test/Fill.rb +1 -1
  55. data/test/Image1.rb +97 -43
  56. data/test/Image2.rb +140 -36
  57. data/test/Image3.rb +110 -120
  58. data/test/ImageList1.rb +46 -11
  59. data/test/ImageList2.rb +11 -21
  60. data/test/Image_attributes.rb +81 -127
  61. data/test/Import_Export.rb +2 -2
  62. data/test/Info.rb +5 -1
  63. data/test/KernelInfo.rb +67 -0
  64. data/test/Magick.rb +17 -35
  65. data/test/Pixel.rb +193 -24
  66. data/test/PolaroidOptions.rb +1 -1
  67. data/test/Preview.rb +3 -35
  68. data/test/Struct.rb +45 -0
  69. data/test/appearance/Montage.rb +26 -0
  70. data/test/appearance/appearance_assertion.rb +13 -0
  71. data/test/appearance/expected/montage_border_color.jpg +0 -0
  72. data/test/lib/Obsolete.rb +30 -0
  73. data/test/lib/internal/Draw.rb +823 -0
  74. data/test/lib/internal/Geometry.rb +98 -0
  75. data/test/lib/internal/Magick.rb +40 -0
  76. data/test/test_all_basic.rb +16 -17
  77. metadata +27 -5
  78. data/doc/ex/images/Coffee.wmf +0 -0
  79. data/doc/ex/images/No.wmf +0 -0
  80. 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
- composite_ops.each do |op|
89
- gravity.each do |grav|
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
- composite_ops.each do |op|
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
- composite_ops.each do |op|
124
- gravity.each do |grav|
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
@@ -1,6 +1,6 @@
1
1
  RSpec.describe Magick::Image, '#properties' do
2
2
  let(:img) { Magick::Image.new(20, 20) }
3
- let(:freeze_error) { RUBY_VERSION[/^1\.9|^2/] ? RuntimeError : TypeError }
3
+ let(:freeze_error) { RuntimeError }
4
4
 
5
5
  before(:each) do
6
6
  img['comment'] = 'str_1'
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'rmagick'
4
4
  require 'test/unit'
5
- require 'test/unit/ui/console/testrunner' unless RUBY_VERSION[/^1\.9|^2/]
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
- assert_nothing_raised { @draw.align = Magick::UndefinedAlign }
21
- assert_nothing_raised { @draw.align = Magick::LeftAlign }
22
- assert_nothing_raised { @draw.align = Magick::CenterAlign }
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
- assert_nothing_raised { @draw.decorate = Magick::NoDecoration }
28
- assert_nothing_raised { @draw.decorate = Magick::UnderlineDecoration }
29
- assert_nothing_raised { @draw.decorate = Magick::OverlineDecoration }
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
- assert_nothing_raised { @draw.font_stretch = Magick::NormalStretch }
76
- assert_nothing_raised { @draw.font_stretch = Magick::UltraCondensedStretch }
77
- assert_nothing_raised { @draw.font_stretch = Magick::ExtraCondensedStretch }
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
- assert_nothing_raised { @draw.font_style = Magick::NormalStyle }
91
- assert_nothing_raised { @draw.font_style = Magick::ItalicStyle }
92
- assert_nothing_raised { @draw.font_style = Magick::ObliqueStyle }
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
- assert_nothing_raised { @draw.font_weight = Magick::AnyWeight }
100
- assert_nothing_raised { @draw.font_weight = Magick::NormalWeight }
101
- assert_nothing_raised { @draw.font_weight = Magick::BoldWeight }
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
- assert_nothing_raised { @draw.gravity = Magick::UndefinedGravity }
112
- assert_nothing_raised { @draw.gravity = Magick::ForgetGravity }
113
- assert_nothing_raised { @draw.gravity = Magick::NorthWestGravity }
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
- composite_operators.each do |op|
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::AddCompositeOp, 'x') }
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
@@ -2,7 +2,7 @@
2
2
 
3
3
  require 'rmagick'
4
4
  require 'test/unit'
5
- require 'test/unit/ui/console/testrunner' unless RUBY_VERSION[/^1\.9|^2/]
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