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/ImageList1.rb DELETED
@@ -1,858 +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 ImageList1UT < Test::Unit::TestCase
8
- def setup
9
- @list = Magick::ImageList.new(*FILES[0..9])
10
- @list2 = Magick::ImageList.new # intersection is 5..9
11
- @list2 << @list[5]
12
- @list2 << @list[6]
13
- @list2 << @list[7]
14
- @list2 << @list[8]
15
- @list2 << @list[9]
16
- end
17
-
18
- def test_combine
19
- red = Magick::Image.new(20, 20) { self.background_color = 'red' }
20
- green = Magick::Image.new(20, 20) { self.background_color = 'green' }
21
- blue = Magick::Image.new(20, 20) { self.background_color = 'blue' }
22
- black = Magick::Image.new(20, 20) { self.background_color = 'black' }
23
- alpha = Magick::Image.new(20, 20) { self.background_color = 'transparent' }
24
-
25
- list = Magick::ImageList.new
26
- assert_raise(ArgumentError) { list.combine }
27
-
28
- list << red
29
- assert_nothing_raised { list.combine }
30
-
31
- res = list.combine
32
- assert_instance_of(Magick::Image, res)
33
-
34
- list << alpha
35
- assert_nothing_raised { list.combine }
36
-
37
- list.pop
38
- list << green
39
- list << blue
40
- assert_nothing_raised { list.combine }
41
-
42
- list << alpha
43
- assert_nothing_raised { list.combine }
44
-
45
- list.pop
46
- list << black
47
- assert_nothing_raised { list.combine(Magick::CMYKColorspace) }
48
- assert_nothing_raised { list.combine(Magick::SRGBColorspace) }
49
-
50
- list << alpha
51
- assert_nothing_raised { list.combine(Magick::CMYKColorspace) }
52
- assert_raise(ArgumentError) { list.combine(Magick::SRGBColorspace) }
53
-
54
- list << alpha
55
- assert_raise(ArgumentError) { list.combine }
56
-
57
- assert_raise(TypeError) { list.combine(nil) }
58
- assert_raise(ArgumentError) { list.combine(Magick::SRGBColorspace, 1) }
59
- end
60
-
61
- def test_composite_layers
62
- assert_nothing_raised { @list.composite_layers(@list2) }
63
- Magick::CompositeOperator.values do |op|
64
- assert_nothing_raised { @list.composite_layers(@list2, op) }
65
- end
66
-
67
- assert_raise(ArgumentError) { @list.composite_layers(@list2, Magick::ModulusAddCompositeOp, 42) }
68
- end
69
-
70
- def test_delay
71
- assert_nothing_raised { @list.delay }
72
- assert_equal(0, @list.delay)
73
- assert_nothing_raised { @list.delay = 20 }
74
- assert_equal(20, @list.delay)
75
- assert_raise(ArgumentError) { @list.delay = 'x' }
76
- end
77
-
78
- def test_flatten_images
79
- assert_nothing_raised { @list.flatten_images }
80
- end
81
-
82
- def test_ticks_per_second
83
- assert_nothing_raised { @list.ticks_per_second }
84
- assert_equal(100, @list.ticks_per_second)
85
- assert_nothing_raised { @list.ticks_per_second = 1000 }
86
- assert_equal(1000, @list.ticks_per_second)
87
- assert_raise(ArgumentError) { @list.ticks_per_second = 'x' }
88
- end
89
-
90
- def test_iterations
91
- assert_nothing_raised { @list.iterations }
92
- assert_kind_of(Integer, @list.iterations)
93
- assert_nothing_raised { @list.iterations = 20 }
94
- assert_equal(20, @list.iterations)
95
- assert_raise(ArgumentError) { @list.iterations = 'x' }
96
- end
97
-
98
- # also tests #size
99
- def test_length
100
- assert_nothing_raised { @list.length }
101
- assert_equal(10, @list.length)
102
- assert_raise(NoMethodError) { @list.length = 2 }
103
- end
104
-
105
- def test_scene
106
- assert_nothing_raised { @list.scene }
107
- assert_equal(9, @list.scene)
108
- assert_nothing_raised { @list.scene = 0 }
109
- assert_equal(0, @list.scene)
110
- assert_nothing_raised { @list.scene = 1 }
111
- assert_equal(1, @list.scene)
112
- assert_raise(IndexError) { @list.scene = -1 }
113
- assert_raise(IndexError) { @list.scene = 1000 }
114
- assert_raise(IndexError) { @list.scene = nil }
115
-
116
- # allow nil on empty list
117
- empty_list = Magick::ImageList.new
118
- assert_nothing_raised { empty_list.scene = nil }
119
- end
120
-
121
- def test_undef_array_methods
122
- assert_raise(NoMethodError) { @list.assoc }
123
- assert_raise(NoMethodError) { @list.flatten }
124
- assert_raise(NoMethodError) { @list.flatten! }
125
- assert_raise(NoMethodError) { @list.join }
126
- assert_raise(NoMethodError) { @list.pack }
127
- assert_raise(NoMethodError) { @list.rassoc }
128
- end
129
-
130
- def test_all
131
- q = nil
132
- assert_nothing_raised { q = @list.all? { |i| i.class == Magick::Image } }
133
- assert(q)
134
- end
135
-
136
- def test_any
137
- q = nil
138
- assert_nothing_raised { q = @list.all? { |_i| false } }
139
- assert(!q)
140
- assert_nothing_raised { q = @list.all? { |i| i.class == Magick::Image } }
141
- assert(q)
142
- end
143
-
144
- def test_aref
145
- assert_nothing_raised { @list[0] }
146
- assert_instance_of(Magick::Image, @list[0])
147
- assert_instance_of(Magick::Image, @list[-1])
148
- assert_instance_of(Magick::ImageList, @list[0, 1])
149
- assert_instance_of(Magick::ImageList, @list[0..2])
150
- assert_nil(@list[20])
151
- end
152
-
153
- def test_aset
154
- img = Magick::Image.new(5, 5)
155
- assert_nothing_raised do
156
- rv = @list[0] = img
157
- assert_same(img, rv)
158
- assert_same(img, @list[0])
159
- assert_equal(0, @list.scene)
160
- end
161
-
162
- # replace 2 images with 1
163
- assert_nothing_raised do
164
- img = Magick::Image.new(5, 5)
165
- rv = @list[1, 2] = img
166
- assert_same(img, rv)
167
- assert_equal(9, @list.length)
168
- assert_same(img, @list[1])
169
- assert_equal(1, @list.scene)
170
- end
171
-
172
- # replace 1 image with 2
173
- assert_nothing_raised do
174
- img = Magick::Image.new(5, 5)
175
- img2 = Magick::Image.new(5, 5)
176
- ary = [img, img2]
177
- rv = @list[3, 1] = ary
178
- assert_same(ary, rv)
179
- assert_equal(10, @list.length)
180
- assert_same(img, @list[3])
181
- assert_same(img2, @list[4])
182
- assert_equal(4, @list.scene)
183
- end
184
-
185
- assert_nothing_raised do
186
- img = Magick::Image.new(5, 5)
187
- rv = @list[5..6] = img
188
- assert_same(img, rv)
189
- assert_equal(9, @list.length)
190
- assert_same(img, @list[5])
191
- assert_equal(5, @list.scene)
192
- end
193
-
194
- assert_nothing_raised do
195
- ary = [img, img]
196
- rv = @list[7..8] = ary
197
- assert_same(ary, rv)
198
- assert_equal(9, @list.length)
199
- assert_same(img, @list[7])
200
- assert_same(img, @list[8])
201
- assert_equal(8, @list.scene)
202
- end
203
-
204
- assert_nothing_raised do
205
- rv = @list[-1] = img
206
- assert_same(img, rv)
207
- assert_equal(9, @list.length)
208
- assert_same(img, @list[8])
209
- assert_equal(8, @list.scene)
210
- end
211
-
212
- assert_raise(ArgumentError) { @list[0] = 1 }
213
- assert_raise(ArgumentError) { @list[0, 1] = [1, 2] }
214
- assert_raise(ArgumentError) { @list[2..3] = 'x' }
215
- end
216
-
217
- def test_and
218
- @list.scene = 7
219
- cur = @list.cur_image
220
- assert_nothing_raised do
221
- res = @list & @list2
222
- assert_instance_of(Magick::ImageList, res)
223
- assert_not_same(res, @list)
224
- assert_not_same(res, @list2)
225
- assert_equal(5, res.length)
226
- assert_equal(2, res.scene)
227
- assert_same(cur, res.cur_image)
228
- end
229
-
230
- # current scene not in the result, set result scene to last image in result
231
- @list.scene = 2
232
- assert_nothing_raised do
233
- res = @list & @list2
234
- assert_instance_of(Magick::ImageList, res)
235
- assert_equal(4, res.scene)
236
- end
237
-
238
- assert_raise(ArgumentError) { @list & 2 }
239
- end
240
-
241
- def test_at
242
- assert_nothing_raised do
243
- cur = @list.cur_image
244
- img = @list.at(7)
245
- assert_same(img, @list[7])
246
- assert_same(cur, @list.cur_image)
247
- img = @list.at(10)
248
- assert_nil(img)
249
- assert_same(cur, @list.cur_image)
250
- img = @list.at(-1)
251
- assert_same(img, @list[9])
252
- assert_same(cur, @list.cur_image)
253
- end
254
- end
255
-
256
- def test_star
257
- @list.scene = 7
258
- cur = @list.cur_image
259
- assert_nothing_raised do
260
- res = @list * 2
261
- assert_instance_of(Magick::ImageList, res)
262
- assert_equal(20, res.length)
263
- assert_not_same(res, @list)
264
- assert_same(cur, res.cur_image)
265
- end
266
-
267
- assert_raise(ArgumentError) { @list * 'x' }
268
- end
269
-
270
- def test_plus
271
- @list.scene = 7
272
- cur = @list.cur_image
273
- assert_nothing_raised do
274
- res = @list + @list2
275
- assert_instance_of(Magick::ImageList, res)
276
- assert_equal(15, res.length)
277
- assert_not_same(res, @list)
278
- assert_not_same(res, @list2)
279
- assert_same(cur, res.cur_image)
280
- end
281
-
282
- assert_raise(ArgumentError) { @list + [2] }
283
- end
284
-
285
- def test_minus
286
- @list.scene = 0
287
- cur = @list.cur_image
288
- assert_nothing_raised do
289
- res = @list - @list2
290
- assert_instance_of(Magick::ImageList, res)
291
- assert_equal(5, res.length)
292
- assert_not_same(res, @list)
293
- assert_not_same(res, @list2)
294
- assert_same(cur, res.cur_image)
295
- end
296
-
297
- # current scene not in result - set result scene to last image in result
298
- @list.scene = 7
299
- cur = @list.cur_image
300
- assert_nothing_raised do
301
- res = @list - @list2
302
- assert_instance_of(Magick::ImageList, res)
303
- assert_equal(5, res.length)
304
- assert_equal(4, res.scene)
305
- end
306
- end
307
-
308
- def test_catenate
309
- assert_nothing_raised do
310
- @list2.each { |img| @list << img }
311
- assert_equal(15, @list.length)
312
- assert_equal(14, @list.scene)
313
- end
314
-
315
- assert_raise(ArgumentError) { @list << 2 }
316
- assert_raise(ArgumentError) { @list << [2] }
317
- end
318
-
319
- def test_or
320
- assert_nothing_raised do
321
- @list.scene = 7
322
- # The or of these two lists should be the same as @list
323
- # but not be the *same* list
324
- res = @list | @list2
325
- assert_instance_of(Magick::ImageList, res)
326
- assert_not_same(res, @list)
327
- assert_not_same(res, @list2)
328
- assert_equal(res, @list)
329
- end
330
-
331
- # Try or'ing disjoint lists
332
- temp_list = Magick::ImageList.new(*FILES[10..14])
333
- res = @list | temp_list
334
- assert_instance_of(Magick::ImageList, res)
335
- assert_equal(15, res.length)
336
- assert_equal(7, res.scene)
337
-
338
- assert_raise(ArgumentError) { @list | 2 }
339
- assert_raise(ArgumentError) { @list | [2] }
340
- end
341
-
342
- def test_clear
343
- assert_nothing_raised { @list.clear }
344
- assert_instance_of(Magick::ImageList, @list)
345
- assert_equal(0, @list.length)
346
- assert_nil(@list.scene)
347
- end
348
-
349
- def test_collect
350
- assert_nothing_raised do
351
- scene = @list.scene
352
- res = @list.collect(&:negate)
353
- assert_instance_of(Magick::ImageList, res)
354
- assert_not_same(res, @list)
355
- assert_equal(scene, res.scene)
356
- end
357
- assert_nothing_raised do
358
- scene = @list.scene
359
- @list.collect!(&:negate)
360
- assert_instance_of(Magick::ImageList, @list)
361
- assert_equal(scene, @list.scene)
362
- end
363
- end
364
-
365
- def test_compact
366
- assert_nothing_raised do
367
- res = @list.compact
368
- assert_not_same(res, @list)
369
- assert_equal(res, @list)
370
- end
371
- assert_nothing_raised do
372
- res = @list
373
- @list.compact!
374
- assert_instance_of(Magick::ImageList, @list)
375
- assert_equal(res, @list)
376
- assert_same(res, @list)
377
- end
378
- end
379
-
380
- def test_concat
381
- assert_nothing_raised do
382
- res = @list.concat(@list2)
383
- assert_instance_of(Magick::ImageList, res)
384
- assert_equal(15, res.length)
385
- assert_same(res[14], res.cur_image)
386
- end
387
- assert_raise(ArgumentError) { @list.concat(2) }
388
- assert_raise(ArgumentError) { @list.concat([2]) }
389
- end
390
-
391
- def test_delete
392
- assert_nothing_raised do
393
- cur = @list.cur_image
394
- img = @list[7]
395
- assert_same(img, @list.delete(img))
396
- assert_equal(9, @list.length)
397
- assert_same(cur, @list.cur_image)
398
-
399
- # Try deleting the current image.
400
- assert_same(cur, @list.delete(cur))
401
- assert_same(@list[-1], @list.cur_image)
402
-
403
- assert_raise(ArgumentError) { @list.delete(2) }
404
- assert_raise(ArgumentError) { @list.delete([2]) }
405
-
406
- # Try deleting something that isn't in the list.
407
- # Should return the value of the block.
408
- assert_nothing_raised do
409
- img = Magick::Image.read(FILES[10]).first
410
- res = @list.delete(img) { 1 }
411
- assert_equal(1, res)
412
- end
413
- end
414
- end
415
-
416
- def test_delete_at
417
- @list.scene = 7
418
- cur = @list.cur_image
419
- assert_nothing_raised { @list.delete_at(9) }
420
- assert_same(cur, @list.cur_image)
421
- assert_nothing_raised { @list.delete_at(7) }
422
- assert_same(@list[-1], @list.cur_image)
423
- end
424
-
425
- def test_delete_if
426
- @list.scene = 7
427
- cur = @list.cur_image
428
- assert_nothing_raised do
429
- @list.delete_if { |img| File.basename(img.filename) =~ /5/ }
430
- assert_instance_of(Magick::ImageList, @list)
431
- assert_equal(9, @list.length)
432
- assert_same(cur, @list.cur_image)
433
- end
434
-
435
- # Delete the current image
436
- assert_nothing_raised do
437
- @list.delete_if { |img| File.basename(img.filename) =~ /7/ }
438
- assert_instance_of(Magick::ImageList, @list)
439
- assert_equal(8, @list.length)
440
- assert_same(@list[-1], @list.cur_image)
441
- end
442
- end
443
-
444
- # defined by Enumerable
445
- def test_enumerables
446
- assert_nothing_raised { @list.detect { true } }
447
- assert_nothing_raised do
448
- @list.each_with_index { |img, _n| assert_instance_of(Magick::Image, img) }
449
- end
450
- assert_nothing_raised { @list.entries }
451
- assert_nothing_raised { @list.include?(@list[0]) }
452
- assert_nothing_raised { @list.inject(0) { 0 } }
453
- assert_nothing_raised { @list.max }
454
- assert_nothing_raised { @list.min }
455
- assert_nothing_raised { @list.sort }
456
- assert_nothing_raised { @list.sort_by(&:signature) }
457
- assert_nothing_raised { @list.zip }
458
- end
459
-
460
- def test_eql?
461
- list2 = @list
462
- assert(@list.eql?(list2))
463
- list2 = @list.copy
464
- assert(!@list.eql?(list2))
465
- end
466
-
467
- def test_fill
468
- list = @list.copy
469
- img = list[0].copy
470
- assert_nothing_raised do
471
- assert_instance_of(Magick::ImageList, list.fill(img))
472
- end
473
- list.each { |el| assert_same(el, img) }
474
-
475
- list = @list.copy
476
- list.fill(img, 0, 3)
477
- 0.upto(2) { |i| assert_same(img, list[i]) }
478
-
479
- list = @list.copy
480
- list.fill(img, 4..7)
481
- 4.upto(7) { |i| assert_same(img, list[i]) }
482
-
483
- list = @list.copy
484
- list.fill { |i| list[i] = img }
485
- list.each { |el| assert_same(el, img) }
486
-
487
- list = @list.copy
488
- list.fill(0, 3) { |i| list[i] = img }
489
- 0.upto(2) { |i| assert_same(img, list[i]) }
490
-
491
- assert_raise(ArgumentError) { list.fill('x', 0) }
492
- end
493
-
494
- def test_find
495
- assert_nothing_raised { @list.find { true } }
496
- end
497
-
498
- def find_all
499
- assert_nothing_raised do
500
- res = @list.select { |img| File.basename(img.filename) =~ /Button_2/ }
501
- assert_instance_of(Magick::ImageList, res)
502
- assert_equal(1, res.length)
503
- assert_same(res[0], @list[2])
504
- end
505
- end
506
-
507
- def test_insert
508
- assert_nothing_raised do
509
- @list.scene = 7
510
- cur = @list.cur_image
511
- assert_instance_of(Magick::ImageList, @list.insert(1, @list[2]))
512
- assert_same(cur, @list.cur_image)
513
- @list.insert(1, @list[2], @list[3], @list[4])
514
- assert_same(cur, @list.cur_image)
515
- end
516
-
517
- assert_raise(ArgumentError) { @list.insert(0, 'x') }
518
- assert_raise(ArgumentError) { @list.insert(0, 'x', 'y') }
519
- end
520
-
521
- def test_last
522
- img = Magick::Image.new(5, 5)
523
- @list << img
524
- img2 = nil
525
- assert_nothing_raised { img2 = @list.last }
526
- assert_instance_of(Magick::Image, img2)
527
- assert_equal(img2, img)
528
- img2 = Magick::Image.new(5, 5)
529
- @list << img2
530
- ilist = nil
531
- assert_nothing_raised { ilist = @list.last(2) }
532
- assert_instance_of(Magick::ImageList, ilist)
533
- assert_equal(2, ilist.length)
534
- assert_equal(1, ilist.scene)
535
- assert_equal(img, ilist[0])
536
- assert_equal(img2, ilist[1])
537
- end
538
-
539
- def test___map__
540
- img = @list[0]
541
- assert_nothing_raised do
542
- @list.__map__ { |_x| img }
543
- end
544
- assert_instance_of(Magick::ImageList, @list)
545
- assert_raise(ArgumentError) { @list.__map__ { 2 } }
546
- end
547
-
548
- def test_map!
549
- img = @list[0]
550
- assert_nothing_raised do
551
- @list.map! { img }
552
- end
553
- assert_instance_of(Magick::ImageList, @list)
554
- assert_raise(ArgumentError) { @list.map! { 2 } }
555
- end
556
-
557
- def test_partition
558
- a = nil
559
- n = -1
560
- assert_nothing_raised do
561
- a = @list.partition do
562
- n += 1
563
- (n & 1).zero?
564
- end
565
- end
566
- assert_instance_of(Array, a)
567
- assert_equal(2, a.size)
568
- assert_instance_of(Magick::ImageList, a[0])
569
- assert_instance_of(Magick::ImageList, a[1])
570
- assert_equal(4, a[0].scene)
571
- assert_equal(5, a[0].length)
572
- assert_equal(4, a[1].scene)
573
- assert_equal(5, a[1].length)
574
- end
575
-
576
- def test_pop
577
- @list.scene = 8
578
- cur = @list.cur_image
579
- last = @list[-1]
580
- assert_nothing_raised do
581
- assert_same(last, @list.pop)
582
- assert_same(cur, @list.cur_image)
583
- end
584
-
585
- assert_same(cur, @list.pop)
586
- assert_same(@list[-1], @list.cur_image)
587
- end
588
-
589
- def test_push
590
- list = @list
591
- img1 = @list[0]
592
- img2 = @list[1]
593
- assert_nothing_raised { @list.push(img1, img2) }
594
- assert_same(list, @list) # push returns self
595
- assert_same(img2, @list.cur_image)
596
- end
597
-
598
- def test_reject
599
- @list.scene = 7
600
- cur = @list.cur_image
601
- list = @list
602
- assert_nothing_raised do
603
- res = @list.reject { |img| File.basename(img.filename) =~ /Button_9/ }
604
- assert_equal(9, res.length)
605
- assert_instance_of(Magick::ImageList, res)
606
- assert_same(cur, res.cur_image)
607
- end
608
- assert_same(list, @list)
609
- assert_same(cur, @list.cur_image)
610
-
611
- # Omit current image from result list - result cur_image s/b last image
612
- res = @list.reject { |img| File.basename(img.filename) =~ /Button_7/ }
613
- assert_equal(9, res.length)
614
- assert_same(res[-1], res.cur_image)
615
- assert_same(cur, @list.cur_image)
616
- end
617
-
618
- def test_reject!
619
- @list.scene = 7
620
- cur = @list.cur_image
621
- assert_nothing_raised do
622
- @list.reject! { |img| File.basename(img.filename) =~ /5/ }
623
- assert_instance_of(Magick::ImageList, @list)
624
- assert_equal(9, @list.length)
625
- assert_same(cur, @list.cur_image)
626
- end
627
-
628
- # Delete the current image
629
- assert_nothing_raised do
630
- @list.reject! { |img| File.basename(img.filename) =~ /7/ }
631
- assert_instance_of(Magick::ImageList, @list)
632
- assert_equal(8, @list.length)
633
- assert_same(@list[-1], @list.cur_image)
634
- end
635
-
636
- # returns nil if no changes are made
637
- assert_nil(@list.reject! { false })
638
- end
639
-
640
- def test_replace1
641
- # Replace with empty list
642
- assert_nothing_raised do
643
- res = @list.replace([])
644
- assert_same(res, @list)
645
- assert_equal(0, @list.length)
646
- assert_nil(@list.scene)
647
- end
648
-
649
- # Replace empty list with non-empty list
650
- temp = Magick::ImageList.new
651
- assert_nothing_raised do
652
- temp.replace(@list2)
653
- assert_equal(5, temp.length)
654
- assert_equal(4, temp.scene)
655
- end
656
-
657
- # Try to replace with illegal values
658
- assert_raise(ArgumentError) { @list.replace([1, 2, 3]) }
659
- end
660
-
661
- def test_replace2
662
- # Replace with shorter list
663
- assert_nothing_raised do
664
- @list.scene = 7
665
- cur = @list.cur_image
666
- res = @list.replace(@list2)
667
- assert_same(res, @list)
668
- assert_equal(5, @list.length)
669
- assert_equal(2, @list.scene)
670
- assert_same(cur, @list.cur_image)
671
- end
672
- end
673
-
674
- def test_replace3
675
- # Replace with longer list
676
- assert_nothing_raised do
677
- @list2.scene = 2
678
- cur = @list2.cur_image
679
- res = @list2.replace(@list)
680
- assert_same(res, @list2)
681
- assert_equal(10, @list2.length)
682
- assert_equal(7, @list2.scene)
683
- assert_same(cur, @list2.cur_image)
684
- end
685
- end
686
-
687
- def test_reverse
688
- list = nil
689
- cur = @list.cur_image
690
- assert_nothing_raised { list = @list.reverse }
691
- assert_equal(list.length, @list.length)
692
- assert_same(cur, @list.cur_image)
693
- end
694
-
695
- def test_reverse!
696
- list = @list
697
- cur = @list.cur_image
698
- assert_nothing_raised { @list.reverse! }
699
- assert_same(list, @list)
700
- assert_same(cur, @list.cur_image)
701
- end
702
-
703
- # Just validate its existence
704
- def test_reverse_each
705
- assert_nothing_raised do
706
- @list.reverse_each { |img| assert_instance_of(Magick::Image, img) }
707
- end
708
- end
709
-
710
- def test_rindex
711
- img = @list.last
712
- n = nil
713
- assert_nothing_raised { n = @list.rindex(img) }
714
- assert_equal(9, n)
715
- end
716
-
717
- def test_select
718
- assert_nothing_raised do
719
- res = @list.select { |img| File.basename(img.filename) =~ /Button_2/ }
720
- assert_instance_of(Magick::ImageList, res)
721
- assert_equal(1, res.length)
722
- assert_same(res[0], @list[2])
723
- end
724
- end
725
-
726
- def test_shift
727
- assert_nothing_raised do
728
- @list.scene = 0
729
- res = @list[0]
730
- img = @list.shift
731
- assert_same(res, img)
732
- assert_equal(8, @list.scene)
733
- end
734
- res = @list[0]
735
- img = @list.shift
736
- assert_same(res, img)
737
- assert_equal(7, @list.scene)
738
- end
739
-
740
- def test_slice
741
- assert_nothing_raised { @list.slice(0) }
742
- assert_nothing_raised { @list.slice(-1) }
743
- assert_nothing_raised { @list.slice(0, 1) }
744
- assert_nothing_raised { @list.slice(0..2) }
745
- assert_nothing_raised { @list.slice(20) }
746
- end
747
-
748
- def test_slice!
749
- @list.scene = 7
750
- assert_nothing_raised do
751
- img0 = @list[0]
752
- img = @list.slice!(0)
753
- assert_same(img0, img)
754
- assert_equal(9, @list.length)
755
- assert_equal(6, @list.scene)
756
- end
757
- cur = @list.cur_image
758
- img = @list.slice!(6)
759
- assert_same(cur, img)
760
- assert_equal(8, @list.length)
761
- assert_equal(7, @list.scene)
762
- assert_nothing_raised { @list.slice!(-1) }
763
- assert_nothing_raised { @list.slice!(0, 1) }
764
- assert_nothing_raised { @list.slice!(0..2) }
765
- assert_nothing_raised { @list.slice!(20) }
766
- end
767
-
768
- # simply ensure existence
769
- def test_sort
770
- assert_nothing_raised { @list.sort }
771
- assert_nothing_raised { @list.sort! }
772
- end
773
-
774
- def test_to_a
775
- a = nil
776
- assert_nothing_raised { a = @list.to_a }
777
- assert_instance_of(Array, a)
778
- assert_equal(10, a.length)
779
- end
780
-
781
- def test_uniq
782
- assert_nothing_raised { @list.uniq }
783
- assert_instance_of(Magick::ImageList, @list.uniq)
784
- @list[1] = @list[0]
785
- @list.scene = 7
786
- list = @list.uniq
787
- assert_equal(9, list.length)
788
- assert_equal(6, list.scene)
789
- assert_equal(7, @list.scene)
790
- @list[6] = @list[7]
791
- list = @list.uniq
792
- assert_equal(8, list.length)
793
- assert_equal(5, list.scene)
794
- assert_equal(7, @list.scene)
795
- end
796
-
797
- def test_uniq!
798
- assert_nothing_raised do
799
- assert_nil(@list.uniq!)
800
- end
801
- @list[1] = @list[0]
802
- @list.scene = 7
803
- cur = @list.cur_image
804
- list = @list
805
- @list.uniq!
806
- assert_same(list, @list)
807
- assert_same(cur, @list.cur_image)
808
- assert_equal(6, @list.scene)
809
- @list[5] = @list[6]
810
- @list.uniq!
811
- assert_same(cur, @list.cur_image)
812
- assert_equal(5, @list.scene)
813
- end
814
-
815
- def test_unshift
816
- img = @list[9]
817
- @list.scene = 7
818
- @list.unshift(img)
819
- assert_equal(0, @list.scene)
820
- assert_raise(ArgumentError) { @list.unshift(2) }
821
- assert_raise(ArgumentError) { @list.unshift([1, 2]) }
822
- end
823
-
824
- def test_values_at
825
- ilist = nil
826
- assert_nothing_raised { ilist = @list.values_at(1, 3, 5) }
827
- assert_instance_of(Magick::ImageList, ilist)
828
- assert_equal(3, ilist.length)
829
- assert_equal(2, ilist.scene)
830
- end
831
-
832
- def test_spaceship
833
- list2 = @list.copy
834
- assert_equal(@list.scene, list2.scene)
835
- assert_equal(@list, list2)
836
- list2.scene = 0
837
- assert_not_equal(@list, list2)
838
- list2 = @list.copy
839
- list2[9] = list2[0]
840
- assert_not_equal(@list, list2)
841
- list2 = @list.copy
842
- list2 << @list[9]
843
- assert_not_equal(@list, list2)
844
-
845
- assert_raise(TypeError) { @list <=> 2 }
846
- list = Magick::ImageList.new
847
- list2 = Magick::ImageList.new
848
- assert_raise(TypeError) { list2 <=> @list }
849
- assert_raise(TypeError) { @list <=> list2 }
850
- assert_nothing_raised(TypeError) { list <=> list2 }
851
- end
852
- end
853
-
854
- if $PROGRAM_NAME == __FILE__
855
- IMAGES_DIR = '../doc/ex/images'
856
- FILES = Dir[IMAGES_DIR + '/Button_*.gif'].sort
857
- Test::Unit::UI::Console::TestRunner.run(ImageList1UT)
858
- end