1use strict; 2use warnings; 3use bytes; 4use v5.10; 5use Test::More qw(no_plan); 6BEGIN { use_ok('Geo::GDAL') }; 7 8# test geometry types 9 10my @t = Geo::OGR::Geometry->GeometryTypes; 11 12for my $geom (@t) { 13 next if $geom eq 'Unknown'; 14 next if $geom eq 'None'; 15 16 my $i = Geo::GDAL::s2i(geometry_type => $geom); 17 18 my $j = Geo::OGR::GT_Flatten($i); 19 ok(!Geo::OGR::GT_HasZ($j), "$geom, no Z after GT_Flatten"); 20 ok(!Geo::OGR::GT_HasM($j), "$geom, no M after GT_Flatten"); 21 22 $j = Geo::OGR::GT_SetZ($i); 23 ok(Geo::OGR::GT_HasZ($j), "$geom, has Z after GT_SetZ"); 24 ok(bool(Geo::OGR::GT_HasM($i)) eq bool(Geo::OGR::GT_HasM($j)), "$geom, no change to M after GT_SetZ"); 25 26 $j = Geo::OGR::GT_SetM($i); 27 ok(bool(Geo::OGR::GT_HasZ($i)) eq bool(Geo::OGR::GT_HasZ($j)), "$geom, no change to Z after GT_SetM"); 28 ok(Geo::OGR::GT_HasM($j), "$geom, has M after GT_SetM"); 29 30 for my $z (0,1) { 31 for my $m (0,1) { 32 $j = Geo::OGR::GT_SetModifier($i,$z,$m); 33 ok(bool($z) eq bool(Geo::OGR::GT_HasZ($j)), "$geom, set Z to $z after SetModifier"); 34 ok(bool($m) eq bool(Geo::OGR::GT_HasM($j)), "$geom, set M to $m after SetModifier"); 35 } 36 } 37} 38 39sub bool { 40 my $val = shift; 41 return $val ? 'true' : 'false'; 42} 43