Skip to content

Commit

Permalink
OSRM: travel time in seconds and distance in km
Browse files Browse the repository at this point in the history
Just like gosmore, makes some other things simpler.
  • Loading branch information
avarbkng committed Jun 28, 2011
1 parent 29bb36b commit b0dc020
Show file tree
Hide file tree
Showing 3 changed files with 13 additions and 29 deletions.
8 changes: 3 additions & 5 deletions lib/Geo/Routing/Driver/OSRM.pm
Expand Up @@ -51,9 +51,7 @@ sub route {
my $parsed = $self->_parse_data($xml);
return unless $parsed;

my $route = Geo::Routing::Driver::OSRM::Route->new(
points => $parsed->{points},
);
my $route = Geo::Routing::Driver::OSRM::Route->new(%$parsed);

return $route;
}
Expand Down Expand Up @@ -81,8 +79,8 @@ sub _parse_data {

my $return = {
name => $last_instructions->{name},
distance => $distance,
duration => $duration,
distance => ($distance / 1000),
travel_time => ($duration * 60),
points => $coordinates,
instructions => $instructions,
};
Expand Down
2 changes: 2 additions & 0 deletions lib/Geo/Routing/Driver/OSRM/Route.pm
Expand Up @@ -4,4 +4,6 @@ use warnings FATAL => "all";

with 'Geo::Routing::Role::Route';

sub _build_travel_time { die "This should already be set implicitly" }

1;
32 changes: 8 additions & 24 deletions t/route.t
Expand Up @@ -13,16 +13,8 @@ my @from_to = (
to_latitude => '51.5614',
to_longitude => '-0.0466',
},
distance_ok => sub {
my ($distance) = @_;

($distance >= 8 && $distance <= 10);
},
travel_time_ok => sub {
my ($travel_time) = @_;

($travel_time >= 300 && $travel_time <= 400);
},
distance_ok => [ 6, 9 ],
travel_time_ok => [ 300, 430 ],
},
{
args => {
Expand All @@ -31,16 +23,8 @@ my @from_to = (
to_latitude => '52.325',
to_longitude => '1.317',
},
distance_ok => sub {
my ($distance) = @_;

($distance >= 200 && $distance <= 230);
},
travel_time_ok => sub {
my ($travel_time) = @_;

($travel_time >= 5000 && $travel_time <= 7000);
},
distance_ok => [ 155, 230 ],
travel_time_ok => [ 5000, 8000 ],
},
{
args => {
Expand Down Expand Up @@ -122,7 +106,7 @@ for my $driver (sort keys %driver) {
cmp_ok $query->query_string, 'eq', $qs, qq[QUERY_STRING="$qs" gosmore];
} elsif ($driver eq 'OSRM') {
my $qs = "&${flat}&${flon}&${tlat}&${tlon}";
cmp_ok $query->query_string, 'eq', $qs, qq[http://localhost:5000/route$qs];
cmp_ok $query->query_string, 'eq', $qs, qq[$ENV{OSRM_HTTP_PATH}/route$qs];
}

my $route = $routing->route($query);
Expand All @@ -137,10 +121,10 @@ for my $driver (sort keys %driver) {
ok(1, "The driver $driver doesn't have a $value method, skipping");
next CHECK_VALUE;
}
if (my $callback = $from_to->{"${value}_ok"}) {
if (my ($from, $to) = @{ $from_to->{"${value}_ok"} }) {
my $got = $route->$value;
my $got_ok = $callback->($got);
ok($got_ok, "$driver: Got the $value of <$got> for a route, which was within bounds");
cmp_ok $got, ">=", $from, "$driver: Got the <$value> of <$got> for a route, which is at least <$from>";
cmp_ok $got, "<=", $to, "$driver: Got the <$value> of <$got> for a route, which is at most <$to>";
}
}
}
Expand Down

0 comments on commit b0dc020

Please sign in to comment.