rmagick 3.2.0 → 4.3.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 (420) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +63 -0
  3. data/.devcontainer/Dockerfile +14 -0
  4. data/.devcontainer/ImageMagick6/devcontainer.json +11 -0
  5. data/.devcontainer/devcontainer.json +11 -0
  6. data/.devcontainer/setup-repo.sh +10 -0
  7. data/.devcontainer/setup-user.sh +45 -0
  8. data/.editorconfig +3 -0
  9. data/.github/ISSUE_TEMPLATE.md +17 -0
  10. data/.github/workflows/ci.yml +79 -0
  11. data/.gitignore +3 -1
  12. data/.rspec +1 -0
  13. data/.rubocop.yml +24 -0
  14. data/.rubocop_todo.yml +151 -297
  15. data/.yardopts +5 -0
  16. data/CHANGELOG.md +233 -0
  17. data/CODE_OF_CONDUCT.md +122 -7
  18. data/CONTRIBUTING.md +14 -10
  19. data/README.md +326 -0
  20. data/Rakefile +16 -22
  21. data/before_install_linux.sh +22 -28
  22. data/before_install_osx.sh +57 -2
  23. data/ext/RMagick/extconf.rb +149 -105
  24. data/ext/RMagick/rmagick.c +77 -104
  25. data/ext/RMagick/rmagick.h +121 -103
  26. data/ext/RMagick/rmdraw.c +364 -436
  27. data/ext/RMagick/rmenum.c +106 -114
  28. data/ext/RMagick/rmfill.c +149 -70
  29. data/ext/RMagick/rmilist.c +225 -367
  30. data/ext/RMagick/rmimage.c +4751 -4405
  31. data/ext/RMagick/rminfo.c +574 -787
  32. data/ext/RMagick/rmkinfo.c +51 -121
  33. data/ext/RMagick/rmmain.c +454 -286
  34. data/ext/RMagick/rmmontage.c +64 -130
  35. data/ext/RMagick/rmpixel.c +488 -437
  36. data/ext/RMagick/rmstruct.c +83 -96
  37. data/ext/RMagick/rmutil.c +302 -214
  38. data/lib/rmagick/version.rb +1 -1
  39. data/lib/rmagick_internal.rb +138 -93
  40. data/lib/rvg/clippath.rb +2 -1
  41. data/lib/rvg/container.rb +10 -5
  42. data/lib/rvg/describable.rb +1 -1
  43. data/lib/rvg/embellishable.rb +5 -4
  44. data/lib/rvg/misc.rb +15 -12
  45. data/lib/rvg/paint.rb +2 -1
  46. data/lib/rvg/pathdata.rb +12 -11
  47. data/lib/rvg/rvg.rb +12 -8
  48. data/lib/rvg/stylable.rb +9 -7
  49. data/lib/rvg/text.rb +11 -6
  50. data/lib/rvg/transformable.rb +3 -2
  51. data/lib/rvg/units.rb +1 -1
  52. data/rmagick.gemspec +10 -11
  53. metadata +52 -423
  54. data/.appveyor.yml +0 -45
  55. data/.circleci/config.yml +0 -56
  56. data/.ruby-version +0 -1
  57. data/.simplecov +0 -27
  58. data/.travis.yml +0 -62
  59. data/Doxyfile +0 -1514
  60. data/README.textile +0 -259
  61. data/benchmarks/memory/README.md +0 -50
  62. data/benchmarks/memory/image_new.rb +0 -8
  63. data/benchmarks/memory/rmagick.gnuplot +0 -16
  64. data/doc/.cvsignore +0 -1
  65. data/doc/comtasks.html +0 -287
  66. data/doc/constants.html +0 -1581
  67. data/doc/css/doc.css +0 -299
  68. data/doc/css/popup.css +0 -34
  69. data/doc/css/ref.css +0 -67
  70. data/doc/draw.html +0 -3272
  71. data/doc/ex/InitialCoords.rb +0 -22
  72. data/doc/ex/NewCoordSys.rb +0 -30
  73. data/doc/ex/OrigCoordSys.rb +0 -16
  74. data/doc/ex/PreserveAspectRatio.rb +0 -204
  75. data/doc/ex/RotateScale.rb +0 -36
  76. data/doc/ex/Skew.rb +0 -38
  77. data/doc/ex/Use01.rb +0 -15
  78. data/doc/ex/Use02.rb +0 -20
  79. data/doc/ex/Use03.rb +0 -16
  80. data/doc/ex/ViewBox.rb +0 -31
  81. data/doc/ex/adaptive_threshold.rb +0 -9
  82. data/doc/ex/add_noise.rb +0 -16
  83. data/doc/ex/affine.rb +0 -48
  84. data/doc/ex/affine_transform.rb +0 -20
  85. data/doc/ex/arc.rb +0 -49
  86. data/doc/ex/arcpath.rb +0 -32
  87. data/doc/ex/arcs01.rb +0 -28
  88. data/doc/ex/arcs02.rb +0 -59
  89. data/doc/ex/average.rb +0 -15
  90. data/doc/ex/axes.rb +0 -64
  91. data/doc/ex/baseline_shift01.rb +0 -17
  92. data/doc/ex/bilevel_channel.rb +0 -8
  93. data/doc/ex/blur_image.rb +0 -12
  94. data/doc/ex/border.rb +0 -10
  95. data/doc/ex/bounding_box.rb +0 -42
  96. data/doc/ex/cbezier1.rb +0 -41
  97. data/doc/ex/cbezier2.rb +0 -41
  98. data/doc/ex/cbezier3.rb +0 -41
  99. data/doc/ex/cbezier4.rb +0 -42
  100. data/doc/ex/cbezier5.rb +0 -42
  101. data/doc/ex/cbezier6.rb +0 -53
  102. data/doc/ex/channel.rb +0 -25
  103. data/doc/ex/charcoal.rb +0 -12
  104. data/doc/ex/chop.rb +0 -29
  105. data/doc/ex/circle.rb +0 -33
  106. data/doc/ex/circle01.rb +0 -16
  107. data/doc/ex/clip_path.rb +0 -60
  108. data/doc/ex/coalesce.rb +0 -57
  109. data/doc/ex/color_fill_to_border.rb +0 -29
  110. data/doc/ex/color_floodfill.rb +0 -28
  111. data/doc/ex/color_histogram.rb +0 -47
  112. data/doc/ex/color_reset.rb +0 -11
  113. data/doc/ex/colorize.rb +0 -16
  114. data/doc/ex/colors.rb +0 -64
  115. data/doc/ex/compose_mask.rb +0 -22
  116. data/doc/ex/composite.rb +0 -133
  117. data/doc/ex/composite_layers.rb +0 -52
  118. data/doc/ex/composite_tiled.rb +0 -21
  119. data/doc/ex/contrast.rb +0 -36
  120. data/doc/ex/crop.rb +0 -31
  121. data/doc/ex/crop_with_gravity.rb +0 -42
  122. data/doc/ex/cubic01.rb +0 -43
  123. data/doc/ex/cubic02.rb +0 -91
  124. data/doc/ex/cycle_colormap.rb +0 -21
  125. data/doc/ex/dissolve.rb +0 -12
  126. data/doc/ex/drawcomp.rb +0 -41
  127. data/doc/ex/drop_shadow.rb +0 -60
  128. data/doc/ex/edge.rb +0 -11
  129. data/doc/ex/ellipse.rb +0 -45
  130. data/doc/ex/ellipse01.rb +0 -21
  131. data/doc/ex/emboss.rb +0 -11
  132. data/doc/ex/enhance.rb +0 -28
  133. data/doc/ex/equalize.rb +0 -11
  134. data/doc/ex/evenodd.rb +0 -42
  135. data/doc/ex/fill_pattern.rb +0 -23
  136. data/doc/ex/flatten_images.rb +0 -36
  137. data/doc/ex/flip.rb +0 -11
  138. data/doc/ex/flop.rb +0 -11
  139. data/doc/ex/font_styles.rb +0 -32
  140. data/doc/ex/fonts.rb +0 -16
  141. data/doc/ex/frame.rb +0 -12
  142. data/doc/ex/gaussian_blur.rb +0 -11
  143. data/doc/ex/get_multiline_type_metrics.rb +0 -41
  144. data/doc/ex/get_pixels.rb +0 -45
  145. data/doc/ex/get_type_metrics.rb +0 -142
  146. data/doc/ex/gradientfill.rb +0 -27
  147. data/doc/ex/grav.rb +0 -45
  148. data/doc/ex/gravity.rb +0 -78
  149. data/doc/ex/group.rb +0 -26
  150. data/doc/ex/hatchfill.rb +0 -27
  151. data/doc/ex/image.rb +0 -44
  152. data/doc/ex/images/Apple.miff +0 -0
  153. data/doc/ex/images/Ballerina.jpg +0 -0
  154. data/doc/ex/images/Ballerina3.jpg +0 -0
  155. data/doc/ex/images/Button_0.gif +0 -0
  156. data/doc/ex/images/Button_1.gif +0 -0
  157. data/doc/ex/images/Button_2.gif +0 -0
  158. data/doc/ex/images/Button_3.gif +0 -0
  159. data/doc/ex/images/Button_4.gif +0 -0
  160. data/doc/ex/images/Button_5.gif +0 -0
  161. data/doc/ex/images/Button_6.gif +0 -0
  162. data/doc/ex/images/Button_7.gif +0 -0
  163. data/doc/ex/images/Button_8.gif +0 -0
  164. data/doc/ex/images/Button_9.gif +0 -0
  165. data/doc/ex/images/Button_A.gif +0 -0
  166. data/doc/ex/images/Button_B.gif +0 -0
  167. data/doc/ex/images/Button_C.gif +0 -0
  168. data/doc/ex/images/Button_D.gif +0 -0
  169. data/doc/ex/images/Button_E.gif +0 -0
  170. data/doc/ex/images/Button_F.gif +0 -0
  171. data/doc/ex/images/Button_G.gif +0 -0
  172. data/doc/ex/images/Button_H.gif +0 -0
  173. data/doc/ex/images/Button_I.gif +0 -0
  174. data/doc/ex/images/Button_J.gif +0 -0
  175. data/doc/ex/images/Button_K.gif +0 -0
  176. data/doc/ex/images/Button_L.gif +0 -0
  177. data/doc/ex/images/Button_M.gif +0 -0
  178. data/doc/ex/images/Button_N.gif +0 -0
  179. data/doc/ex/images/Button_O.gif +0 -0
  180. data/doc/ex/images/Button_P.gif +0 -0
  181. data/doc/ex/images/Button_Q.gif +0 -0
  182. data/doc/ex/images/Button_R.gif +0 -0
  183. data/doc/ex/images/Button_S.gif +0 -0
  184. data/doc/ex/images/Button_T.gif +0 -0
  185. data/doc/ex/images/Button_U.gif +0 -0
  186. data/doc/ex/images/Button_V.gif +0 -0
  187. data/doc/ex/images/Button_W.gif +0 -0
  188. data/doc/ex/images/Button_X.gif +0 -0
  189. data/doc/ex/images/Button_Y.gif +0 -0
  190. data/doc/ex/images/Button_Z.gif +0 -0
  191. data/doc/ex/images/Cheetah.jpg +0 -0
  192. data/doc/ex/images/Coffee.png +0 -0
  193. data/doc/ex/images/Flower_Hat.jpg +0 -0
  194. data/doc/ex/images/Gold_Statue.jpg +0 -0
  195. data/doc/ex/images/Hot_Air_Balloons.jpg +0 -0
  196. data/doc/ex/images/Hot_Air_Balloons_H.jpg +0 -0
  197. data/doc/ex/images/Leaf.miff +0 -0
  198. data/doc/ex/images/No.png +0 -0
  199. data/doc/ex/images/Polynesia.jpg +0 -0
  200. data/doc/ex/images/Red_Rocks.jpg +0 -0
  201. data/doc/ex/images/Rocks_On_Beach.miff +0 -0
  202. data/doc/ex/images/Shorts.jpg +0 -0
  203. data/doc/ex/images/Snake.png +0 -0
  204. data/doc/ex/images/Violin.jpg +0 -0
  205. data/doc/ex/images/Yellow_Rose.miff +0 -0
  206. data/doc/ex/images/big-duck.gif +0 -0
  207. data/doc/ex/images/duck.gif +0 -0
  208. data/doc/ex/images/duck0.gif +0 -0
  209. data/doc/ex/images/duck1.gif +0 -0
  210. data/doc/ex/images/duck10.gif +0 -0
  211. data/doc/ex/images/duck11.gif +0 -0
  212. data/doc/ex/images/duck12.gif +0 -0
  213. data/doc/ex/images/duck13.gif +0 -0
  214. data/doc/ex/images/duck14.gif +0 -0
  215. data/doc/ex/images/duck15.gif +0 -0
  216. data/doc/ex/images/duck2.gif +0 -0
  217. data/doc/ex/images/duck3.gif +0 -0
  218. data/doc/ex/images/duck4.gif +0 -0
  219. data/doc/ex/images/duck5.gif +0 -0
  220. data/doc/ex/images/duck6.gif +0 -0
  221. data/doc/ex/images/duck7.gif +0 -0
  222. data/doc/ex/images/duck8.gif +0 -0
  223. data/doc/ex/images/duck9.gif +0 -0
  224. data/doc/ex/images/graydient230x6.gif +0 -0
  225. data/doc/ex/images/image_with_profile.jpg +0 -0
  226. data/doc/ex/images/logo400x83.gif +0 -0
  227. data/doc/ex/images/model.miff +0 -0
  228. data/doc/ex/images/notimplemented.gif +0 -0
  229. data/doc/ex/images/smile.miff +0 -0
  230. data/doc/ex/images/spin.gif +0 -0
  231. data/doc/ex/implode.rb +0 -34
  232. data/doc/ex/level.rb +0 -11
  233. data/doc/ex/level_colors.rb +0 -11
  234. data/doc/ex/line.rb +0 -41
  235. data/doc/ex/line01.rb +0 -21
  236. data/doc/ex/mask.rb +0 -35
  237. data/doc/ex/matte_fill_to_border.rb +0 -39
  238. data/doc/ex/matte_floodfill.rb +0 -32
  239. data/doc/ex/matte_replace.rb +0 -39
  240. data/doc/ex/median_filter.rb +0 -28
  241. data/doc/ex/modulate.rb +0 -11
  242. data/doc/ex/mono.rb +0 -23
  243. data/doc/ex/morph.rb +0 -25
  244. data/doc/ex/mosaic.rb +0 -37
  245. data/doc/ex/motion_blur.rb +0 -11
  246. data/doc/ex/negate.rb +0 -11
  247. data/doc/ex/negate_channel.rb +0 -9
  248. data/doc/ex/nested_rvg.rb +0 -21
  249. data/doc/ex/nonzero.rb +0 -42
  250. data/doc/ex/normalize.rb +0 -11
  251. data/doc/ex/oil_paint.rb +0 -11
  252. data/doc/ex/opacity.rb +0 -37
  253. data/doc/ex/ordered_dither.rb +0 -11
  254. data/doc/ex/path.rb +0 -63
  255. data/doc/ex/pattern1.rb +0 -25
  256. data/doc/ex/pattern2.rb +0 -26
  257. data/doc/ex/polaroid.rb +0 -26
  258. data/doc/ex/polygon.rb +0 -23
  259. data/doc/ex/polygon01.rb +0 -21
  260. data/doc/ex/polyline.rb +0 -22
  261. data/doc/ex/polyline01.rb +0 -21
  262. data/doc/ex/posterize.rb +0 -8
  263. data/doc/ex/preview.rb +0 -8
  264. data/doc/ex/qbezierpath.rb +0 -52
  265. data/doc/ex/quad01.rb +0 -34
  266. data/doc/ex/quantize-m.rb +0 -25
  267. data/doc/ex/radial_blur.rb +0 -9
  268. data/doc/ex/raise.rb +0 -8
  269. data/doc/ex/random_threshold_channel.rb +0 -13
  270. data/doc/ex/rect01.rb +0 -14
  271. data/doc/ex/rect02.rb +0 -20
  272. data/doc/ex/rectangle.rb +0 -34
  273. data/doc/ex/reduce_noise.rb +0 -28
  274. data/doc/ex/remap.rb +0 -11
  275. data/doc/ex/remap_images.rb +0 -19
  276. data/doc/ex/resize_to_fill.rb +0 -8
  277. data/doc/ex/resize_to_fit.rb +0 -8
  278. data/doc/ex/roll.rb +0 -9
  279. data/doc/ex/rotate.rb +0 -44
  280. data/doc/ex/rotate_f.rb +0 -14
  281. data/doc/ex/roundrect.rb +0 -33
  282. data/doc/ex/rubyname.rb +0 -30
  283. data/doc/ex/rvg_clippath.rb +0 -12
  284. data/doc/ex/rvg_linecap.rb +0 -42
  285. data/doc/ex/rvg_linejoin.rb +0 -40
  286. data/doc/ex/rvg_opacity.rb +0 -18
  287. data/doc/ex/rvg_pattern.rb +0 -26
  288. data/doc/ex/rvg_stroke_dasharray.rb +0 -11
  289. data/doc/ex/segment.rb +0 -11
  290. data/doc/ex/sepiatone.rb +0 -7
  291. data/doc/ex/shade.rb +0 -11
  292. data/doc/ex/shadow.rb +0 -30
  293. data/doc/ex/shave.rb +0 -15
  294. data/doc/ex/shear.rb +0 -10
  295. data/doc/ex/sketch.rb +0 -17
  296. data/doc/ex/skewx.rb +0 -51
  297. data/doc/ex/skewy.rb +0 -47
  298. data/doc/ex/smile.rb +0 -126
  299. data/doc/ex/solarize.rb +0 -11
  300. data/doc/ex/sparse_color.rb +0 -55
  301. data/doc/ex/splice.rb +0 -8
  302. data/doc/ex/spread.rb +0 -11
  303. data/doc/ex/stegano.rb +0 -54
  304. data/doc/ex/stroke_dasharray.rb +0 -42
  305. data/doc/ex/stroke_fill.rb +0 -10
  306. data/doc/ex/stroke_linecap.rb +0 -44
  307. data/doc/ex/stroke_linejoin.rb +0 -48
  308. data/doc/ex/stroke_width.rb +0 -49
  309. data/doc/ex/swirl.rb +0 -17
  310. data/doc/ex/text.rb +0 -37
  311. data/doc/ex/text01.rb +0 -16
  312. data/doc/ex/text_align.rb +0 -36
  313. data/doc/ex/text_antialias.rb +0 -37
  314. data/doc/ex/text_styles.rb +0 -19
  315. data/doc/ex/text_undercolor.rb +0 -28
  316. data/doc/ex/texture_fill_to_border.rb +0 -34
  317. data/doc/ex/texture_floodfill.rb +0 -32
  318. data/doc/ex/texturefill.rb +0 -24
  319. data/doc/ex/threshold.rb +0 -13
  320. data/doc/ex/to_blob.rb +0 -13
  321. data/doc/ex/translate.rb +0 -39
  322. data/doc/ex/transparent.rb +0 -38
  323. data/doc/ex/transpose.rb +0 -9
  324. data/doc/ex/transverse.rb +0 -9
  325. data/doc/ex/tref01.rb +0 -24
  326. data/doc/ex/triangle01.rb +0 -15
  327. data/doc/ex/trim.rb +0 -23
  328. data/doc/ex/tspan01.rb +0 -17
  329. data/doc/ex/tspan02.rb +0 -17
  330. data/doc/ex/tspan03.rb +0 -19
  331. data/doc/ex/unsharp_mask.rb +0 -28
  332. data/doc/ex/viewex.rb +0 -33
  333. data/doc/ex/vignette.rb +0 -12
  334. data/doc/ex/watermark.rb +0 -27
  335. data/doc/ex/wave.rb +0 -9
  336. data/doc/ex/wet_floor.rb +0 -58
  337. data/doc/ex/writing_mode01.rb +0 -26
  338. data/doc/ex/writing_mode02.rb +0 -26
  339. data/doc/ilist.html +0 -2056
  340. data/doc/image1.html +0 -4680
  341. data/doc/image2.html +0 -3665
  342. data/doc/image3.html +0 -4522
  343. data/doc/imageattrs.html +0 -1638
  344. data/doc/imusage.html +0 -514
  345. data/doc/index.html +0 -416
  346. data/doc/info.html +0 -1499
  347. data/doc/magick.html +0 -570
  348. data/doc/optequiv.html +0 -2435
  349. data/doc/rvg.html +0 -975
  350. data/doc/rvgclip.html +0 -248
  351. data/doc/rvggroup.html +0 -305
  352. data/doc/rvgimage.html +0 -289
  353. data/doc/rvgpattern.html +0 -475
  354. data/doc/rvgshape.html +0 -406
  355. data/doc/rvgstyle.html +0 -270
  356. data/doc/rvgtext.html +0 -465
  357. data/doc/rvgtspan.html +0 -238
  358. data/doc/rvgtut.html +0 -530
  359. data/doc/rvguse.html +0 -145
  360. data/doc/rvgxform.html +0 -294
  361. data/doc/scripts/doc.js +0 -22
  362. data/doc/scripts/stripeTables.js +0 -23
  363. data/doc/struct.html +0 -1339
  364. data/doc/usage.html +0 -1621
  365. data/examples/constitute.rb +0 -7
  366. data/examples/crop_with_gravity.rb +0 -42
  367. data/examples/demo.rb +0 -323
  368. data/examples/describe.rb +0 -41
  369. data/examples/find_similar_region.rb +0 -34
  370. data/examples/histogram.rb +0 -312
  371. data/examples/identify.rb +0 -174
  372. data/examples/image_opacity.rb +0 -28
  373. data/examples/import_export.rb +0 -31
  374. data/examples/pattern_fill.rb +0 -37
  375. data/examples/rotating_text.rb +0 -45
  376. data/examples/spinner.rb +0 -49
  377. data/examples/thumbnail.rb +0 -64
  378. data/examples/vignette.rb +0 -78
  379. data/lib/obsolete.rb +0 -66
  380. data/spec/rmagick/ImageList1_spec.rb +0 -24
  381. data/spec/rmagick/draw_spec.rb +0 -155
  382. data/spec/rmagick/image/blue_shift_spec.rb +0 -14
  383. data/spec/rmagick/image/channel_entropy_spec.rb +0 -9
  384. data/spec/rmagick/image/composite_spec.rb +0 -72
  385. data/spec/rmagick/image/constitute_spec.rb +0 -13
  386. data/spec/rmagick/image/dispatch_spec.rb +0 -16
  387. data/spec/rmagick/image/from_blob_spec.rb +0 -12
  388. data/spec/rmagick/image/ping_spec.rb +0 -12
  389. data/spec/rmagick/image/properties_spec.rb +0 -27
  390. data/spec/rmagick/image/read_spec.rb +0 -28
  391. data/spec/spec_helper.rb +0 -10
  392. data/spec/support/issue_200/app.rb +0 -8
  393. data/test/Draw.rb +0 -351
  394. data/test/Enum.rb +0 -228
  395. data/test/Fill.rb +0 -93
  396. data/test/Image1.rb +0 -627
  397. data/test/Image2.rb +0 -1426
  398. data/test/Image3.rb +0 -1091
  399. data/test/ImageList1.rb +0 -858
  400. data/test/ImageList2.rb +0 -406
  401. data/test/Image_attributes.rb +0 -666
  402. data/test/Import_Export.rb +0 -115
  403. data/test/Info.rb +0 -444
  404. data/test/KernelInfo.rb +0 -67
  405. data/test/Magick.rb +0 -311
  406. data/test/Pixel.rb +0 -285
  407. data/test/PolaroidOptions.rb +0 -23
  408. data/test/Preview.rb +0 -26
  409. data/test/Struct.rb +0 -45
  410. data/test/appearance/Montage.rb +0 -26
  411. data/test/appearance/appearance_assertion.rb +0 -13
  412. data/test/appearance/expected/montage_border_color.jpg +0 -0
  413. data/test/cmyk.icm +0 -0
  414. data/test/lib/Obsolete.rb +0 -30
  415. data/test/lib/internal/Draw.rb +0 -823
  416. data/test/lib/internal/Geometry.rb +0 -98
  417. data/test/lib/internal/Magick.rb +0 -40
  418. data/test/srgb.icm +0 -0
  419. data/test/test_all_basic.rb +0 -49
  420. data/test/tmpnam_test.rb +0 -50
data/test/Draw.rb DELETED
@@ -1,351 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
- require 'test/unit'
5
- require 'test/unit/ui/console/testrunner'
6
-
7
- class DrawUT < Test::Unit::TestCase
8
- def setup
9
- @draw = Magick::Draw.new
10
- end
11
-
12
- def test_affine
13
- assert_nothing_raised do
14
- @draw.affine = Magick::AffineMatrix.new(1, 2, 3, 4, 5, 6)
15
- end
16
- assert_raise(TypeError) { @draw.affine = [1, 2, 3, 4, 5, 6] }
17
- end
18
-
19
- def test_align
20
- Magick::AlignType.values do |align|
21
- assert_nothing_raised { @draw.align = align }
22
- end
23
- end
24
-
25
- def test_decorate
26
- Magick::DecorationType.values do |decoration|
27
- assert_nothing_raised { @draw.decorate = decoration }
28
- end
29
- end
30
-
31
- def test_density
32
- assert_nothing_raised { @draw.density = '90x90' }
33
- assert_nothing_raised { @draw.density = 'x90' }
34
- assert_nothing_raised { @draw.density = '90' }
35
- assert_raise(TypeError) { @draw.density = 2 }
36
- end
37
-
38
- def test_encoding
39
- assert_nothing_raised { @draw.encoding = 'AdobeCustom' }
40
- assert_raise(TypeError) { @draw.encoding = 2 }
41
- end
42
-
43
- def test_fill
44
- assert_nothing_raised { @draw.fill = 'white' }
45
- assert_nothing_raised { @draw.fill = Magick::Pixel.from_color('white') }
46
- assert_raise(TypeError) { @draw.fill = 2 }
47
- end
48
-
49
- def test_fill_pattern
50
- assert_nothing_raised { @draw.fill_pattern = nil }
51
- assert_nothing_raised do
52
- img1 = Magick::Image.new(10, 10)
53
- img2 = Magick::Image.new(20, 20)
54
-
55
- @draw.fill_pattern = img1
56
- @draw.fill_pattern = img2
57
- end
58
-
59
- assert_raise(NoMethodError) { @draw.fill_pattern = 'x' }
60
- end
61
-
62
- def test_font
63
- assert_nothing_raised { @draw.font = 'Arial-Bold' }
64
- assert_raise(TypeError) { @draw.font = 2 }
65
- end
66
-
67
- def test_font_family
68
- assert_nothing_raised { @draw.font_family = 'Arial' }
69
- assert_raise(TypeError) { @draw.font_family = 2 }
70
- end
71
-
72
- def test_font_stretch
73
- Magick::StretchType.values do |stretch|
74
- assert_nothing_raised { @draw.font_stretch = stretch }
75
- end
76
-
77
- assert_raise(TypeError) { @draw.font_stretch = 2 }
78
- end
79
-
80
- def test_font_style
81
- Magick::StyleType.values do |style|
82
- assert_nothing_raised { @draw.font_style = style }
83
- end
84
-
85
- assert_raise(TypeError) { @draw.font_style = 2 }
86
- end
87
-
88
- def test_font_weight
89
- Magick::WeightType.values do |weight|
90
- assert_nothing_raised { @draw.font_weight = weight }
91
- end
92
-
93
- assert_raise(ArgumentError) { @draw.font_weight = 99 }
94
- assert_raise(ArgumentError) { @draw.font_weight = 901 }
95
- end
96
-
97
- def test_gravity
98
- Magick::GravityType.values do |gravity|
99
- assert_nothing_raised { @draw.gravity = gravity }
100
- end
101
-
102
- assert_raise(TypeError) { @draw.gravity = 2 }
103
- end
104
-
105
- def test_interline_spacing
106
- assert_nothing_raised { @draw.interline_spacing = 2 }
107
- assert_raise(TypeError) { @draw.interline_spacing = 'x' }
108
- end
109
-
110
- def test_interword_spacing
111
- assert_nothing_raised { @draw.interword_spacing = 2 }
112
- assert_raise(TypeError) { @draw.interword_spacing = 'x' }
113
- end
114
-
115
- def test_kerning
116
- assert_nothing_raised { @draw.kerning = 2 }
117
- assert_raise(TypeError) { @draw.kerning = 'x' }
118
- end
119
-
120
- def test_pointsize
121
- assert_nothing_raised { @draw.pointsize = 2 }
122
- assert_raise(TypeError) { @draw.pointsize = 'x' }
123
- end
124
-
125
- def test_rotation
126
- assert_nothing_raised { @draw.rotation = 15 }
127
- assert_raise(TypeError) { @draw.rotation = 'x' }
128
- end
129
-
130
- def test_stroke
131
- assert_nothing_raised { @draw.stroke = Magick::Pixel.from_color('white') }
132
- assert_nothing_raised { @draw.stroke = 'white' }
133
- assert_raise(TypeError) { @draw.stroke = 2 }
134
- end
135
-
136
- def test_stroke_pattern
137
- assert_nothing_raised { @draw.stroke_pattern = nil }
138
- assert_nothing_raised do
139
- img1 = Magick::Image.new(10, 10)
140
- img2 = Magick::Image.new(20, 20)
141
-
142
- @draw.stroke_pattern = img1
143
- @draw.stroke_pattern = img2
144
- end
145
-
146
- assert_raise(NoMethodError) { @draw.stroke_pattern = 'x' }
147
- end
148
-
149
- def test_stroke_width
150
- assert_nothing_raised { @draw.stroke_width = 15 }
151
- assert_raise(TypeError) { @draw.stroke_width = 'x' }
152
- end
153
-
154
- def test_text_antialias
155
- assert_nothing_raised { @draw.text_antialias = true }
156
- assert_nothing_raised { @draw.text_antialias = false }
157
- end
158
-
159
- def test_tile
160
- assert_nothing_raised { @draw.tile = nil }
161
- assert_nothing_raised do
162
- img1 = Magick::Image.new(10, 10)
163
- img2 = Magick::Image.new(20, 20)
164
-
165
- @draw.tile = img1
166
- @draw.tile = img2
167
- end
168
- end
169
-
170
- def test_undercolor
171
- assert_nothing_raised { @draw.undercolor = Magick::Pixel.from_color('white') }
172
- assert_nothing_raised { @draw.undercolor = 'white' }
173
- assert_raise(TypeError) { @draw.undercolor = 2 }
174
- end
175
-
176
- def test_annotate
177
- assert_nothing_raised do
178
- img = Magick::Image.new(10, 10)
179
- @draw.annotate(img, 0, 0, 0, 20, 'Hello world')
180
-
181
- yield_obj = nil
182
- @draw.annotate(img, 100, 100, 20, 20, 'Hello world 2') do |draw|
183
- yield_obj = draw
184
- end
185
- assert_instance_of(Magick::Draw, yield_obj)
186
- end
187
-
188
- assert_raise(TypeError) do
189
- img = Magick::Image.new(10, 10)
190
- @draw.annotate(img, 0, 0, 0, 20, nil)
191
- end
192
-
193
- assert_raise(NoMethodError) { @draw.annotate('x', 0, 0, 0, 20, 'Hello world') }
194
- end
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
-
206
- def test_dup
207
- @draw.path('M110,100 h-75 a75,75 0 1,0 75,-75 z')
208
- @draw.taint
209
- @draw.freeze
210
- dup = @draw.dup
211
- assert_instance_of(Magick::Draw, dup)
212
- end
213
-
214
- def test_clone
215
- @draw.taint
216
- @draw.freeze
217
- clone = @draw.clone
218
- assert_instance_of(Magick::Draw, clone)
219
- end
220
-
221
- def test_composite
222
- img = Magick::Image.new(10, 10)
223
- assert_nothing_raised { @draw.composite(0, 0, 10, 10, img) }
224
-
225
- Magick::CompositeOperator.values do |op|
226
- assert_nothing_raised { @draw.composite(0, 0, 10, 10, img, op) }
227
- end
228
-
229
- assert_raise(TypeError) { @draw.composite('x', 0, 10, 10, img) }
230
- assert_raise(TypeError) { @draw.composite(0, 'y', 10, 10, img) }
231
- assert_raise(TypeError) { @draw.composite(0, 0, 'w', 10, img) }
232
- assert_raise(TypeError) { @draw.composite(0, 0, 10, 'h', img) }
233
- assert_raise(TypeError) { @draw.composite(0, 0, 10, 10, img, Magick::CenterAlign) }
234
- assert_raise(NoMethodError) { @draw.composite(0, 0, 10, 10, 'image') }
235
- assert_raise(ArgumentError) { @draw.composite(0, 0, 10, 10) }
236
- assert_raise(ArgumentError) { @draw.composite(0, 0, 10, 10, img, Magick::ModulusAddCompositeOp, 'x') }
237
- end
238
-
239
- def test_draw
240
- draw = @draw.dup
241
-
242
- img = Magick::Image.new(10, 10)
243
- @draw.path('M110,100 h-75 a75,75 0 1,0 75,-75 z')
244
- assert_nothing_raised { @draw.draw(img) }
245
-
246
- assert_raise(ArgumentError) { draw.draw(img) }
247
- assert_raise(NoMethodError) { draw.draw('x') }
248
- end
249
-
250
- def test_get_type_metrics
251
- img = Magick::Image.new(10, 10)
252
- assert_nothing_raised { @draw.get_type_metrics('ABCDEF') }
253
- assert_nothing_raised { @draw.get_type_metrics(img, 'ABCDEF') }
254
-
255
- assert_raise(ArgumentError) { @draw.get_type_metrics }
256
- assert_raise(ArgumentError) { @draw.get_type_metrics(img, 'ABCDEF', 20) }
257
- assert_raise(ArgumentError) { @draw.get_type_metrics(img, '') }
258
- assert_raise(NoMethodError) { @draw.get_type_metrics('x', 'ABCDEF') }
259
- end
260
-
261
- def test_get_multiline_type_metrics
262
- img = Magick::Image.new(10, 10)
263
- assert_nothing_raised { @draw.get_multiline_type_metrics('ABCDEF') }
264
- assert_nothing_raised { @draw.get_multiline_type_metrics(img, 'ABCDEF') }
265
-
266
- assert_raise(ArgumentError) { @draw.get_multiline_type_metrics }
267
- assert_raise(ArgumentError) { @draw.get_multiline_type_metrics(img, 'ABCDEF', 20) }
268
- assert_raise(ArgumentError) { @draw.get_multiline_type_metrics(img, '') }
269
- end
270
-
271
- def test_inspect
272
- assert_equal('(no primitives defined)', @draw.inspect)
273
-
274
- @draw.path('M110,100 h-75 a75,75 0 1,0 75,-75 z')
275
- @draw.fill('yellow')
276
- assert_equal("path 'M110,100 h-75 a75,75 0 1,0 75,-75 z'\nfill \"yellow\"", @draw.inspect)
277
- end
278
-
279
- def test_marshal
280
- draw = @draw.dup
281
- draw.affine = Magick::AffineMatrix.new(1, 2, 3, 4, 5, 6)
282
- draw.decorate = Magick::LineThroughDecoration
283
- draw.encoding = 'AdobeCustom'
284
- draw.gravity = Magick::CenterGravity
285
- draw.fill = Magick::Pixel.from_color('red')
286
- draw.fill_pattern = Magick::Image.new(10, 10) { self.format = 'miff' }
287
- draw.stroke = Magick::Pixel.from_color('blue')
288
- draw.stroke_width = 5
289
- draw.text_antialias = true
290
- draw.font = 'Arial-Bold'
291
- draw.font_family = 'arial'
292
- draw.font_style = Magick::ItalicStyle
293
- draw.font_stretch = Magick::CondensedStretch
294
- draw.font_weight = Magick::BoldWeight
295
- draw.pointsize = 12
296
- draw.density = '72x72'
297
- draw.align = Magick::CenterAlign
298
- draw.undercolor = Magick::Pixel.from_color('green')
299
- draw.kerning = 10.5
300
- draw.interword_spacing = 3.75
301
-
302
- draw.circle(20, 25, 20, 28)
303
-
304
- dumped = nil
305
- assert_nothing_raised { dumped = draw.marshal_dump }
306
-
307
- draw2 = @draw.dup
308
- assert_nothing_raised do
309
- draw2.marshal_load(dumped)
310
- end
311
- assert_equal(draw.inspect, draw2.inspect)
312
- end
313
-
314
- def test_primitive
315
- assert_nothing_raised { @draw.primitive('ABCDEF') }
316
- assert_nothing_raised { @draw.primitive('12345') }
317
- assert_raise(TypeError) { @draw.primitive(nil) }
318
- end
319
-
320
- def test_draw_options
321
- assert_nothing_raised do
322
- yield_obj = nil
323
-
324
- Magick::Draw.new do |option|
325
- yield_obj = option
326
- end
327
- assert_instance_of(Magick::Image::DrawOptions, yield_obj)
328
- end
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
351
- end
data/test/Enum.rb DELETED
@@ -1,228 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
- require 'test/unit'
5
- require 'test/unit/ui/console/testrunner'
6
-
7
- class EnumUT < Test::Unit::TestCase
8
- def test_new
9
- assert_nothing_raised { Magick::Enum.new(:foo, 42) }
10
- assert_nothing_raised { Magick::Enum.new('foo', 42) }
11
-
12
- assert_raise(TypeError) { Magick::Enum.new(Object.new, 42) }
13
- assert_raise(TypeError) { Magick::Enum.new(:foo, 'x') }
14
- end
15
-
16
- def test_to_s
17
- enum = Magick::Enum.new(:foo, 42)
18
- assert_equal('foo', enum.to_s)
19
-
20
- enum = Magick::Enum.new('foo', 42)
21
- assert_equal('foo', enum.to_s)
22
- end
23
-
24
- def test_to_i
25
- enum = Magick::Enum.new(:foo, 42)
26
- assert_equal(42, enum.to_i)
27
- end
28
-
29
- def test_spaceship
30
- enum1 = Magick::Enum.new(:foo, 42)
31
- enum2 = Magick::Enum.new(:foo, 56)
32
- enum3 = Magick::Enum.new(:foo, 36)
33
- enum4 = Magick::Enum.new(:foo, 42)
34
-
35
- assert_equal(-1, enum1 <=> enum2)
36
- assert_equal(0, enum1 <=> enum4)
37
- assert_equal(1, enum1 <=> enum3)
38
- assert_nil(enum1 <=> 'x')
39
- end
40
-
41
- def test_case_eq
42
- enum1 = Magick::Enum.new(:foo, 42)
43
- enum2 = Magick::Enum.new(:foo, 56)
44
-
45
- assert_true(enum1 === enum1)
46
- assert_false(enum1 === enum2)
47
- assert_false(enum1 === 'x')
48
- end
49
-
50
- def test_bitwise_or
51
- enum1 = Magick::Enum.new(:foo, 42)
52
- enum2 = Magick::Enum.new(:bar, 56)
53
-
54
- enum = enum1 | enum2
55
- assert_equal(58, enum.to_i)
56
- assert_equal('foo|bar', enum.to_s)
57
-
58
- assert_raise(ArgumentError) { enum1 | 'x' }
59
- end
60
-
61
- def test_type_values
62
- assert_instance_of(Array, Magick::AlignType.values)
63
-
64
- assert_equal('UndefinedAlign', Magick::AlignType.values[0].to_s)
65
- assert_equal(0, Magick::AlignType.values[0].to_i)
66
-
67
- Magick::AlignType.values do |enum|
68
- assert_kind_of(Magick::Enum, enum)
69
- assert_instance_of(Magick::AlignType, enum)
70
- end
71
- end
72
-
73
- def test_type_inspect
74
- assert_equal('UndefinedAlign=0', Magick::AlignType.values[0].inspect)
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
228
- end
data/test/Fill.rb DELETED
@@ -1,93 +0,0 @@
1
- #!/usr/bin/env ruby -w
2
-
3
- require 'rmagick'
4
- require 'test/unit'
5
- require 'test/unit/ui/console/testrunner'
6
-
7
- class GradientFillUT < Test::Unit::TestCase
8
- def test_new
9
- assert_instance_of(Magick::GradientFill, Magick::GradientFill.new(0, 0, 0, 100, '#900', '#000'))
10
- assert_instance_of(Magick::GradientFill, Magick::GradientFill.new(0, 0, 0, 100, 'white', 'red'))
11
-
12
- assert_raise(ArgumentError) { Magick::GradientFill.new(0, 0, 0, 100, 'foo', '#000') }
13
- assert_raise(ArgumentError) { Magick::GradientFill.new(0, 0, 0, 100, '#900', 'bar') }
14
- assert_raise(TypeError) { Magick::GradientFill.new('x1', 0, 0, 100, '#900', '#000') }
15
- assert_raise(TypeError) { Magick::GradientFill.new(0, 'y1', 0, 100, '#900', '#000') }
16
- assert_raise(TypeError) { Magick::GradientFill.new(0, 0, 'x2', 100, '#900', '#000') }
17
- assert_raise(TypeError) { Magick::GradientFill.new(0, 0, 0, 'y2', '#900', '#000') }
18
- end
19
-
20
- def test_fill
21
- img = Magick::Image.new(10, 10)
22
-
23
- assert_nothing_raised do
24
- gradient = Magick::GradientFill.new(0, 0, 0, 0, '#900', '#000')
25
- obj = gradient.fill(img)
26
- assert_equal(gradient, obj)
27
- end
28
-
29
- assert_nothing_raised do
30
- gradient = Magick::GradientFill.new(0, 0, 0, 10, '#900', '#000')
31
- obj = gradient.fill(img)
32
- assert_equal(gradient, obj)
33
- end
34
-
35
- assert_nothing_raised do
36
- gradient = Magick::GradientFill.new(0, 0, 10, 0, '#900', '#000')
37
- obj = gradient.fill(img)
38
- assert_equal(gradient, obj)
39
- end
40
-
41
- assert_nothing_raised do
42
- gradient = Magick::GradientFill.new(0, 0, 10, 10, '#900', '#000')
43
- obj = gradient.fill(img)
44
- assert_equal(gradient, obj)
45
- end
46
-
47
- assert_nothing_raised do
48
- gradient = Magick::GradientFill.new(0, 0, 5, 20, '#900', '#000')
49
- obj = gradient.fill(img)
50
- assert_equal(gradient, obj)
51
- end
52
-
53
- assert_nothing_raised do
54
- gradient = Magick::GradientFill.new(-10, 0, -10, 10, '#900', '#000')
55
- obj = gradient.fill(img)
56
- assert_equal(gradient, obj)
57
- end
58
-
59
- assert_nothing_raised do
60
- gradient = Magick::GradientFill.new(0, -10, 10, -10, '#900', '#000')
61
- obj = gradient.fill(img)
62
- assert_equal(gradient, obj)
63
- end
64
-
65
- assert_nothing_raised do
66
- gradient = Magick::GradientFill.new(0, -10, 10, -20, '#900', '#000')
67
- obj = gradient.fill(img)
68
- assert_equal(gradient, obj)
69
- end
70
-
71
- assert_nothing_raised do
72
- gradient = Magick::GradientFill.new(0, 100, 100, 200, '#900', '#000')
73
- obj = gradient.fill(img)
74
- assert_equal(gradient, obj)
75
- end
76
- end
77
- end
78
-
79
- class TextureFillUT < Test::Unit::TestCase
80
- def test_new
81
- granite = Magick::Image.read('granite:').first
82
- assert_instance_of(Magick::TextureFill, Magick::TextureFill.new(granite))
83
- end
84
-
85
- def test_fill
86
- granite = Magick::Image.read('granite:').first
87
- texture = Magick::TextureFill.new(granite)
88
-
89
- img = Magick::Image.new(10, 10)
90
- obj = texture.fill(img)
91
- assert_equal(texture, obj)
92
- end
93
- end