use strict; use Wiki::Toolkit::Setup::SQLite; use OpenGuides; use OpenGuides::Test; use Test::More; eval { require DBD::SQLite; }; if ( $@ ) { my ($error) = $@ =~ /^(.*?)\n/; plan skip_all => "DBD::SQLite could not be used - no database to test with. ($error)"; } plan tests => 6; # Clear out the database from any previous runs. OpenGuides::Test::refresh_db(); # Now we can start testing my $config = OpenGuides::Test->make_basic_config; $config->force_wgs84 (1); my $guide = OpenGuides->new( config => $config ); my ($longitude, $latitude) = (10, 12); my ($wgs_long, $wgs_lat) = OpenGuides::Utils->get_wgs84_coords( longitude => $longitude, latitude => $latitude, config => $config); is( $wgs_long, $longitude, "get_wgs84_coords returns the original longitude when force_wgs84 is on"); is( $wgs_lat, $latitude, "get_wgs84_coords returns the original latitude when force_wgs84 is on"); # Now claim to be in the UK eval{ require Geo::HelmertTransform; }; my $have_helmert = $@ ? 0 : 1; SKIP : { skip "Geo::HelmertTransform not installed - can't do transforms", 4 unless $have_helmert; $config->force_wgs84(0); $config->geo_handler(1); # Set our location to be somewhere known ($longitude,$latitude) = (-1.258200,51.754349); my ($wgs84_lon,$wgs84_lat) = (-1.259687,51.754813); ($wgs_long, $wgs_lat) = OpenGuides::Utils->get_wgs84_coords( longitude => $longitude, latitude => $latitude, config => $config); # Round to 5 dp my $fivedp = 1 * 1000 * 100; $wgs_long = int($wgs_long * $fivedp)/$fivedp; $wgs_lat = int($wgs_lat * $fivedp)/$fivedp; $wgs84_lon = int($wgs84_lon * $fivedp)/$fivedp; $wgs84_lat = int($wgs84_lat * $fivedp)/$fivedp; is( $wgs_long, $wgs84_lon, "get_wgs84_coords does Airy1830 -> WGS84 convertion properly"); is( $wgs_lat, $wgs84_lat, "get_wgs84_coords does Airy1830 -> WGS84 convertion properly"); # Call it again, check we get the same result ($wgs_long, $wgs_lat) = OpenGuides::Utils->get_wgs84_coords( longitude => $longitude, latitude => $latitude, config => $config); $wgs_long = int($wgs_long * $fivedp)/$fivedp; $wgs_lat = int($wgs_lat * $fivedp)/$fivedp; is( $wgs_long, $wgs84_lon, "get_wgs84_coords does Airy1830 -> WGS84 convertion properly"); is( $wgs_lat, $wgs84_lat, "get_wgs84_coords does Airy1830 -> WGS84 convertion properly"); }