use strict;
use warnings;
use Test::More tests => 2;
use Geo::Gpx;

# See:
#   http://rt.cpan.org/Public/Bug/Display.html?id=29909

my $gpx = Geo::Gpx->new;

my @correct_order = qw(
  ele time magvar geoidheight name cmt desc src link sym type fix sat
  hdop vdop pdop ageofdgpsdata dgpsid
);

$gpx->waypoints(
    [
        {
            # All standard GPX fields
            lat         => 54.786989,
            lon         => -2.344214,
            ele         => 512,
            time        => 1164488503,
            magvar      => 0,
            geoidheight => 0,
            name        => 'My house & home',
            cmt         => 'Where I live',
            desc        => '<<Chez moi>>',
            src         => 'Testing',
            link        => {
                href => 'http://hexten.net/',
                text => 'Hexten',
                type => 'Blah'
            },
            sym           => 'pin',
            type          => 'unknown',
            fix           => 'dgps',
            sat           => 3,
            hdop          => 10,
            vdop          => 10,
            pdop          => 10,
            ageofdgpsdata => 45,
            dgpsid        => 247
        }
    ]
);

my $xml = $gpx->xml( '1.1' );

ok $xml =~ m{ <wpt[^>]*> (.*?) </wpt> }xms, "has wpt";
my $wpt = $1;
my @ord = ( $wpt =~ m{ <(\w+).*?</\1> }xmsg );
is_deeply \@ord, \@correct_order, 'order ok';
