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