rmagick 2.13.1 → 2.13.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +21 -0
  3. data/.travis.yml +57 -0
  4. data/CONTRIBUTING.md +22 -0
  5. data/ChangeLog +49 -2
  6. data/Gemfile +7 -0
  7. data/LICENSE +20 -0
  8. data/README.textile +161 -0
  9. data/Rakefile +176 -0
  10. data/before_install_linux.sh +12 -0
  11. data/before_install_osx.sh +2 -0
  12. data/doc/.cvsignore +1 -0
  13. data/doc/comtasks.html +2 -2
  14. data/doc/constants.html +2 -2
  15. data/doc/draw.html +2 -2
  16. data/doc/ex/PreserveAspectRatio.rb +0 -0
  17. data/doc/ex/ViewBox.rb +0 -0
  18. data/doc/ex/adaptive_threshold.rb +0 -0
  19. data/doc/ex/add_noise.rb +0 -0
  20. data/doc/ex/affine.rb +0 -0
  21. data/doc/ex/affine_transform.rb +0 -0
  22. data/doc/ex/arc.rb +0 -0
  23. data/doc/ex/arcpath.rb +0 -0
  24. data/doc/ex/average.rb +0 -0
  25. data/doc/ex/axes.rb +0 -0
  26. data/doc/ex/bilevel_channel.rb +0 -0
  27. data/doc/ex/blur_image.rb +0 -0
  28. data/doc/ex/border.rb +0 -0
  29. data/doc/ex/bounding_box.rb +0 -0
  30. data/doc/ex/cbezier1.rb +0 -0
  31. data/doc/ex/cbezier2.rb +0 -0
  32. data/doc/ex/cbezier3.rb +0 -0
  33. data/doc/ex/cbezier4.rb +0 -0
  34. data/doc/ex/cbezier5.rb +0 -0
  35. data/doc/ex/cbezier6.rb +0 -0
  36. data/doc/ex/channel.rb +0 -0
  37. data/doc/ex/charcoal.rb +0 -0
  38. data/doc/ex/chop.rb +0 -0
  39. data/doc/ex/circle.rb +0 -0
  40. data/doc/ex/clip_path.rb +0 -0
  41. data/doc/ex/coalesce.rb +0 -0
  42. data/doc/ex/color_fill_to_border.rb +0 -0
  43. data/doc/ex/color_floodfill.rb +0 -0
  44. data/doc/ex/color_histogram.rb +0 -0
  45. data/doc/ex/color_reset.rb +0 -0
  46. data/doc/ex/colorize.rb +0 -0
  47. data/doc/ex/colors.rb +0 -0
  48. data/doc/ex/composite.rb +0 -0
  49. data/doc/ex/composite_layers.rb +0 -0
  50. data/doc/ex/contrast.rb +0 -0
  51. data/doc/ex/crop.rb +0 -0
  52. data/doc/ex/cycle_colormap.rb +0 -0
  53. data/doc/ex/drawcomp.rb +0 -0
  54. data/doc/ex/drop_shadow.rb +0 -0
  55. data/doc/ex/edge.rb +0 -0
  56. data/doc/ex/ellipse.rb +0 -0
  57. data/doc/ex/emboss.rb +0 -0
  58. data/doc/ex/enhance.rb +0 -0
  59. data/doc/ex/equalize.rb +0 -0
  60. data/doc/ex/evenodd.rb +0 -0
  61. data/doc/ex/flatten_images.rb +0 -0
  62. data/doc/ex/flip.rb +0 -0
  63. data/doc/ex/flop.rb +0 -0
  64. data/doc/ex/fonts.rb +0 -0
  65. data/doc/ex/frame.rb +0 -0
  66. data/doc/ex/gaussian_blur.rb +0 -0
  67. data/doc/ex/get_pixels.rb +0 -0
  68. data/doc/ex/gradientfill.rb +0 -0
  69. data/doc/ex/grav.rb +0 -0
  70. data/doc/ex/gravity.rb +0 -0
  71. data/doc/ex/hatchfill.rb +0 -0
  72. data/doc/ex/images/image_with_profile.jpg +0 -0
  73. data/doc/ex/images/logo400x83.gif +0 -0
  74. data/doc/ex/implode.rb +0 -0
  75. data/doc/ex/level.rb +0 -0
  76. data/doc/ex/line.rb +0 -0
  77. data/doc/ex/mask.rb +1 -1
  78. data/doc/ex/matte_fill_to_border.rb +0 -0
  79. data/doc/ex/matte_floodfill.rb +0 -0
  80. data/doc/ex/matte_replace.rb +0 -0
  81. data/doc/ex/median_filter.rb +0 -0
  82. data/doc/ex/modulate.rb +0 -0
  83. data/doc/ex/mono.rb +0 -0
  84. data/doc/ex/morph.rb +0 -0
  85. data/doc/ex/mosaic.rb +0 -0
  86. data/doc/ex/motion_blur.rb +0 -0
  87. data/doc/ex/negate.rb +0 -0
  88. data/doc/ex/nested_rvg.rb +0 -0
  89. data/doc/ex/nonzero.rb +0 -0
  90. data/doc/ex/normalize.rb +0 -0
  91. data/doc/ex/oil_paint.rb +0 -0
  92. data/doc/ex/opacity.rb +0 -0
  93. data/doc/ex/ordered_dither.rb +0 -0
  94. data/doc/ex/path.rb +0 -0
  95. data/doc/ex/pattern1.rb +0 -0
  96. data/doc/ex/pattern2.rb +0 -0
  97. data/doc/ex/polygon.rb +0 -0
  98. data/doc/ex/polyline.rb +0 -0
  99. data/doc/ex/preview.rb +0 -0
  100. data/doc/ex/qbezierpath.rb +0 -0
  101. data/doc/ex/quantize-m.rb +0 -0
  102. data/doc/ex/radial_blur.rb +0 -0
  103. data/doc/ex/raise.rb +0 -0
  104. data/doc/ex/rectangle.rb +0 -0
  105. data/doc/ex/reduce_noise.rb +0 -0
  106. data/doc/ex/roll.rb +0 -0
  107. data/doc/ex/rotate.rb +0 -0
  108. data/doc/ex/rotate_f.rb +0 -0
  109. data/doc/ex/roundrect.rb +0 -0
  110. data/doc/ex/rubyname.rb +0 -0
  111. data/doc/ex/rvg_linecap.rb +0 -0
  112. data/doc/ex/rvg_linejoin.rb +0 -0
  113. data/doc/ex/rvg_opacity.rb +0 -0
  114. data/doc/ex/rvg_stroke_dasharray.rb +0 -0
  115. data/doc/ex/segment.rb +0 -0
  116. data/doc/ex/shade.rb +0 -0
  117. data/doc/ex/shave.rb +0 -0
  118. data/doc/ex/shear.rb +0 -0
  119. data/doc/ex/sketch.rb +0 -0
  120. data/doc/ex/skewx.rb +0 -0
  121. data/doc/ex/skewy.rb +0 -0
  122. data/doc/ex/smile.rb +0 -0
  123. data/doc/ex/solarize.rb +0 -0
  124. data/doc/ex/spread.rb +0 -0
  125. data/doc/ex/stegano.rb +0 -0
  126. data/doc/ex/stroke_dasharray.rb +0 -0
  127. data/doc/ex/stroke_fill.rb +0 -0
  128. data/doc/ex/stroke_linecap.rb +0 -0
  129. data/doc/ex/stroke_linejoin.rb +0 -0
  130. data/doc/ex/stroke_width.rb +0 -0
  131. data/doc/ex/swirl.rb +0 -0
  132. data/doc/ex/text.rb +0 -0
  133. data/doc/ex/text_align.rb +0 -0
  134. data/doc/ex/text_antialias.rb +0 -0
  135. data/doc/ex/text_undercolor.rb +0 -0
  136. data/doc/ex/texture_fill_to_border.rb +0 -0
  137. data/doc/ex/texture_floodfill.rb +0 -0
  138. data/doc/ex/texturefill.rb +0 -0
  139. data/doc/ex/threshold.rb +0 -0
  140. data/doc/ex/to_blob.rb +0 -0
  141. data/doc/ex/translate.rb +0 -0
  142. data/doc/ex/transparent.rb +0 -0
  143. data/doc/ex/unsharp_mask.rb +0 -0
  144. data/doc/ex/wave.rb +0 -0
  145. data/doc/ilist.html +2 -2
  146. data/doc/image1.html +2 -2
  147. data/doc/image2.html +2 -2
  148. data/doc/image3.html +2 -2
  149. data/doc/imageattrs.html +2 -2
  150. data/doc/imusage.html +2 -2
  151. data/doc/index.html +3 -3
  152. data/doc/info.html +2 -2
  153. data/doc/magick.html +2 -2
  154. data/doc/optequiv.html +2 -2
  155. data/doc/rvg.html +2 -2
  156. data/doc/rvgclip.html +2 -2
  157. data/doc/rvggroup.html +2 -2
  158. data/doc/rvgimage.html +2 -2
  159. data/doc/rvgpattern.html +2 -2
  160. data/doc/rvgshape.html +2 -2
  161. data/doc/rvgstyle.html +2 -2
  162. data/doc/rvgtext.html +2 -2
  163. data/doc/rvgtspan.html +2 -2
  164. data/doc/rvgtut.html +2 -2
  165. data/doc/rvguse.html +2 -2
  166. data/doc/rvgxform.html +2 -2
  167. data/doc/struct.html +2 -2
  168. data/doc/usage.html +2 -2
  169. data/examples/crop_with_gravity.rb +0 -0
  170. data/examples/demo.rb +0 -0
  171. data/examples/describe.rb +0 -0
  172. data/examples/identify.rb +1 -1
  173. data/examples/rotating_text.rb +0 -0
  174. data/ext/RMagick/extconf.rb +62 -31
  175. data/ext/RMagick/rmagick.c +15 -15
  176. data/ext/RMagick/rmagick.h +9 -7
  177. data/ext/RMagick/rmdraw.c +12 -12
  178. data/ext/RMagick/rmenum.c +2 -2
  179. data/ext/RMagick/rmfill.c +25 -25
  180. data/ext/RMagick/rmilist.c +121 -104
  181. data/ext/RMagick/rmimage.c +743 -548
  182. data/ext/RMagick/rminfo.c +15 -15
  183. data/ext/RMagick/rmmain.c +27 -3
  184. data/ext/RMagick/rmpixel.c +25 -27
  185. data/ext/RMagick/rmstruct.c +1 -1
  186. data/ext/RMagick/rmutil.c +18 -18
  187. data/lib/RMagick.rb +1 -1962
  188. data/lib/rmagick/version.rb +5 -0
  189. data/lib/rmagick.rb +1 -0
  190. data/lib/rmagick_internal.rb +1964 -0
  191. data/rmagick.gemspec +21 -9
  192. data/test/Draw.rb +121 -0
  193. data/test/Image1.rb +763 -0
  194. data/test/Image2.rb +1312 -0
  195. data/test/Image3.rb +1033 -0
  196. data/test/ImageList1.rb +808 -0
  197. data/test/ImageList2.rb +389 -0
  198. data/test/Image_attributes.rb +700 -0
  199. data/test/Import_Export.rb +126 -0
  200. data/test/Info.rb +349 -0
  201. data/test/Magick.rb +324 -0
  202. data/test/Pixel.rb +119 -0
  203. data/test/Preview.rb +62 -0
  204. data/test/cmyk.icm +0 -0
  205. data/test/srgb.icm +0 -0
  206. data/test/test_all_basic.rb +34 -0
  207. data/test/tmpnam_test.rb +50 -0
  208. metadata +395 -352
  209. data/README-Mac-OSX.txt +0 -1
  210. data/README.html +0 -10
  211. data/build_tarball.rake +0 -215
  212. data/ext/RMagick/MANIFEST +0 -358
  213. data/metaconfig +0 -7
  214. data/post-clean.rb +0 -12
  215. data/post-install.rb +0 -50
  216. data/post-setup.rb +0 -254
  217. data/setup.rb +0 -1585
  218. data/uninstall.rb +0 -74
data/test/Magick.rb ADDED
@@ -0,0 +1,324 @@
1
+
2
+ #! /usr/local/bin/ruby -w
3
+
4
+ require 'RMagick'
5
+ require 'test/unit'
6
+ require 'test/unit/ui/console/testrunner' if !RUBY_VERSION[/^1\.9|^2/]
7
+
8
+
9
+ module Magick
10
+ def self._tmpnam_
11
+ @@_tmpnam_
12
+ end
13
+ end
14
+
15
+ class Magick::AlphaChannelType
16
+ def self.enumerators
17
+ @@enumerators
18
+ end
19
+ end
20
+
21
+ class Magick::AlignType
22
+ def self.enumerators
23
+ @@enumerators
24
+ end
25
+ end
26
+
27
+ class Magick::AnchorType
28
+ def self.enumerators
29
+ @@enumerators
30
+ end
31
+ end
32
+
33
+
34
+ class Magick_UT < Test::Unit::TestCase
35
+
36
+ def test_colors
37
+ res = nil
38
+ assert_nothing_raised { res = Magick.colors }
39
+ assert_instance_of(Array, res)
40
+ res.each do |c|
41
+ assert_instance_of(Magick::Color, c)
42
+ assert_instance_of(String, c.name)
43
+ assert_instance_of(Magick::ComplianceType, c.compliance)
44
+ assert_instance_of(Magick::Pixel, c.color)
45
+ end
46
+ Magick.colors {|c| assert_instance_of(Magick::Color, c) }
47
+ end
48
+
49
+ # Test a few of the @@enumerator arrays in the Enum subclasses.
50
+ # No need to test all of them.
51
+ def test_enumerators
52
+ ary = nil
53
+ assert_nothing_raised do
54
+ ary = Magick::AlphaChannelType.enumerators
55
+ end
56
+ assert_instance_of(Array, ary)
57
+ assert_equal(11, ary.length)
58
+
59
+ assert_nothing_raised do
60
+ ary = Magick::AlignType.enumerators
61
+ end
62
+ assert_instance_of(Array, ary)
63
+ assert_equal(4, ary.length)
64
+
65
+ assert_nothing_raised do
66
+ ary = Magick::AnchorType.enumerators
67
+ end
68
+ assert_instance_of(Array, ary)
69
+ assert_equal(3, ary.length)
70
+ end
71
+
72
+ def test_features
73
+ res = nil
74
+ assert_nothing_raised { res = Magick::Magick_features }
75
+ assert_instance_of(String, res)
76
+ end
77
+
78
+ def test_fonts
79
+ res = nil
80
+ assert_nothing_raised { res = Magick.fonts }
81
+ assert_instance_of(Array, res)
82
+ res.each do |f|
83
+ assert_instance_of(Magick::Font, f)
84
+ assert_instance_of(String, f.name)
85
+ assert_instance_of(String, f.description) unless f.description.nil?
86
+ assert_instance_of(String, f.family)
87
+ assert_instance_of(Magick::StyleType, f.style)
88
+ assert_instance_of(Magick::StretchType, f.stretch)
89
+ assert_instance_of(Fixnum, f.weight)
90
+ assert_instance_of(String, f.encoding) unless f.encoding.nil?
91
+ assert_instance_of(String, f.foundry) unless f.foundry.nil?
92
+ assert_instance_of(String, f.format) unless f.format.nil?
93
+ end
94
+ Magick.fonts {|f| assert_instance_of(Magick::Font, f) }
95
+ end
96
+
97
+ def test_formats
98
+ res = nil
99
+ assert_nothing_raised { res = Magick.formats }
100
+ assert_instance_of(Hash, res)
101
+ res.each do |f, v|
102
+ assert_instance_of(String, f)
103
+ assert_instance_of(String, v)
104
+ end
105
+ Magick.formats.each { |f, v| assert_not_nil(f); assert_not_nil(v) }
106
+ end
107
+
108
+ def test_geometry
109
+ g, gs, g2, gs2 = nil, nil, nil, nil
110
+ assert_nothing_raised { g = Magick::Geometry.new() }
111
+ assert_nothing_raised { gs = g.to_s }
112
+ assert_equal("", gs)
113
+
114
+ g = Magick::Geometry.new(40)
115
+ gs = g.to_s
116
+ assert_equal("40x", gs)
117
+
118
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
119
+ gs2 = g2.to_s
120
+ assert_equal(gs, gs2)
121
+
122
+ g = Magick::Geometry.new(40, 50)
123
+ gs = g.to_s
124
+ assert_equal("40x50", gs)
125
+
126
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
127
+ gs2 = g2.to_s
128
+ assert_equal(gs, gs2)
129
+
130
+ g = Magick::Geometry.new(40, 50, 10)
131
+ gs = g.to_s
132
+ assert_equal("40x50+10+0", gs)
133
+
134
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
135
+ gs2 = g2.to_s
136
+ assert_equal(gs, gs2)
137
+
138
+ g = Magick::Geometry.new(40, 50, 10, -15)
139
+ gs = g.to_s
140
+ assert_equal("40x50+10-15", gs)
141
+
142
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
143
+ gs2 = g2.to_s
144
+ assert_equal(gs, gs2)
145
+
146
+ g = Magick::Geometry.new(40, 50, 0, 0, Magick::AreaGeometry)
147
+ gs = g.to_s
148
+ assert_equal("40x50@", gs)
149
+
150
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
151
+ gs2 = g2.to_s
152
+ assert_equal(gs, gs2)
153
+
154
+ g = Magick::Geometry.new(40, 50, 0, 0, Magick::AspectGeometry)
155
+ gs = g.to_s
156
+ assert_equal("40x50!", gs)
157
+
158
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
159
+ gs2 = g2.to_s
160
+ assert_equal(gs, gs2)
161
+
162
+ g = Magick::Geometry.new(40, 50, 0, 0, Magick::LessGeometry)
163
+ gs = g.to_s
164
+ assert_equal("40x50<", gs)
165
+
166
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
167
+ gs2 = g2.to_s
168
+ assert_equal(gs, gs2)
169
+
170
+ g = Magick::Geometry.new(40, 50, 0, 0, Magick::GreaterGeometry)
171
+ gs = g.to_s
172
+ assert_equal("40x50>", gs)
173
+
174
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
175
+ gs2 = g2.to_s
176
+ assert_equal(gs, gs2)
177
+
178
+ g = Magick::Geometry.new(40, 50, 0, 0, Magick::MinimumGeometry)
179
+ gs = g.to_s
180
+ assert_equal("40x50^", gs)
181
+
182
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
183
+ gs2 = g2.to_s
184
+ assert_equal(gs, gs2)
185
+
186
+ g = Magick::Geometry.new(40, 0, 0, 0, Magick::PercentGeometry)
187
+ gs = g.to_s
188
+ assert_equal("40%", gs)
189
+
190
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
191
+ gs2 = g2.to_s
192
+ assert_equal(gs, gs2)
193
+
194
+ g = Magick::Geometry.new(40, 60, 0, 0, Magick::PercentGeometry)
195
+ gs = g.to_s
196
+ assert_equal("40%x60%", gs)
197
+
198
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
199
+ gs2 = g2.to_s
200
+ assert_equal(gs, gs2)
201
+
202
+ g = Magick::Geometry.new(40, 60, 10, 0, Magick::PercentGeometry)
203
+ gs = g.to_s
204
+ assert_equal("40%x60%+10+0", gs)
205
+
206
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
207
+ gs2 = g2.to_s
208
+ assert_equal(gs, gs2)
209
+
210
+ g = Magick::Geometry.new(40, 60, 10, 20, Magick::PercentGeometry)
211
+ gs = g.to_s
212
+ assert_equal("40%x60%+10+20", gs)
213
+
214
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
215
+ gs2 = g2.to_s
216
+ assert_equal(gs, gs2)
217
+
218
+ g = Magick::Geometry.new(40.5, 60.75)
219
+ gs = g.to_s
220
+ assert_equal("40.50x60.75", gs)
221
+
222
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
223
+ gs2 = g2.to_s
224
+ assert_equal(gs, gs2)
225
+
226
+ g = Magick::Geometry.new(40.5, 60.75, 0, 0, Magick::PercentGeometry)
227
+ gs = g.to_s
228
+ assert_equal("40.50%x60.75%", gs)
229
+
230
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
231
+ gs2 = g2.to_s
232
+ assert_equal(gs, gs2)
233
+
234
+ g = Magick::Geometry.new(0, 0, 10, 20)
235
+ gs = g.to_s
236
+ assert_equal("+10+20", gs)
237
+
238
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
239
+ gs2 = g2.to_s
240
+ assert_equal(gs, gs2)
241
+
242
+ g = Magick::Geometry.new(0, 0, 10)
243
+ gs = g.to_s
244
+ assert_equal("+10+0", gs)
245
+
246
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
247
+ gs2 = g2.to_s
248
+ assert_equal(gs, gs2)
249
+
250
+ # assert behavior with empty string argument
251
+ assert_nothing_raised { g = Magick::Geometry.from_s("") }
252
+ assert_equal("", g.to_s)
253
+
254
+ assert_raise(ArgumentError) { Magick::Geometry.new(Magick::AreaGeometry) }
255
+ assert_raise(ArgumentError) { Magick::Geometry.new(40, Magick::AreaGeometry) }
256
+ assert_raise(ArgumentError) { Magick::Geometry.new(40, 20, Magick::AreaGeometry) }
257
+ assert_raise(ArgumentError) { Magick::Geometry.new(40, 20, 10, Magick::AreaGeometry) }
258
+
259
+ end
260
+
261
+ def test_set_log_event_mask
262
+ assert_nothing_raised { Magick.set_log_event_mask("Module,Coder") }
263
+ end
264
+
265
+ def test_set_log_format
266
+ assert_nothing_raised { Magick.set_log_format("format %d%e%f") }
267
+ end
268
+
269
+ def test_limit_resources
270
+ cur = new = nil
271
+
272
+ assert_nothing_raised {cur = Magick::limit_resource(:memory, 500)}
273
+ assert_kind_of(Integer, cur)
274
+ assert(cur > 1024 ** 2)
275
+ assert_nothing_raised {new = Magick::limit_resource("memory")}
276
+ assert_equal(500, new)
277
+ Magick::limit_resource(:memory, cur)
278
+
279
+ assert_nothing_raised {cur = Magick::limit_resource(:map, 3500)}
280
+ assert_kind_of(Integer, cur)
281
+ assert(cur > 1024 ** 2)
282
+ assert_nothing_raised {new = Magick::limit_resource("map")}
283
+ assert_equal(3500, new)
284
+ Magick::limit_resource(:map, cur)
285
+
286
+ assert_nothing_raised {cur = Magick::limit_resource(:disk, 3*1024*1024*1024)}
287
+ assert_kind_of(Integer, cur)
288
+ assert(cur > 1024 ** 2)
289
+ assert_nothing_raised {new = Magick::limit_resource("disk")}
290
+ assert_equal(3221225472, new)
291
+ Magick::limit_resource(:disk, cur)
292
+
293
+ assert_nothing_raised {cur = Magick::limit_resource(:file, 500)}
294
+ assert_kind_of(Integer, cur)
295
+ assert(cur > 512)
296
+ assert_nothing_raised {new = Magick::limit_resource("file")}
297
+ assert_equal(500, new)
298
+ Magick::limit_resource(:file, cur)
299
+
300
+ assert_raise(ArgumentError) { Magick::limit_resource(:xxx) }
301
+ assert_raise(ArgumentError) { Magick::limit_resource("xxx") }
302
+ assert_raise(ArgumentError) { Magick::limit_resource("map", 3500, 2) }
303
+ assert_raise(ArgumentError) { Magick::limit_resource() }
304
+ end
305
+
306
+ def test_trace_proc
307
+ Magick.trace_proc = lambda do |which, description, id, method|
308
+ assert(which == :c)
309
+ assert_instance_of(String, description)
310
+ assert_instance_of(String, id)
311
+ assert_equal(:initialize, method)
312
+ end
313
+ begin
314
+ img = Magick::Image.new(20,20)
315
+ ensure
316
+ Magick.trace_proc = nil
317
+ end
318
+ end
319
+ end
320
+
321
+ if __FILE__ == $0
322
+ Test::Unit::UI::Console::TestRunner.run(Magick_UT) if !RUBY_VERSION[/^1\.9|^2/]
323
+ end
324
+
data/test/Pixel.rb ADDED
@@ -0,0 +1,119 @@
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
+
7
+
8
+ class Pixel_UT < Test::Unit::TestCase
9
+
10
+ def setup
11
+ @pixel = Magick::Pixel.from_color('brown')
12
+ end
13
+
14
+ def test_hash
15
+ hash = nil
16
+ assert_nothing_raised { hash = @pixel.hash}
17
+ assert_not_nil(hash)
18
+ assert_equal(1385501952, hash)
19
+
20
+ p = Magick::Pixel.new
21
+ assert_equal(0, p.hash)
22
+
23
+ p = Magick::Pixel.from_color('red')
24
+ assert_equal(2139095040, p.hash)
25
+
26
+ # Pixel.hash sacrifices the last bit of the opacity channel
27
+ p = Magick::Pixel.new(0, 0, 0, 72)
28
+ p2 = Magick::Pixel.new(0, 0, 0, 73)
29
+ assert_not_equal(p, p2)
30
+ assert_equal(p.hash, p2.hash)
31
+ end
32
+
33
+ def test_eql?
34
+ p = @pixel
35
+ assert(@pixel.eql?(p))
36
+ p = Magick::Pixel.new
37
+ assert(!@pixel.eql?(p))
38
+ end
39
+
40
+ def test_fcmp
41
+ red = Magick::Pixel.from_color('red')
42
+ blue = Magick::Pixel.from_color('blue')
43
+ assert_nothing_raised { red.fcmp(red) }
44
+ assert(red.fcmp(red))
45
+ assert(! red.fcmp(blue) )
46
+
47
+ assert_nothing_raised { red.fcmp(blue, 10) }
48
+ assert_nothing_raised { red.fcmp(blue, 10, Magick::RGBColorspace) }
49
+ assert_raises(TypeError) { red.fcmp(blue, 'x') }
50
+ assert_raises(TypeError) { red.fcmp(blue, 10, 'x') }
51
+ end
52
+
53
+ def test_from_hsla
54
+ assert_nothing_raised { Magick::Pixel.from_hsla(127, 50, 50) }
55
+ assert_nothing_raised { Magick::Pixel.from_hsla(127, 50, 50, 0) }
56
+ assert_nothing_raised { Magick::Pixel.from_hsla(127, "50%", 50, 0) }
57
+ assert_nothing_raised { Magick::Pixel.from_hsla("10%", "50%", 50, 0) }
58
+ assert_raise(TypeError) { Magick::Pixel.from_hsla([], 50, 50, 0) }
59
+ assert_raise(TypeError) { Magick::Pixel.from_hsla(127, [], 50, 0) }
60
+ assert_raise(TypeError) { Magick::Pixel.from_hsla(127, 50, [], 0) }
61
+ assert_raise(TypeError) { Magick::Pixel.from_hsla(127, 50, 50, []) }
62
+ assert_nothing_raised { @pixel.to_hsla }
63
+
64
+ 18.times do |h|
65
+ 25.times do |s|
66
+ 25.times do |l|
67
+ 5.times do |a|
68
+ args = [20*h, s+25, l+25, a/5.0]
69
+ px = Magick::Pixel.from_hsla(*args)
70
+ hsla = px.to_hsla()
71
+ #puts "[#{args.join(', ')}] = [#{hsla.join(', ')}]"
72
+ # Handle cases where the result is very near 360
73
+ #hsla[0] = ((hsla[0] + 0.005) % 360.0) - 0.005
74
+ #hsla[1] = ((hsla[1] + 0.005) % 360.0) - 0.005
75
+ #hsla[2] = ((hsla[2] + 0.005) % 360.0) - 0.005
76
+ assert_in_delta(args[0], hsla[0], 0.25, "expected #{args.inspect} got #{hsla.inspect}")
77
+ assert_in_delta(args[1], hsla[1], 0.25, "expected #{args.inspect} got #{hsla.inspect}")
78
+ assert_in_delta(args[2], hsla[2], 0.25, "expected #{args.inspect} got #{hsla.inspect}")
79
+ assert_in_delta(args[3], hsla[3], 0.005, "expected #{args.inspect} got #{hsla.inspect}")
80
+ end
81
+ end
82
+ end
83
+ end
84
+
85
+ # test percentages
86
+ args = ["20%","20%","20%","20%"]
87
+ args2 = [360.0/5,255.0/5,255.0/5,1.0/5]
88
+ px = Magick::Pixel.from_hsla(*args)
89
+ hsla = px.to_hsla
90
+ px2 = Magick::Pixel.from_hsla(*args2)
91
+ hsla2 = px2.to_hsla
92
+
93
+ assert_in_delta(hsla[0], hsla2[0], 0.25, "#{hsla.inspect} != #{hsla2.inspect} with args: #{args.inspect} and #{args2.inspect}")
94
+ assert_in_delta(hsla[1], hsla2[1], 0.25, "#{hsla.inspect} != #{hsla2.inspect} with args: #{args.inspect} and #{args2.inspect}")
95
+ assert_in_delta(hsla[2], hsla2[2], 0.25, "#{hsla.inspect} != #{hsla2.inspect} with args: #{args.inspect} and #{args2.inspect}")
96
+ assert_in_delta(hsla[3], hsla2[3], 0.005, "#{hsla.inspect} != #{hsla2.inspect} with args: #{args.inspect} and #{args2.inspect}")
97
+ end
98
+
99
+ def test_to_color
100
+ assert_nothing_raised { @pixel.to_color(Magick::AllCompliance) }
101
+ assert_nothing_raised { @pixel.to_color(Magick::SVGCompliance) }
102
+ assert_nothing_raised { @pixel.to_color(Magick::X11Compliance) }
103
+ assert_nothing_raised { @pixel.to_color(Magick::XPMCompliance) }
104
+ assert_nothing_raised { @pixel.to_color(Magick::AllCompliance, true) }
105
+ assert_nothing_raised { @pixel.to_color(Magick::AllCompliance, false) }
106
+ assert_nothing_raised { @pixel.to_color(Magick::AllCompliance, false, 8) }
107
+ assert_nothing_raised { @pixel.to_color(Magick::AllCompliance, false, 16) }
108
+ # test "hex" format
109
+ assert_nothing_raised { @pixel.to_color(Magick::AllCompliance, false, 8, true) }
110
+ assert_nothing_raised { @pixel.to_color(Magick::AllCompliance, false, 16, true) }
111
+
112
+ assert_equal("#A52A2A", @pixel.to_color(Magick::AllCompliance, false, 8, true))
113
+ assert_equal("#A5A52A2A2A2A", @pixel.to_color(Magick::AllCompliance, false, 16, true))
114
+
115
+ assert_raise(ArgumentError) { @pixel.to_color(Magick::AllCompliance, false, 32) }
116
+ assert_raise(TypeError) { @pixel.to_color(1) }
117
+ end
118
+
119
+ end
data/test/Preview.rb ADDED
@@ -0,0 +1,62 @@
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
+
7
+
8
+ class Preview_UT < Test::Unit::TestCase
9
+
10
+ def test_preview
11
+ preview_types = [
12
+ Magick::RotatePreview,
13
+ Magick::ShearPreview,
14
+ Magick::RollPreview,
15
+ Magick::HuePreview,
16
+ Magick::SaturationPreview,
17
+ Magick::BrightnessPreview,
18
+ Magick::GammaPreview,
19
+ Magick::SpiffPreview,
20
+ Magick::DullPreview,
21
+ Magick::GrayscalePreview,
22
+ Magick::QuantizePreview,
23
+ Magick::DespecklePreview,
24
+ Magick::ReduceNoisePreview,
25
+ Magick::AddNoisePreview,
26
+ Magick::SharpenPreview,
27
+ Magick::BlurPreview,
28
+ Magick::ThresholdPreview,
29
+ Magick::EdgeDetectPreview,
30
+ Magick::SpreadPreview,
31
+ Magick::SolarizePreview,
32
+ Magick::ShadePreview,
33
+ Magick::RaisePreview,
34
+ Magick::SegmentPreview,
35
+ Magick::SwirlPreview,
36
+ Magick::ImplodePreview,
37
+ Magick::WavePreview,
38
+ Magick::OilPaintPreview,
39
+ Magick::CharcoalDrawingPreview,
40
+ Magick::JPEGPreview ]
41
+
42
+ hat = Magick::Image.read(IMAGES_DIR+'/Flower_Hat.jpg').first
43
+ assert_nothing_raised do
44
+ prev = hat.preview(Magick::RotatePreview)
45
+ assert_instance_of(Magick::Image, prev)
46
+ end
47
+ puts "\n"
48
+ preview_types.each do |type|
49
+ puts "testing #{type.to_s}..."
50
+ assert_nothing_raised { hat.preview(type) }
51
+ end
52
+ assert_raise(TypeError) { hat.preview(2) }
53
+ end
54
+
55
+ end
56
+
57
+
58
+ if __FILE__ == $0
59
+ IMAGES_DIR = '../doc/ex/images'
60
+ Test::Unit::UI::Console::TestRunner.run(Preview_UT) if !RUBY_VERSION[/^1\.9|^2/]
61
+ end
62
+
data/test/cmyk.icm ADDED
Binary file
data/test/srgb.icm ADDED
Binary file
@@ -0,0 +1,34 @@
1
+ #! /usr/local/bin/ruby -w
2
+ require 'RMagick'
3
+ require 'test/unit'
4
+ require 'test/unit/ui/console/testrunner' if !RUBY_VERSION[/^1\.9|^2/]
5
+
6
+ puts RUBY_VERSION
7
+ puts RUBY_VERSION.class
8
+
9
+ root_dir = File.expand_path("../..", __FILE__)
10
+ $LOAD_PATH.push(root_dir)
11
+
12
+ IMAGES_DIR = File.join(root_dir, 'doc/ex/images')
13
+ FILES = Dir[IMAGES_DIR+'/Button_*.gif'].sort
14
+ FLOWER_HAT = IMAGES_DIR+'/Flower_Hat.jpg'
15
+ IMAGE_WITH_PROFILE = IMAGES_DIR+'/image_with_profile.jpg'
16
+
17
+ Magick::Magick_version =~ /ImageMagick (\d+\.\d+\.\d+)-(\d+) /
18
+ abort "Unable to get ImageMagick version" unless $1 && $2
19
+
20
+ IM_VERSION = Gem::Version.new($1)
21
+ IM_REVISION = Gem::Version.new($2)
22
+
23
+ require 'Image1.rb'
24
+ require 'Image2.rb'
25
+ require 'Image3.rb'
26
+ require 'ImageList1.rb'
27
+ require 'ImageList2.rb'
28
+ require 'Image_attributes.rb'
29
+ require 'Import_Export.rb'
30
+ require 'Pixel.rb'
31
+ require 'Preview.rb'
32
+ require 'Info.rb'
33
+ require 'Magick.rb'
34
+ require 'Draw.rb'
@@ -0,0 +1,50 @@
1
+ require 'minitest/autorun'
2
+ require 'rmagick'
3
+
4
+ class TmpnamTest < Minitest::Test
5
+ # test the @@_tmpnam_ class variable
6
+ # the count is incremented by Image::Info#texture=,
7
+ # ImageList::Montage#texture=, and Draw.composite
8
+ def test_tmpnam
9
+ tmpfiles = Dir[ENV["HOME"] + "/tmp/magick*"].length
10
+
11
+ texture = Magick::Image.read("granite:") { self.size = "20x20" }.first
12
+ info = Magick::Image::Info.new
13
+
14
+ # does not exist at first
15
+ assert_raise(NameError) { x = Magick._tmpnam_ }
16
+
17
+ info.texture = texture
18
+
19
+ # now it exists
20
+ assert_nothing_raised { x = Magick._tmpnam_ }
21
+ assert_equal(1, Magick._tmpnam_)
22
+
23
+ info.texture = texture
24
+ assert_equal(2, Magick._tmpnam_)
25
+
26
+ mon = Magick::ImageList::Montage.new
27
+ mon.texture = texture
28
+ assert_equal(3, Magick._tmpnam_)
29
+
30
+ mon.texture = texture
31
+ assert_equal(4, Magick._tmpnam_)
32
+
33
+ gc = Magick::Draw.new
34
+ gc.composite(0, 0, 20, 20, texture)
35
+ assert_equal(5, Magick._tmpnam_)
36
+
37
+ gc.composite(0, 0, 20, 20, texture)
38
+ assert_equal(6, Magick._tmpnam_)
39
+
40
+ tmpfiles2 = Dir[ENV["HOME"] + "/tmp/magick*"].length
41
+
42
+ # The 2nd montage texture deletes the first.
43
+ # The 2nd info texture deletes the first.
44
+ # Both composite images are still alive.
45
+ # Therefore only 4 tmp files are left.
46
+ #assert_equal(tmpfiles+4, tmpfiles2)
47
+ # 6.4.1-5 - only 1 tmpfile?
48
+ assert_equal(tmpfiles, tmpfiles2)
49
+ end
50
+ end