HEX
Server: Apache
System: Linux server-634962.emtiyz.com 5.14.0-611.11.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Wed Dec 3 09:47:37 EST 2025 x86_64
User: codo66ho (1003)
PHP: 8.2.30
Disabled: exec,passthru,shell_exec,system
Upload Files
File: //home/.cpan/build/URI-5.29-0/t/geo_construct.t
#!perl

use strict;
use warnings;

use URI::geo;
use Test::More;
use Data::Dumper;

package Pointy;

sub new {
  my ( $class, $lat, $lon, $alt ) = @_;
  return bless { lat => $lat, lon => $lon, alt => $alt }, $class;
}

sub lat { shift->{lat} }
sub lon { shift->{lon} }
sub alt { shift->{alt} }

package Pointy::Point;

our @ISA = qw( Pointy );

sub latlong {
  my $self = shift;
  return $self->{lat}, $self->{lon};
}

package main;

my @case = (
  {
    name => 'Simple',
    args => [ 54.786989, -2.344214 ],
    lat  => 54.786989,
    lon  => -2.344214,
    alt  => undef,
  },
  {
    name => 'Simple w/ alt',
    args => [ 54.786989, -2.344214, 120 ],
    lat  => 54.786989,
    lon  => -2.344214,
    alt  => 120,
  },
  {
    name => 'Array',
    args => [ [ 54.786989, -2.344214 ] ],
    lat  => 54.786989,
    lon  => -2.344214,
    alt  => undef,
  },
  {
    name => 'Hash, short names',
    args => [ { lat => 54.786989, lon => -2.344214 } ],
    lat  => 54.786989,
    lon  => -2.344214,
    alt  => undef,
  },
  {
    name => 'Hash, long names',
    args => [
      {
        latitude  => 54.786989,
        longitude => -2.344214,
        elevation => 3
      }
    ],
    lat => 54.786989,
    lon => -2.344214,
    alt => 3,
  },
  {
    name => 'Point object',
    args => [ new Pointy( 54.786989, -2.344214, 3 ) ],
    lat  => 54.786989,
    lon  => -2.344214,
    alt  => 3,
  },
  {
    name => 'Point object',
    args => [ new Pointy::Point( 54.786989, -2.344214 ) ],
    lat  => 54.786989,
    lon  => -2.344214,
    alt  => undef,
  },
  {
    name => 'URI::geo object',
    args => [ new URI::geo( 54.786989, -2.344214, 99 ) ],
    lat  => 54.786989,
    lon  => -2.344214,
    alt  => 99,
  },
);

plan tests => @case * 5;

for my $case ( @case ) {
  my ( $name, $args, $lat, $lon, $alt )
   = @{$case}{ 'name', 'args', 'lat', 'lon', 'alt' };

  ok my $guri = URI::geo->new( @$args ), "$name: created";
  is $guri->scheme, 'geo', "$name: scheme";
  is $guri->latitude,  $lat, "$name: latitude";
  is $guri->longitude, $lon, "$name: longitude";
  is $guri->altitude,  $alt, "$name: altitude";
}

# vim:ts=2:sw=2:et:ft=perl