Add support for non-round-trips with a single fixed endpoint (#6050)
Currently /trip supports finding round-trip routes where only the start or end location is fixed. This PR extends this feature to non-round-trip requests. We do this by a new table manipulation that simulates non-round-trip fixed endpoint requests as a round-trip request.
This commit is contained in:
@@ -61,7 +61,8 @@ module.exports = function () {
|
||||
var subTrips;
|
||||
var trip_durations;
|
||||
var trip_distance;
|
||||
if (res.statusCode === 200) {
|
||||
var ok = res.statusCode === 200;
|
||||
if (ok) {
|
||||
if (headers.has('trips')) {
|
||||
subTrips = json.trips.filter(t => !!t).map(t => t.legs).map(tl => Array.prototype.concat.apply([], tl.map((sl, i) => {
|
||||
var toAdd = [];
|
||||
@@ -84,8 +85,7 @@ module.exports = function () {
|
||||
}
|
||||
}
|
||||
|
||||
var ok = true,
|
||||
encodedResult = '';
|
||||
var encodedResult = '';
|
||||
|
||||
if (json.trips) row.trips.split(',').forEach((sub, si) => {
|
||||
if (si >= subTrips.length) {
|
||||
|
||||
@@ -5,7 +5,7 @@ Feature: Basic trip planning
|
||||
Given the profile "testbot"
|
||||
Given a grid size of 10 meters
|
||||
|
||||
Scenario: Testbot - Trip: Roundtrip with one waypoint
|
||||
Scenario: Testbot - Trip: Roundtrip between same waypoint
|
||||
Given the node map
|
||||
"""
|
||||
a b
|
||||
@@ -21,7 +21,7 @@ Feature: Basic trip planning
|
||||
|
||||
When I plan a trip I should get
|
||||
| waypoints | trips |
|
||||
| a | aa |
|
||||
| a,a | aa |
|
||||
|
||||
Scenario: Testbot - Trip: Roundtrip with waypoints (less than 10)
|
||||
Given the node map
|
||||
@@ -69,36 +69,37 @@ Feature: Basic trip planning
|
||||
| waypoints | trips |
|
||||
| a,b,c,d,e,f,g,h,i,j,k,l | alkjihgfedcba |
|
||||
|
||||
Scenario: Testbot - Trip: Roundtrip FS waypoints (more than 10)
|
||||
Given the node map
|
||||
"""
|
||||
a b c d
|
||||
l e
|
||||
k f
|
||||
j i h g
|
||||
"""
|
||||
|
||||
And the ways
|
||||
| nodes |
|
||||
| ab |
|
||||
| bc |
|
||||
| de |
|
||||
| ef |
|
||||
| fg |
|
||||
| gh |
|
||||
| hi |
|
||||
| ij |
|
||||
| jk |
|
||||
| kl |
|
||||
| la |
|
||||
|
||||
When I plan a trip I should get
|
||||
| waypoints | source | trips |
|
||||
| a,b,c,d,e,f,g,h,i,j,k,l | first | alkjihgfedcba |
|
||||
|
||||
Scenario: Testbot - Trip: Roundtrip FE waypoints (more than 10)
|
||||
Scenario: Testbot - Trip: FS waypoints (less than 10)
|
||||
Given the query options
|
||||
| source | last |
|
||||
| source | first |
|
||||
Given the node map
|
||||
"""
|
||||
a b c d
|
||||
l e
|
||||
|
||||
j i g
|
||||
"""
|
||||
|
||||
And the ways
|
||||
| nodes |
|
||||
| ab |
|
||||
| bc |
|
||||
| de |
|
||||
| eg |
|
||||
| gi |
|
||||
| ij |
|
||||
| jl |
|
||||
| la |
|
||||
|
||||
When I plan a trip I should get
|
||||
| waypoints | trips | roundtrip | durations |
|
||||
| a,b,c,d,e,g,i,j,l | abcdegijla | true | 22 |
|
||||
| a,b,c,d,e,g,i,j,l | abcljiged | false | 13 |
|
||||
|
||||
|
||||
Scenario: Testbot - Trip: FS waypoints (more than 10)
|
||||
Given the query options
|
||||
| source | first |
|
||||
Given the node map
|
||||
"""
|
||||
a b c d
|
||||
@@ -122,8 +123,67 @@ Feature: Basic trip planning
|
||||
| la |
|
||||
|
||||
When I plan a trip I should get
|
||||
| waypoints | trips |
|
||||
| a,b,c,d,e,f,g,h,i,j,k,l | lkjihgfedcbal |
|
||||
| waypoints | trips | roundtrip | durations |
|
||||
| a,b,c,d,e,f,g,h,i,j,k,l | alkjihgfedcba | true | 22 |
|
||||
| a,b,c,d,e,f,g,h,i,j,k,l | acblkjihgfed | false | 13 |
|
||||
|
||||
|
||||
Scenario: Testbot - Trip: FE waypoints (less than 10)
|
||||
Given the query options
|
||||
| destination | last |
|
||||
Given the node map
|
||||
"""
|
||||
a b c d
|
||||
l e
|
||||
|
||||
j i g
|
||||
"""
|
||||
|
||||
And the ways
|
||||
| nodes |
|
||||
| ab |
|
||||
| bc |
|
||||
| de |
|
||||
| eg |
|
||||
| gi |
|
||||
| ij |
|
||||
| jl |
|
||||
| la |
|
||||
|
||||
When I plan a trip I should get
|
||||
| waypoints | trips | roundtrip | durations |
|
||||
| a,b,c,d,e,g,i,j,l | labcdegijl | true | 22 |
|
||||
| a,b,c,d,e,g,i,j,l | degijabcl | false | 14 |
|
||||
|
||||
Scenario: Testbot - Trip: FE waypoints (more than 10)
|
||||
Given the query options
|
||||
| destination | last |
|
||||
Given the node map
|
||||
"""
|
||||
a b c d
|
||||
l e
|
||||
k f
|
||||
j i h g
|
||||
"""
|
||||
|
||||
And the ways
|
||||
| nodes |
|
||||
| ab |
|
||||
| bc |
|
||||
| de |
|
||||
| ef |
|
||||
| fg |
|
||||
| gh |
|
||||
| hi |
|
||||
| ij |
|
||||
| jk |
|
||||
| kl |
|
||||
| la |
|
||||
|
||||
When I plan a trip I should get
|
||||
| waypoints | trips | roundtrip | durations |
|
||||
| a,b,c,d,e,f,g,h,i,j,k,l | lkjihgfedcbal | true | 22 |
|
||||
| a,b,c,d,e,f,g,h,i,j,k,l | cbakjihgfedl | false | 19 |
|
||||
|
||||
Scenario: Testbot - Trip: Unroutable roundtrip with waypoints (less than 10)
|
||||
Given the node map
|
||||
@@ -274,7 +334,7 @@ Feature: Basic trip planning
|
||||
| a,b,d,e,c | first | last | true | abedca |
|
||||
|
||||
|
||||
Scenario: Testbot - Trip: midway points in isoldated roads should return no trips
|
||||
Scenario: Testbot - Trip: midway points in isolated roads should return no trips
|
||||
Given the node map
|
||||
"""
|
||||
a 1 b
|
||||
@@ -370,4 +430,4 @@ Feature: Basic trip planning
|
||||
When I plan a trip I should get
|
||||
| waypoints | trips | durations | geometry |
|
||||
| a,b,c,d | abcda | 7.6 | 1,1,1,1.00009,0.99991,1,1,1.00009,1,1,0.99991,1.00009,1,1 |
|
||||
| d,b,c,a | dbcad | 7.6 | 0.99991,1.00009,1,1,1,1.00009,0.99991,1,1,1.00009,1,1,0.99991,1.00009 |
|
||||
| d,b,c,a | dbcad | 7.6 | 0.99991,1.00009,1,1,1,1.00009,0.99991,1,1,1.00009,1,1,0.99991,1.00009 |
|
||||
|
||||
@@ -187,5 +187,5 @@ Feature: Check zero speed updates
|
||||
|
||||
When I plan a trip I should get
|
||||
| waypoints | trips | code |
|
||||
| a,b,c,d | abcda | NoTrips |
|
||||
| d,b,c,a | dbcad | NoTrips |
|
||||
| a,b,c,d | | NoTrips |
|
||||
| d,b,c,a | | NoTrips |
|
||||
|
||||
Reference in New Issue
Block a user