#!/usr/bin/perl use strict; use warnings; use Test::More tests => 36; use lib '../lib'; use Math::Polygon; my @p = ([0,0],[1,1],[0,2],[0,0]); my @q = ([1,1],[0,2],[0,0],[1,1]); # rotated left 1 # Instantiate from array my $p = Math::Polygon->new(@p); ok(defined $p); isa_ok($p, 'Math::Polygon'); cmp_ok($p->nrPoints, '==', scalar(@p)); cmp_ok($p->order, '==', 3); # triangle cmp_ok($p->area, '==', 1); ok(!$p->isClockwise); # computed my $p02 = $p->point(2); ok(defined $p02, "got point"); cmp_ok($p02->[0], '==', 0); cmp_ok($p02->[1], '==', 2); my @p02 = $p->point(2); cmp_ok(scalar(@p02), '==', 1, "got one point"); cmp_ok($p02[0][0], '==', 0); cmp_ok($p02[0][1], '==', 2); # Instantiate by option my $p2 = Math::Polygon->new(points => \@p, clockwise => 1); ok(defined $p); isa_ok($p2, 'Math::Polygon'); cmp_ok($p2->nrPoints, '==', scalar(@p)); ok($p2->isClockwise); # specified, incorrect ;-) # Instantiate by instance call my $p3 = $p2->new(@q); isa_ok($p3, 'Math::Polygon'); cmp_ok($p3->nrPoints, '==', scalar(@q)); ok($p3->isClockwise); # specified, incorrect ;-) my $p31 = $p3->point(1); ok(defined $p31, "got point from q (not p)"); cmp_ok($p31->[0], '==', 0); cmp_ok($p31->[1], '==', 2); # Comparison ok($p->equal(@p)); ok($p->same(@p)); ok(!$p->equal(@q)); ok($p->same(@q)); ok($p->startMinXY(@p)); my $q = Math::Polygon->new(@q); ok($q->startMinXY(@p)->equal($p)); my @r = $p->lineClip(-1,-1,1,1); cmp_ok(scalar(@r),'==',1); my $r = shift @r; cmp_ok(scalar(@$r),'==',3); cmp_ok($r->[0][0],'==',0); cmp_ok($r->[0][1],'==',1); cmp_ok($r->[1][0],'==',0); cmp_ok($r->[1][1],'==',0); cmp_ok($r->[2][0],'==',1); cmp_ok($r->[2][1],'==',1);