rmagick-windows 2.16.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (393) hide show
  1. checksums.yaml +7 -0
  2. data/.editorconfig +14 -0
  3. data/.gitignore +23 -0
  4. data/.hound.yml +2 -0
  5. data/.rspec +1 -0
  6. data/.rubocop.yml +340 -0
  7. data/.simplecov +27 -0
  8. data/.travis.yml +60 -0
  9. data/CHANGELOG.md +915 -0
  10. data/CODE_OF_CONDUCT.md +13 -0
  11. data/CONTRIBUTING.md +50 -0
  12. data/Doxyfile +1514 -0
  13. data/Gemfile +10 -0
  14. data/LICENSE +20 -0
  15. data/README.textile +257 -0
  16. data/Rakefile +188 -0
  17. data/before_install_linux.sh +32 -0
  18. data/before_install_osx.sh +2 -0
  19. data/deprecated/RMagick.rb +6 -0
  20. data/doc/.cvsignore +1 -0
  21. data/doc/comtasks.html +287 -0
  22. data/doc/constants.html +1581 -0
  23. data/doc/css/doc.css +299 -0
  24. data/doc/css/popup.css +34 -0
  25. data/doc/css/ref.css +67 -0
  26. data/doc/draw.html +3272 -0
  27. data/doc/ex/InitialCoords.rb +22 -0
  28. data/doc/ex/NewCoordSys.rb +30 -0
  29. data/doc/ex/OrigCoordSys.rb +16 -0
  30. data/doc/ex/PreserveAspectRatio.rb +204 -0
  31. data/doc/ex/RotateScale.rb +36 -0
  32. data/doc/ex/Skew.rb +38 -0
  33. data/doc/ex/Use01.rb +15 -0
  34. data/doc/ex/Use02.rb +20 -0
  35. data/doc/ex/Use03.rb +16 -0
  36. data/doc/ex/ViewBox.rb +31 -0
  37. data/doc/ex/adaptive_threshold.rb +9 -0
  38. data/doc/ex/add_noise.rb +16 -0
  39. data/doc/ex/affine.rb +48 -0
  40. data/doc/ex/affine_transform.rb +20 -0
  41. data/doc/ex/arc.rb +49 -0
  42. data/doc/ex/arcpath.rb +32 -0
  43. data/doc/ex/arcs01.rb +28 -0
  44. data/doc/ex/arcs02.rb +59 -0
  45. data/doc/ex/average.rb +15 -0
  46. data/doc/ex/axes.rb +64 -0
  47. data/doc/ex/baseline_shift01.rb +17 -0
  48. data/doc/ex/bilevel_channel.rb +8 -0
  49. data/doc/ex/blur_image.rb +12 -0
  50. data/doc/ex/border.rb +10 -0
  51. data/doc/ex/bounding_box.rb +42 -0
  52. data/doc/ex/cbezier1.rb +41 -0
  53. data/doc/ex/cbezier2.rb +41 -0
  54. data/doc/ex/cbezier3.rb +41 -0
  55. data/doc/ex/cbezier4.rb +42 -0
  56. data/doc/ex/cbezier5.rb +42 -0
  57. data/doc/ex/cbezier6.rb +53 -0
  58. data/doc/ex/channel.rb +25 -0
  59. data/doc/ex/charcoal.rb +12 -0
  60. data/doc/ex/chop.rb +29 -0
  61. data/doc/ex/circle.rb +33 -0
  62. data/doc/ex/circle01.rb +16 -0
  63. data/doc/ex/clip_path.rb +60 -0
  64. data/doc/ex/coalesce.rb +57 -0
  65. data/doc/ex/color_fill_to_border.rb +29 -0
  66. data/doc/ex/color_floodfill.rb +28 -0
  67. data/doc/ex/color_histogram.rb +47 -0
  68. data/doc/ex/color_reset.rb +11 -0
  69. data/doc/ex/colorize.rb +16 -0
  70. data/doc/ex/colors.rb +64 -0
  71. data/doc/ex/compose_mask.rb +22 -0
  72. data/doc/ex/composite.rb +133 -0
  73. data/doc/ex/composite_layers.rb +53 -0
  74. data/doc/ex/composite_tiled.rb +21 -0
  75. data/doc/ex/contrast.rb +36 -0
  76. data/doc/ex/crop.rb +31 -0
  77. data/doc/ex/crop_with_gravity.rb +42 -0
  78. data/doc/ex/cubic01.rb +43 -0
  79. data/doc/ex/cubic02.rb +91 -0
  80. data/doc/ex/cycle_colormap.rb +21 -0
  81. data/doc/ex/dissolve.rb +12 -0
  82. data/doc/ex/drawcomp.rb +42 -0
  83. data/doc/ex/drop_shadow.rb +60 -0
  84. data/doc/ex/edge.rb +11 -0
  85. data/doc/ex/ellipse.rb +45 -0
  86. data/doc/ex/ellipse01.rb +21 -0
  87. data/doc/ex/emboss.rb +11 -0
  88. data/doc/ex/enhance.rb +28 -0
  89. data/doc/ex/equalize.rb +11 -0
  90. data/doc/ex/evenodd.rb +42 -0
  91. data/doc/ex/fill_pattern.rb +23 -0
  92. data/doc/ex/flatten_images.rb +36 -0
  93. data/doc/ex/flip.rb +11 -0
  94. data/doc/ex/flop.rb +11 -0
  95. data/doc/ex/font_styles.rb +32 -0
  96. data/doc/ex/fonts.rb +20 -0
  97. data/doc/ex/frame.rb +12 -0
  98. data/doc/ex/gaussian_blur.rb +11 -0
  99. data/doc/ex/get_multiline_type_metrics.rb +41 -0
  100. data/doc/ex/get_pixels.rb +47 -0
  101. data/doc/ex/get_type_metrics.rb +141 -0
  102. data/doc/ex/gradientfill.rb +27 -0
  103. data/doc/ex/grav.rb +45 -0
  104. data/doc/ex/gravity.rb +80 -0
  105. data/doc/ex/group.rb +26 -0
  106. data/doc/ex/hatchfill.rb +27 -0
  107. data/doc/ex/image.rb +44 -0
  108. data/doc/ex/images/Apple.miff +0 -0
  109. data/doc/ex/images/Ballerina.jpg +0 -0
  110. data/doc/ex/images/Ballerina3.jpg +0 -0
  111. data/doc/ex/images/Button_0.gif +0 -0
  112. data/doc/ex/images/Button_1.gif +0 -0
  113. data/doc/ex/images/Button_2.gif +0 -0
  114. data/doc/ex/images/Button_3.gif +0 -0
  115. data/doc/ex/images/Button_4.gif +0 -0
  116. data/doc/ex/images/Button_5.gif +0 -0
  117. data/doc/ex/images/Button_6.gif +0 -0
  118. data/doc/ex/images/Button_7.gif +0 -0
  119. data/doc/ex/images/Button_8.gif +0 -0
  120. data/doc/ex/images/Button_9.gif +0 -0
  121. data/doc/ex/images/Button_A.gif +0 -0
  122. data/doc/ex/images/Button_B.gif +0 -0
  123. data/doc/ex/images/Button_C.gif +0 -0
  124. data/doc/ex/images/Button_D.gif +0 -0
  125. data/doc/ex/images/Button_E.gif +0 -0
  126. data/doc/ex/images/Button_F.gif +0 -0
  127. data/doc/ex/images/Button_G.gif +0 -0
  128. data/doc/ex/images/Button_H.gif +0 -0
  129. data/doc/ex/images/Button_I.gif +0 -0
  130. data/doc/ex/images/Button_J.gif +0 -0
  131. data/doc/ex/images/Button_K.gif +0 -0
  132. data/doc/ex/images/Button_L.gif +0 -0
  133. data/doc/ex/images/Button_M.gif +0 -0
  134. data/doc/ex/images/Button_N.gif +0 -0
  135. data/doc/ex/images/Button_O.gif +0 -0
  136. data/doc/ex/images/Button_P.gif +0 -0
  137. data/doc/ex/images/Button_Q.gif +0 -0
  138. data/doc/ex/images/Button_R.gif +0 -0
  139. data/doc/ex/images/Button_S.gif +0 -0
  140. data/doc/ex/images/Button_T.gif +0 -0
  141. data/doc/ex/images/Button_U.gif +0 -0
  142. data/doc/ex/images/Button_V.gif +0 -0
  143. data/doc/ex/images/Button_W.gif +0 -0
  144. data/doc/ex/images/Button_X.gif +0 -0
  145. data/doc/ex/images/Button_Y.gif +0 -0
  146. data/doc/ex/images/Button_Z.gif +0 -0
  147. data/doc/ex/images/Cheetah.jpg +0 -0
  148. data/doc/ex/images/Coffee.wmf +0 -0
  149. data/doc/ex/images/Flower_Hat.jpg +0 -0
  150. data/doc/ex/images/Gold_Statue.jpg +0 -0
  151. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  152. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  153. data/doc/ex/images/Leaf.miff +0 -0
  154. data/doc/ex/images/No.wmf +0 -0
  155. data/doc/ex/images/Polynesia.jpg +0 -0
  156. data/doc/ex/images/Red_Rocks.jpg +0 -0
  157. data/doc/ex/images/Rocks_On_Beach.miff +0 -0
  158. data/doc/ex/images/Shorts.jpg +0 -0
  159. data/doc/ex/images/Snake.wmf +0 -0
  160. data/doc/ex/images/Violin.jpg +0 -0
  161. data/doc/ex/images/Yellow_Rose.miff +0 -0
  162. data/doc/ex/images/big-duck.gif +0 -0
  163. data/doc/ex/images/duck.gif +0 -0
  164. data/doc/ex/images/duck0.gif +0 -0
  165. data/doc/ex/images/duck1.gif +0 -0
  166. data/doc/ex/images/duck10.gif +0 -0
  167. data/doc/ex/images/duck11.gif +0 -0
  168. data/doc/ex/images/duck12.gif +0 -0
  169. data/doc/ex/images/duck13.gif +0 -0
  170. data/doc/ex/images/duck14.gif +0 -0
  171. data/doc/ex/images/duck15.gif +0 -0
  172. data/doc/ex/images/duck2.gif +0 -0
  173. data/doc/ex/images/duck3.gif +0 -0
  174. data/doc/ex/images/duck4.gif +0 -0
  175. data/doc/ex/images/duck5.gif +0 -0
  176. data/doc/ex/images/duck6.gif +0 -0
  177. data/doc/ex/images/duck7.gif +0 -0
  178. data/doc/ex/images/duck8.gif +0 -0
  179. data/doc/ex/images/duck9.gif +0 -0
  180. data/doc/ex/images/graydient230x6.gif +0 -0
  181. data/doc/ex/images/image_with_profile.jpg +0 -0
  182. data/doc/ex/images/logo400x83.gif +0 -0
  183. data/doc/ex/images/model.miff +0 -0
  184. data/doc/ex/images/notimplemented.gif +0 -0
  185. data/doc/ex/images/smile.miff +0 -0
  186. data/doc/ex/images/spin.gif +0 -0
  187. data/doc/ex/implode.rb +34 -0
  188. data/doc/ex/level.rb +11 -0
  189. data/doc/ex/level_colors.rb +11 -0
  190. data/doc/ex/line.rb +41 -0
  191. data/doc/ex/line01.rb +21 -0
  192. data/doc/ex/mask.rb +35 -0
  193. data/doc/ex/matte_fill_to_border.rb +39 -0
  194. data/doc/ex/matte_floodfill.rb +32 -0
  195. data/doc/ex/matte_replace.rb +39 -0
  196. data/doc/ex/median_filter.rb +28 -0
  197. data/doc/ex/modulate.rb +11 -0
  198. data/doc/ex/mono.rb +23 -0
  199. data/doc/ex/morph.rb +25 -0
  200. data/doc/ex/mosaic.rb +35 -0
  201. data/doc/ex/motion_blur.rb +11 -0
  202. data/doc/ex/negate.rb +11 -0
  203. data/doc/ex/negate_channel.rb +9 -0
  204. data/doc/ex/nested_rvg.rb +21 -0
  205. data/doc/ex/nonzero.rb +42 -0
  206. data/doc/ex/normalize.rb +11 -0
  207. data/doc/ex/oil_paint.rb +11 -0
  208. data/doc/ex/opacity.rb +37 -0
  209. data/doc/ex/ordered_dither.rb +11 -0
  210. data/doc/ex/path.rb +63 -0
  211. data/doc/ex/pattern1.rb +25 -0
  212. data/doc/ex/pattern2.rb +26 -0
  213. data/doc/ex/polaroid.rb +27 -0
  214. data/doc/ex/polygon.rb +23 -0
  215. data/doc/ex/polygon01.rb +21 -0
  216. data/doc/ex/polyline.rb +22 -0
  217. data/doc/ex/polyline01.rb +21 -0
  218. data/doc/ex/posterize.rb +8 -0
  219. data/doc/ex/preview.rb +8 -0
  220. data/doc/ex/qbezierpath.rb +52 -0
  221. data/doc/ex/quad01.rb +34 -0
  222. data/doc/ex/quantize-m.rb +25 -0
  223. data/doc/ex/radial_blur.rb +9 -0
  224. data/doc/ex/raise.rb +8 -0
  225. data/doc/ex/random_threshold_channel.rb +13 -0
  226. data/doc/ex/rect01.rb +14 -0
  227. data/doc/ex/rect02.rb +20 -0
  228. data/doc/ex/rectangle.rb +34 -0
  229. data/doc/ex/reduce_noise.rb +28 -0
  230. data/doc/ex/remap.rb +11 -0
  231. data/doc/ex/remap_images.rb +19 -0
  232. data/doc/ex/resize_to_fill.rb +8 -0
  233. data/doc/ex/resize_to_fit.rb +8 -0
  234. data/doc/ex/roll.rb +9 -0
  235. data/doc/ex/rotate.rb +44 -0
  236. data/doc/ex/rotate_f.rb +14 -0
  237. data/doc/ex/roundrect.rb +33 -0
  238. data/doc/ex/rubyname.rb +30 -0
  239. data/doc/ex/rvg_clippath.rb +12 -0
  240. data/doc/ex/rvg_linecap.rb +42 -0
  241. data/doc/ex/rvg_linejoin.rb +40 -0
  242. data/doc/ex/rvg_opacity.rb +18 -0
  243. data/doc/ex/rvg_pattern.rb +26 -0
  244. data/doc/ex/rvg_stroke_dasharray.rb +11 -0
  245. data/doc/ex/segment.rb +11 -0
  246. data/doc/ex/sepiatone.rb +7 -0
  247. data/doc/ex/shade.rb +11 -0
  248. data/doc/ex/shadow.rb +30 -0
  249. data/doc/ex/shave.rb +15 -0
  250. data/doc/ex/shear.rb +10 -0
  251. data/doc/ex/sketch.rb +17 -0
  252. data/doc/ex/skewx.rb +51 -0
  253. data/doc/ex/skewy.rb +47 -0
  254. data/doc/ex/smile.rb +125 -0
  255. data/doc/ex/solarize.rb +11 -0
  256. data/doc/ex/sparse_color.rb +54 -0
  257. data/doc/ex/splice.rb +8 -0
  258. data/doc/ex/spread.rb +11 -0
  259. data/doc/ex/stegano.rb +55 -0
  260. data/doc/ex/stroke_dasharray.rb +42 -0
  261. data/doc/ex/stroke_fill.rb +10 -0
  262. data/doc/ex/stroke_linecap.rb +44 -0
  263. data/doc/ex/stroke_linejoin.rb +48 -0
  264. data/doc/ex/stroke_width.rb +49 -0
  265. data/doc/ex/swirl.rb +17 -0
  266. data/doc/ex/text.rb +37 -0
  267. data/doc/ex/text01.rb +16 -0
  268. data/doc/ex/text_align.rb +36 -0
  269. data/doc/ex/text_antialias.rb +37 -0
  270. data/doc/ex/text_styles.rb +19 -0
  271. data/doc/ex/text_undercolor.rb +28 -0
  272. data/doc/ex/texture_fill_to_border.rb +34 -0
  273. data/doc/ex/texture_floodfill.rb +32 -0
  274. data/doc/ex/texturefill.rb +24 -0
  275. data/doc/ex/threshold.rb +13 -0
  276. data/doc/ex/to_blob.rb +13 -0
  277. data/doc/ex/translate.rb +39 -0
  278. data/doc/ex/transparent.rb +38 -0
  279. data/doc/ex/transpose.rb +9 -0
  280. data/doc/ex/transverse.rb +9 -0
  281. data/doc/ex/tref01.rb +24 -0
  282. data/doc/ex/triangle01.rb +15 -0
  283. data/doc/ex/trim.rb +23 -0
  284. data/doc/ex/tspan01.rb +17 -0
  285. data/doc/ex/tspan02.rb +17 -0
  286. data/doc/ex/tspan03.rb +19 -0
  287. data/doc/ex/unsharp_mask.rb +28 -0
  288. data/doc/ex/viewex.rb +33 -0
  289. data/doc/ex/vignette.rb +12 -0
  290. data/doc/ex/watermark.rb +27 -0
  291. data/doc/ex/wave.rb +9 -0
  292. data/doc/ex/wet_floor.rb +58 -0
  293. data/doc/ex/writing_mode01.rb +26 -0
  294. data/doc/ex/writing_mode02.rb +26 -0
  295. data/doc/ilist.html +2056 -0
  296. data/doc/image1.html +4680 -0
  297. data/doc/image2.html +3665 -0
  298. data/doc/image3.html +4522 -0
  299. data/doc/imageattrs.html +1638 -0
  300. data/doc/imusage.html +514 -0
  301. data/doc/index.html +416 -0
  302. data/doc/info.html +1499 -0
  303. data/doc/magick.html +565 -0
  304. data/doc/optequiv.html +2435 -0
  305. data/doc/rvg.html +975 -0
  306. data/doc/rvgclip.html +248 -0
  307. data/doc/rvggroup.html +305 -0
  308. data/doc/rvgimage.html +289 -0
  309. data/doc/rvgpattern.html +475 -0
  310. data/doc/rvgshape.html +406 -0
  311. data/doc/rvgstyle.html +270 -0
  312. data/doc/rvgtext.html +465 -0
  313. data/doc/rvgtspan.html +238 -0
  314. data/doc/rvgtut.html +530 -0
  315. data/doc/rvguse.html +145 -0
  316. data/doc/rvgxform.html +294 -0
  317. data/doc/scripts/doc.js +22 -0
  318. data/doc/scripts/stripeTables.js +23 -0
  319. data/doc/struct.html +1339 -0
  320. data/doc/usage.html +1621 -0
  321. data/examples/constitute.rb +7 -0
  322. data/examples/crop_with_gravity.rb +42 -0
  323. data/examples/demo.rb +324 -0
  324. data/examples/describe.rb +43 -0
  325. data/examples/find_similar_region.rb +34 -0
  326. data/examples/histogram.rb +321 -0
  327. data/examples/identify.rb +185 -0
  328. data/examples/image_opacity.rb +29 -0
  329. data/examples/import_export.rb +31 -0
  330. data/examples/pattern_fill.rb +38 -0
  331. data/examples/rotating_text.rb +44 -0
  332. data/examples/spinner.rb +49 -0
  333. data/examples/thumbnail.rb +64 -0
  334. data/examples/vignette.rb +78 -0
  335. data/ext/RMagick/extconf.rb +548 -0
  336. data/ext/RMagick/rmagick.c +401 -0
  337. data/ext/RMagick/rmagick.h +1287 -0
  338. data/ext/RMagick/rmdraw.c +2022 -0
  339. data/ext/RMagick/rmenum.c +1235 -0
  340. data/ext/RMagick/rmfill.c +720 -0
  341. data/ext/RMagick/rmilist.c +1270 -0
  342. data/ext/RMagick/rmimage.c +15427 -0
  343. data/ext/RMagick/rminfo.c +2590 -0
  344. data/ext/RMagick/rmmain.c +1741 -0
  345. data/ext/RMagick/rmmontage.c +519 -0
  346. data/ext/RMagick/rmpixel.c +1114 -0
  347. data/ext/RMagick/rmstruct.c +1124 -0
  348. data/ext/RMagick/rmutil.c +1754 -0
  349. data/lib/rmagick.rb +1 -0
  350. data/lib/rmagick/version.rb +6 -0
  351. data/lib/rmagick_internal.rb +1947 -0
  352. data/lib/rvg/clippath.rb +45 -0
  353. data/lib/rvg/container.rb +122 -0
  354. data/lib/rvg/deep_equal.rb +52 -0
  355. data/lib/rvg/describable.rb +47 -0
  356. data/lib/rvg/embellishable.rb +391 -0
  357. data/lib/rvg/misc.rb +723 -0
  358. data/lib/rvg/paint.rb +50 -0
  359. data/lib/rvg/pathdata.rb +126 -0
  360. data/lib/rvg/rvg.rb +283 -0
  361. data/lib/rvg/stretchable.rb +165 -0
  362. data/lib/rvg/stylable.rb +116 -0
  363. data/lib/rvg/text.rb +172 -0
  364. data/lib/rvg/transformable.rb +126 -0
  365. data/lib/rvg/units.rb +63 -0
  366. data/rmagick.gemspec +46 -0
  367. data/spec/rmagick/ImageList1_spec.rb +24 -0
  368. data/spec/rmagick/draw_spec.rb +156 -0
  369. data/spec/rmagick/image/blue_shift_spec.rb +16 -0
  370. data/spec/rmagick/image/composite_spec.rb +140 -0
  371. data/spec/rmagick/image/constitute_spec.rb +15 -0
  372. data/spec/rmagick/image/dispatch_spec.rb +18 -0
  373. data/spec/rmagick/image/from_blob_spec.rb +14 -0
  374. data/spec/rmagick/image/ping_spec.rb +14 -0
  375. data/spec/rmagick/image/properties_spec.rb +29 -0
  376. data/spec/spec_helper.rb +4 -0
  377. data/test/Image1.rb +565 -0
  378. data/test/Image2.rb +1304 -0
  379. data/test/Image3.rb +1030 -0
  380. data/test/ImageList1.rb +806 -0
  381. data/test/ImageList2.rb +385 -0
  382. data/test/Image_attributes.rb +697 -0
  383. data/test/Import_Export.rb +121 -0
  384. data/test/Info.rb +345 -0
  385. data/test/Magick.rb +321 -0
  386. data/test/Pixel.rb +116 -0
  387. data/test/Preview.rb +57 -0
  388. data/test/cmyk.icm +0 -0
  389. data/test/srgb.icm +0 -0
  390. data/test/test_all_basic.rb +38 -0
  391. data/test/tmpnam_test.rb +50 -0
  392. data/wercker.yml +10 -0
  393. metadata +509 -0
data/test/Magick.rb ADDED
@@ -0,0 +1,321 @@
1
+
2
+ #!/usr/bin/env ruby -w
3
+
4
+ require 'rmagick'
5
+ require 'test/unit'
6
+ require 'test/unit/ui/console/testrunner' unless RUBY_VERSION[/^1\.9|^2/]
7
+
8
+ module Magick
9
+ def self._tmpnam_
10
+ @@_tmpnam_
11
+ end
12
+ end
13
+
14
+ class Magick::AlphaChannelType
15
+ def self.enumerators
16
+ @@enumerators
17
+ end
18
+ end
19
+
20
+ class Magick::AlignType
21
+ def self.enumerators
22
+ @@enumerators
23
+ end
24
+ end
25
+
26
+ class Magick::AnchorType
27
+ def self.enumerators
28
+ @@enumerators
29
+ end
30
+ end
31
+
32
+ class Magick_UT < Test::Unit::TestCase
33
+ def test_colors
34
+ res = nil
35
+ assert_nothing_raised { res = Magick.colors }
36
+ assert_instance_of(Array, res)
37
+ res.each do |c|
38
+ assert_instance_of(Magick::Color, c)
39
+ assert_instance_of(String, c.name)
40
+ assert_instance_of(Magick::ComplianceType, c.compliance)
41
+ assert_instance_of(Magick::Pixel, c.color)
42
+ end
43
+ Magick.colors {|c| assert_instance_of(Magick::Color, c) }
44
+ end
45
+
46
+ # Test a few of the @@enumerator arrays in the Enum subclasses.
47
+ # No need to test all of them.
48
+ def test_enumerators
49
+ ary = nil
50
+ assert_nothing_raised do
51
+ ary = Magick::AlphaChannelType.enumerators
52
+ end
53
+ assert_instance_of(Array, ary)
54
+
55
+ assert_nothing_raised do
56
+ ary = Magick::AlignType.enumerators
57
+ end
58
+ assert_instance_of(Array, ary)
59
+ assert_equal(4, ary.length)
60
+
61
+ assert_nothing_raised do
62
+ ary = Magick::AnchorType.enumerators
63
+ end
64
+ assert_instance_of(Array, ary)
65
+ assert_equal(3, ary.length)
66
+ end
67
+
68
+ def test_features
69
+ res = nil
70
+ assert_nothing_raised { res = Magick::Magick_features }
71
+ assert_instance_of(String, res)
72
+ end
73
+
74
+ def test_fonts
75
+ res = nil
76
+ assert_nothing_raised { res = Magick.fonts }
77
+ assert_instance_of(Array, res)
78
+ res.each do |f|
79
+ assert_instance_of(Magick::Font, f)
80
+ assert_instance_of(String, f.name)
81
+ assert_instance_of(String, f.description) unless f.description.nil?
82
+ assert_instance_of(String, f.family)
83
+ assert_instance_of(Magick::StyleType, f.style)
84
+ assert_instance_of(Magick::StretchType, f.stretch)
85
+ assert_instance_of(Fixnum, f.weight)
86
+ assert_instance_of(String, f.encoding) unless f.encoding.nil?
87
+ assert_instance_of(String, f.foundry) unless f.foundry.nil?
88
+ assert_instance_of(String, f.format) unless f.format.nil?
89
+ end
90
+ Magick.fonts {|f| assert_instance_of(Magick::Font, f) }
91
+ end
92
+
93
+ def test_formats
94
+ res = nil
95
+ assert_nothing_raised { res = Magick.formats }
96
+ assert_instance_of(Hash, res)
97
+ res.each do |f, v|
98
+ assert_instance_of(String, f)
99
+ assert_instance_of(String, v)
100
+ end
101
+ Magick.formats.each { |f, v| assert_not_nil(f); assert_not_nil(v) }
102
+ end
103
+
104
+ def test_geometry
105
+ g = nil
106
+ gs = nil
107
+ g2 = nil
108
+ gs2 = nil
109
+ assert_nothing_raised { g = Magick::Geometry.new }
110
+ assert_nothing_raised { gs = g.to_s }
111
+ assert_equal('', gs)
112
+
113
+ g = Magick::Geometry.new(40)
114
+ gs = g.to_s
115
+ assert_equal('40x', gs)
116
+
117
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
118
+ gs2 = g2.to_s
119
+ assert_equal(gs, gs2)
120
+
121
+ g = Magick::Geometry.new(40, 50)
122
+ gs = g.to_s
123
+ assert_equal('40x50', gs)
124
+
125
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
126
+ gs2 = g2.to_s
127
+ assert_equal(gs, gs2)
128
+
129
+ g = Magick::Geometry.new(40, 50, 10)
130
+ gs = g.to_s
131
+ assert_equal('40x50+10+0', gs)
132
+
133
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
134
+ gs2 = g2.to_s
135
+ assert_equal(gs, gs2)
136
+
137
+ g = Magick::Geometry.new(40, 50, 10, -15)
138
+ gs = g.to_s
139
+ assert_equal('40x50+10-15', gs)
140
+
141
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
142
+ gs2 = g2.to_s
143
+ assert_equal(gs, gs2)
144
+
145
+ g = Magick::Geometry.new(40, 50, 0, 0, Magick::AreaGeometry)
146
+ gs = g.to_s
147
+ assert_equal('40x50@', gs)
148
+
149
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
150
+ gs2 = g2.to_s
151
+ assert_equal(gs, gs2)
152
+
153
+ g = Magick::Geometry.new(40, 50, 0, 0, Magick::AspectGeometry)
154
+ gs = g.to_s
155
+ assert_equal('40x50!', gs)
156
+
157
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
158
+ gs2 = g2.to_s
159
+ assert_equal(gs, gs2)
160
+
161
+ g = Magick::Geometry.new(40, 50, 0, 0, Magick::LessGeometry)
162
+ gs = g.to_s
163
+ assert_equal('40x50<', gs)
164
+
165
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
166
+ gs2 = g2.to_s
167
+ assert_equal(gs, gs2)
168
+
169
+ g = Magick::Geometry.new(40, 50, 0, 0, Magick::GreaterGeometry)
170
+ gs = g.to_s
171
+ assert_equal('40x50>', gs)
172
+
173
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
174
+ gs2 = g2.to_s
175
+ assert_equal(gs, gs2)
176
+
177
+ g = Magick::Geometry.new(40, 50, 0, 0, Magick::MinimumGeometry)
178
+ gs = g.to_s
179
+ assert_equal('40x50^', gs)
180
+
181
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
182
+ gs2 = g2.to_s
183
+ assert_equal(gs, gs2)
184
+
185
+ g = Magick::Geometry.new(40, 0, 0, 0, Magick::PercentGeometry)
186
+ gs = g.to_s
187
+ assert_equal('40%', gs)
188
+
189
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
190
+ gs2 = g2.to_s
191
+ assert_equal(gs, gs2)
192
+
193
+ g = Magick::Geometry.new(40, 60, 0, 0, Magick::PercentGeometry)
194
+ gs = g.to_s
195
+ assert_equal('40%x60%', gs)
196
+
197
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
198
+ gs2 = g2.to_s
199
+ assert_equal(gs, gs2)
200
+
201
+ g = Magick::Geometry.new(40, 60, 10, 0, Magick::PercentGeometry)
202
+ gs = g.to_s
203
+ assert_equal('40%x60%+10+0', gs)
204
+
205
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
206
+ gs2 = g2.to_s
207
+ assert_equal(gs, gs2)
208
+
209
+ g = Magick::Geometry.new(40, 60, 10, 20, Magick::PercentGeometry)
210
+ gs = g.to_s
211
+ assert_equal('40%x60%+10+20', gs)
212
+
213
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
214
+ gs2 = g2.to_s
215
+ assert_equal(gs, gs2)
216
+
217
+ g = Magick::Geometry.new(40.5, 60.75)
218
+ gs = g.to_s
219
+ assert_equal('40.50x60.75', gs)
220
+
221
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
222
+ gs2 = g2.to_s
223
+ assert_equal(gs, gs2)
224
+
225
+ g = Magick::Geometry.new(40.5, 60.75, 0, 0, Magick::PercentGeometry)
226
+ gs = g.to_s
227
+ assert_equal('40.50%x60.75%', gs)
228
+
229
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
230
+ gs2 = g2.to_s
231
+ assert_equal(gs, gs2)
232
+
233
+ g = Magick::Geometry.new(0, 0, 10, 20)
234
+ gs = g.to_s
235
+ assert_equal('+10+20', gs)
236
+
237
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
238
+ gs2 = g2.to_s
239
+ assert_equal(gs, gs2)
240
+
241
+ g = Magick::Geometry.new(0, 0, 10)
242
+ gs = g.to_s
243
+ assert_equal('+10+0', gs)
244
+
245
+ assert_nothing_raised { g2 = Magick::Geometry.from_s(gs) }
246
+ gs2 = g2.to_s
247
+ assert_equal(gs, gs2)
248
+
249
+ # assert behavior with empty string argument
250
+ assert_nothing_raised { g = Magick::Geometry.from_s('') }
251
+ assert_equal('', g.to_s)
252
+
253
+ assert_raise(ArgumentError) { Magick::Geometry.new(Magick::AreaGeometry) }
254
+ assert_raise(ArgumentError) { Magick::Geometry.new(40, Magick::AreaGeometry) }
255
+ assert_raise(ArgumentError) { Magick::Geometry.new(40, 20, Magick::AreaGeometry) }
256
+ assert_raise(ArgumentError) { Magick::Geometry.new(40, 20, 10, Magick::AreaGeometry) }
257
+ end
258
+
259
+ def test_set_log_event_mask
260
+ assert_nothing_raised { Magick.set_log_event_mask('Module,Coder') }
261
+ end
262
+
263
+ def test_set_log_format
264
+ assert_nothing_raised { Magick.set_log_format('format %d%e%f') }
265
+ end
266
+
267
+ def test_limit_resources
268
+ cur = new = nil
269
+
270
+ assert_nothing_raised {cur = Magick.limit_resource(:memory, 500)}
271
+ assert_kind_of(Integer, cur)
272
+ assert(cur > 1024 ** 2)
273
+ assert_nothing_raised {new = Magick.limit_resource('memory')}
274
+ assert_equal(500, new)
275
+ Magick.limit_resource(:memory, cur)
276
+
277
+ assert_nothing_raised {cur = Magick.limit_resource(:map, 3500)}
278
+ assert_kind_of(Integer, cur)
279
+ assert(cur > 1024 ** 2)
280
+ assert_nothing_raised {new = Magick.limit_resource('map')}
281
+ assert_equal(3500, new)
282
+ Magick.limit_resource(:map, cur)
283
+
284
+ assert_nothing_raised {cur = Magick.limit_resource(:disk, 3*1024*1024*1024)}
285
+ assert_kind_of(Integer, cur)
286
+ assert(cur > 1024 ** 2)
287
+ assert_nothing_raised {new = Magick.limit_resource('disk')}
288
+ assert_equal(3221225472, new)
289
+ Magick.limit_resource(:disk, cur)
290
+
291
+ assert_nothing_raised {cur = Magick.limit_resource(:file, 500)}
292
+ assert_kind_of(Integer, cur)
293
+ assert(cur > 512)
294
+ assert_nothing_raised {new = Magick.limit_resource('file')}
295
+ assert_equal(500, new)
296
+ Magick.limit_resource(:file, cur)
297
+
298
+ assert_raise(ArgumentError) { Magick.limit_resource(:xxx) }
299
+ assert_raise(ArgumentError) { Magick.limit_resource('xxx') }
300
+ assert_raise(ArgumentError) { Magick.limit_resource('map', 3500, 2) }
301
+ assert_raise(ArgumentError) { Magick.limit_resource }
302
+ end
303
+
304
+ def test_trace_proc
305
+ Magick.trace_proc = proc do |which, description, id, method|
306
+ assert(which == :c)
307
+ assert_instance_of(String, description)
308
+ assert_instance_of(String, id)
309
+ assert_equal(:initialize, method)
310
+ end
311
+ begin
312
+ img = Magick::Image.new(20,20)
313
+ ensure
314
+ Magick.trace_proc = nil
315
+ end
316
+ end
317
+ end
318
+
319
+ if __FILE__ == $PROGRAM_NAME
320
+ Test::Unit::UI::Console::TestRunner.run(Magick_UT) unless RUBY_VERSION[/^1\.9|^2/]
321
+ end
data/test/Pixel.rb ADDED
@@ -0,0 +1,116 @@
1
+ #!/usr/bin/env ruby -w
2
+
3
+ require 'rmagick'
4
+ require 'test/unit'
5
+ require 'test/unit/ui/console/testrunner' unless RUBY_VERSION[/^1\.9|^2/]
6
+
7
+ class Pixel_UT < Test::Unit::TestCase
8
+ def setup
9
+ @pixel = Magick::Pixel.from_color('brown')
10
+ end
11
+
12
+ def test_hash
13
+ hash = nil
14
+ assert_nothing_raised { hash = @pixel.hash}
15
+ assert_not_nil(hash)
16
+ assert_equal(1385501952, hash)
17
+
18
+ p = Magick::Pixel.new
19
+ assert_equal(0, p.hash)
20
+
21
+ p = Magick::Pixel.from_color('red')
22
+ assert_equal(2139095040, p.hash)
23
+
24
+ # Pixel.hash sacrifices the last bit of the opacity channel
25
+ p = Magick::Pixel.new(0, 0, 0, 72)
26
+ p2 = Magick::Pixel.new(0, 0, 0, 73)
27
+ assert_not_equal(p, p2)
28
+ assert_equal(p.hash, p2.hash)
29
+ end
30
+
31
+ def test_eql?
32
+ p = @pixel
33
+ assert(@pixel.eql?(p))
34
+ p = Magick::Pixel.new
35
+ assert(!@pixel.eql?(p))
36
+ end
37
+
38
+ def test_fcmp
39
+ red = Magick::Pixel.from_color('red')
40
+ blue = Magick::Pixel.from_color('blue')
41
+ assert_nothing_raised { red.fcmp(red) }
42
+ assert(red.fcmp(red))
43
+ assert(!red.fcmp(blue))
44
+
45
+ assert_nothing_raised { red.fcmp(blue, 10) }
46
+ assert_nothing_raised { red.fcmp(blue, 10, Magick::RGBColorspace) }
47
+ assert_raises(TypeError) { red.fcmp(blue, 'x') }
48
+ assert_raises(TypeError) { red.fcmp(blue, 10, 'x') }
49
+ end
50
+
51
+ def test_from_hsla
52
+ assert_nothing_raised { Magick::Pixel.from_hsla(127, 50, 50) }
53
+ assert_nothing_raised { Magick::Pixel.from_hsla(127, 50, 50, 0) }
54
+ assert_nothing_raised { Magick::Pixel.from_hsla(127, '50%', 50, 0) }
55
+ assert_nothing_raised { Magick::Pixel.from_hsla('10%', '50%', 50, 0) }
56
+ assert_raise(TypeError) { Magick::Pixel.from_hsla([], 50, 50, 0) }
57
+ assert_raise(TypeError) { Magick::Pixel.from_hsla(127, [], 50, 0) }
58
+ assert_raise(TypeError) { Magick::Pixel.from_hsla(127, 50, [], 0) }
59
+ assert_raise(TypeError) { Magick::Pixel.from_hsla(127, 50, 50, []) }
60
+ assert_nothing_raised { @pixel.to_hsla }
61
+
62
+ 18.times do |h|
63
+ 25.times do |s|
64
+ 25.times do |l|
65
+ 5.times do |a|
66
+ args = [20*h, s+25, l+25, a/5.0]
67
+ px = Magick::Pixel.from_hsla(*args)
68
+ hsla = px.to_hsla
69
+ #puts "[#{args.join(', ')}] = [#{hsla.join(', ')}]"
70
+ # Handle cases where the result is very near 360
71
+ #hsla[0] = ((hsla[0] + 0.005) % 360.0) - 0.005
72
+ #hsla[1] = ((hsla[1] + 0.005) % 360.0) - 0.005
73
+ #hsla[2] = ((hsla[2] + 0.005) % 360.0) - 0.005
74
+ assert_in_delta(args[0], hsla[0], 0.25, "expected #{args.inspect} got #{hsla.inspect}")
75
+ assert_in_delta(args[1], hsla[1], 0.25, "expected #{args.inspect} got #{hsla.inspect}")
76
+ assert_in_delta(args[2], hsla[2], 0.25, "expected #{args.inspect} got #{hsla.inspect}")
77
+ assert_in_delta(args[3], hsla[3], 0.005, "expected #{args.inspect} got #{hsla.inspect}")
78
+ end
79
+ end
80
+ end
81
+ end
82
+
83
+ # test percentages
84
+ args = ['20%','20%','20%','20%']
85
+ args2 = [360.0/5,255.0/5,255.0/5,1.0/5]
86
+ px = Magick::Pixel.from_hsla(*args)
87
+ hsla = px.to_hsla
88
+ px2 = Magick::Pixel.from_hsla(*args2)
89
+ hsla2 = px2.to_hsla
90
+
91
+ assert_in_delta(hsla[0], hsla2[0], 0.25, "#{hsla.inspect} != #{hsla2.inspect} with args: #{args.inspect} and #{args2.inspect}")
92
+ assert_in_delta(hsla[1], hsla2[1], 0.25, "#{hsla.inspect} != #{hsla2.inspect} with args: #{args.inspect} and #{args2.inspect}")
93
+ assert_in_delta(hsla[2], hsla2[2], 0.25, "#{hsla.inspect} != #{hsla2.inspect} with args: #{args.inspect} and #{args2.inspect}")
94
+ assert_in_delta(hsla[3], hsla2[3], 0.005, "#{hsla.inspect} != #{hsla2.inspect} with args: #{args.inspect} and #{args2.inspect}")
95
+ end
96
+
97
+ def test_to_color
98
+ assert_nothing_raised { @pixel.to_color(Magick::AllCompliance) }
99
+ assert_nothing_raised { @pixel.to_color(Magick::SVGCompliance) }
100
+ assert_nothing_raised { @pixel.to_color(Magick::X11Compliance) }
101
+ assert_nothing_raised { @pixel.to_color(Magick::XPMCompliance) }
102
+ assert_nothing_raised { @pixel.to_color(Magick::AllCompliance, true) }
103
+ assert_nothing_raised { @pixel.to_color(Magick::AllCompliance, false) }
104
+ assert_nothing_raised { @pixel.to_color(Magick::AllCompliance, false, 8) }
105
+ assert_nothing_raised { @pixel.to_color(Magick::AllCompliance, false, 16) }
106
+ # test "hex" format
107
+ assert_nothing_raised { @pixel.to_color(Magick::AllCompliance, false, 8, true) }
108
+ assert_nothing_raised { @pixel.to_color(Magick::AllCompliance, false, 16, true) }
109
+
110
+ assert_equal('#A52A2A', @pixel.to_color(Magick::AllCompliance, false, 8, true))
111
+ assert_equal('#A5A52A2A2A2A', @pixel.to_color(Magick::AllCompliance, false, 16, true))
112
+
113
+ assert_raise(ArgumentError) { @pixel.to_color(Magick::AllCompliance, false, 32) }
114
+ assert_raise(TypeError) { @pixel.to_color(1) }
115
+ end
116
+ end
data/test/Preview.rb ADDED
@@ -0,0 +1,57 @@
1
+ #!/usr/bin/env ruby -w
2
+
3
+ require 'rmagick'
4
+ require 'test/unit'
5
+ require 'test/unit/ui/console/testrunner' unless RUBY_VERSION[/^1\.9|^2/]
6
+
7
+ class Preview_UT < Test::Unit::TestCase
8
+ def test_preview
9
+ preview_types = [
10
+ Magick::RotatePreview,
11
+ Magick::ShearPreview,
12
+ Magick::RollPreview,
13
+ Magick::HuePreview,
14
+ Magick::SaturationPreview,
15
+ Magick::BrightnessPreview,
16
+ Magick::GammaPreview,
17
+ Magick::SpiffPreview,
18
+ Magick::DullPreview,
19
+ Magick::GrayscalePreview,
20
+ Magick::QuantizePreview,
21
+ Magick::DespecklePreview,
22
+ Magick::ReduceNoisePreview,
23
+ Magick::AddNoisePreview,
24
+ Magick::SharpenPreview,
25
+ Magick::BlurPreview,
26
+ Magick::ThresholdPreview,
27
+ Magick::EdgeDetectPreview,
28
+ Magick::SpreadPreview,
29
+ Magick::SolarizePreview,
30
+ Magick::ShadePreview,
31
+ Magick::RaisePreview,
32
+ Magick::SegmentPreview,
33
+ Magick::SwirlPreview,
34
+ Magick::ImplodePreview,
35
+ Magick::WavePreview,
36
+ Magick::OilPaintPreview,
37
+ Magick::CharcoalDrawingPreview,
38
+ Magick::JPEGPreview ]
39
+
40
+ hat = Magick::Image.read(IMAGES_DIR+'/Flower_Hat.jpg').first
41
+ assert_nothing_raised do
42
+ prev = hat.preview(Magick::RotatePreview)
43
+ assert_instance_of(Magick::Image, prev)
44
+ end
45
+ puts "\n"
46
+ preview_types.each do |type|
47
+ puts "testing #{type}..."
48
+ assert_nothing_raised { hat.preview(type) }
49
+ end
50
+ assert_raise(TypeError) { hat.preview(2) }
51
+ end
52
+ end
53
+
54
+ if __FILE__ == $PROGRAM_NAME
55
+ IMAGES_DIR = '../doc/ex/images'
56
+ Test::Unit::UI::Console::TestRunner.run(Preview_UT) unless RUBY_VERSION[/^1\.9|^2/]
57
+ end