4 use Test::More tests => 8;
7 BEGIN { use_ok('Imager::Matrix2d', ':handy') }
9 my $id = Imager::Matrix2d->identity;
11 ok(almost_equal($id, [ 1, 0, 0,
13 0, 0, 1 ]), "identity matrix");
14 my $trans = Imager::Matrix2d->translate('x'=>10, 'y'=>-11);
15 ok(almost_equal($trans, [ 1, 0, 10,
17 0, 0, 1 ]), "translate matrix");
19 my $rotate = Imager::Matrix2d->rotate(degrees=>90);
20 ok(almost_equal($rotate, [ 0, -1, 0,
22 0, 0, 1 ]), "rotate matrix");
24 my $shear = Imager::Matrix2d->shear('x'=>0.2, 'y'=>0.3);
25 ok(almost_equal($shear, [ 1, 0.2, 0,
27 0, 0, 1 ]), "shear matrix");
29 my $scale = Imager::Matrix2d->scale('x'=>1.2, 'y'=>0.8);
30 ok(almost_equal($scale, [ 1.2, 0, 0,
32 0, 0, 1 ]), "scale matrix");
35 $rotate = Imager::Matrix2d::Test->rotate(degrees=>90, x=>50);
36 ok($trans_called, "translate called on rotate with just x");
39 $rotate = Imager::Matrix2d::Test->rotate(degrees=>90, 'y'=>50);
40 ok($trans_called, "translate called on rotate with just y");
46 abs($m1->[$i] - $m2->[$i]) < 0.00001 or return undef;
51 # this is used to ensure translate() is called correctly by rotate
52 package Imager::Matrix2d::Test;
54 BEGIN { @ISA = qw(Imager::Matrix2d); }
57 my ($class, %opts) = @_;
60 return $class->SUPER::translate(%opts);