#!/usr/bin/env ruby -w require 'rmagick' require 'test/unit' require 'test/unit/ui/console/testrunner' unless RUBY_VERSION[/^1\.9|^2/] class Magick::Draw def self._dummy_img_ @@_dummy_img_ end end class Draw_UT < Test::Unit::TestCase def setup @draw = Magick::Draw.new end # Ensure @@_dummy_img_ class var is working properly def test_dummy_img # initially this variable is not defined. assert_raise(NameError) do Magick::Draw._dummy_img_ end # cause it to become defined. save the object id. @draw.get_type_metrics('ABCDEF') dummy = nil assert_nothing_raised do dummy = Magick::Draw._dummy_img_ end assert_instance_of(Magick::Image, dummy) # ensure that it is always the same object @draw.get_type_metrics('ABCDEF') dummy2 = nil assert_nothing_raised do dummy2 = Magick::Draw._dummy_img_ end assert_same(dummy, dummy2) end def test_kerning assert_nothing_raised { @draw.kerning = 1 } assert_nothing_raised { @draw.kerning(1) } assert_raise(ArgumentError) { @draw.kerning('a') } assert_raise(TypeError) { @draw.kerning([]) } end def test_interline_spacing assert_nothing_raised { @draw.interline_spacing = 1 } assert_nothing_raised { @draw.interline_spacing(1) } assert_raise(ArgumentError) { @draw.interline_spacing('a') } assert_raise(TypeError) { @draw.interline_spacing([]) } end def test_interword_spacing assert_nothing_raised { @draw.interword_spacing = 1 } assert_nothing_raised { @draw.interword_spacing(1) } assert_raise(ArgumentError) { @draw.interword_spacing('a') } assert_raise(TypeError) { @draw.interword_spacing([]) } end def assert_marshal rose = Magick::Image.read('rose:').first granite = Magick::Image.read('granite:').first s = granite.to_blob {self.format='miff'} granite = Magick::Image.from_blob(s).first blue_stroke = Magick::Image.new(20,20) {self.background_color = 'blue'} s = blue_stroke.to_blob {self.format='miff'} blue_stroke = Magick::Image.from_blob(s).first @draw.affine = Magick::AffineMatrix.new(1, 2, 3, 4, 5, 6) @draw.decorate = Magick::LineThroughDecoration @draw.encoding = 'AdobeCustom' @draw.gravity = Magick::CenterGravity @draw.fill = Magick::Pixel.from_color('red') @draw.stroke = Magick::Pixel.from_color('blue') @draw.stroke_width = 5 @draw.fill_pattern = granite @draw.stroke_pattern = blue_stroke @draw.text_antialias = true @draw.font = 'Arial-Bold' @draw.font_family = 'arial' @draw.font_style = Magick::ItalicStyle @draw.font_stretch = Magick::CondensedStretch @draw.font_weight = Magick::BoldWeight @draw.pointsize = 12 @draw.density = '72x72' @draw.align = Magick::CenterAlign @draw.undercolor = Magick::Pixel.from_color('green') @draw.kerning = 10.5 @draw.interword_spacing = 3.75 @draw.circle(20, 25, 20, 28) dumped = nil assert_nothing_raised { dumped = Marshal.dump(@draw) } assert_nothing_raised { Marshal.load(dumped) } end def test_patterns img = Magick::Image.new(20,20) assert_nothing_raised { @draw.fill_pattern = img } assert_nothing_raised { @draw.stroke_pattern = img } ilist = Magick::ImageList.new ilist << img assert_nothing_raised { @draw.fill_pattern = ilist } assert_nothing_raised { @draw.stroke_pattern = ilist } assert_raise(NoMethodError) { @draw.fill_pattern = 1 } assert_raise(NoMethodError) { @draw.stroke_pattern = 1 } end end if __FILE__ == $PROGRAM_NAME Test::Unit::UI::Console::TestRunner.run(Draw_UT) unless RUBY_VERSION[/^1\.9|^2/] end