The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl -T

use Test::More tests => 13;

use Math::Geometry::Delaunay qw(TRI_CONSTRAINED TRI_CCDT TRI_CONFORMING TRI_VORONOI);

my $tri = Math::Geometry::Delaunay->new();

# Enable Triangle's basic STDOUT output.
# Won't show in "./Build test" output though.
# Run this script directly to see it.
# Something like:
# perl -Iblib/arch  -Iblib/lib -T t/03-delaunays_pslg.t
$tri->quiet(0); 

# run the various packaged delaunay triangulations on a list of points

my $el = [
	[1,1],
	[7,1],
	[7,3],
	[3,3],
	[3,5],
	[1,5],
	];

$tri->addPolygon($el);

$tri->triangulate(TRI_CONSTRAINED,TRI_VORONOI,'e');

my $vedges = $tri->vedges(); # this should have triggered generation of node list
my $vnodes = $tri->vnodes(); # so this should be coming from node list cache
my $voutcnt=$tri->vorout->numberofpoints;
my $veoutcnt=$tri->vorout->numberofedges;
ok($voutcnt == 4, "wrong number of voronoi nodes $voutcnt");
ok(scalar(@{$vnodes}) == $voutcnt,"node list count doesn't correspond to raw point list length: ".scalar(@{$vnodes})." vs $voutcnt");
ok($veoutcnt == 9, "wrong number of voronoi edges: $veoutcnt");
ok(scalar(@{$vedges}) == $veoutcnt,"edge list count doesn't correspond to raw edge list length");

my $eles = $tri->elements(); # this should have triggered generation of node list
my $nodes = $tri->nodes(); # so this should be coming from node list cache
my $edges = $tri->edges();
my $segments = $tri->segments();
my $outcnt=$tri->out->numberofpoints;
my $eoutcnt=$tri->out->numberofedges;
my $segoutcnt=$tri->out->numberofsegments;
my $eleoutcnt=$tri->out->numberoftriangles;
ok($outcnt == 6, "wrong number of delaunay nodes $outcnt");
ok(scalar(@{$nodes}) == $outcnt,"node list count doesn't correspond to point list length: ".scalar(@{$nodes})." vs $outcnt");
ok($eoutcnt == 9, "wrong number of delaunay edges: $eoutcnt");
ok(scalar(@{$edges}) == $eoutcnt,"edge list count doesn't correspond to edge list length: ".scalar(@{$edges})." vs $eoutcnt");
ok($segoutcnt == 6, "wrong number of segments: $segoutcnt");
ok(scalar(@{$segments}) == $segoutcnt,"segment list count doesn't correspond to segment list length");
ok($eleoutcnt == 4, "wrong number of triangles: $eleoutcnt");
ok(scalar(@{$eles}) == $eleoutcnt,"triangle list count doesn't correspond to triangle list length");

ok(1);