remove units from rate columns in routability testing
This commit is contained in:
committed by
Patrick Niklaus
parent
140f1ad923
commit
1f3a8d4538
@@ -179,12 +179,12 @@ Feature: Car - Restricted access
|
||||
| primary | | | | no | x |
|
||||
|
||||
@hov
|
||||
Scenario: Car - only designated HOV ways are ignored by default
|
||||
Scenario: Car - designated HOV ways are rated low
|
||||
Then routability should be
|
||||
| highway | hov | bothw | forw_rate |
|
||||
| primary | designated | x | 52.63 km/h |
|
||||
| primary | yes | x | |
|
||||
| primary | no | x | |
|
||||
| primary | designated | x | 2 |
|
||||
| primary | yes | x | 18 |
|
||||
| primary | no | x | 18 |
|
||||
|
||||
@hov
|
||||
Scenario: Car - a way with all lanes HOV-designated is inaccessible by default (similar to hov=designated)
|
||||
|
||||
@@ -86,54 +86,54 @@ OSRM will use 4/5 of the projected free-flow speed.
|
||||
Then routability should be
|
||||
|
||||
| highway | maxspeed | width | maxspeed:forward | maxspeed:backward | forw | backw | forw_rate | backw_rate |
|
||||
| primary | | | | | 64 km/h | 64 km/h | 65 km/h | 65 km/h |
|
||||
| primary | | 3 | | | 64 km/h | 64 km/h | 32 km/h | 32 km/h |
|
||||
| primary | 60 | | | | 47 km/h | 47 km/h | 48 km/h | 48 km/h |
|
||||
| primary | 60 | 3 | | | 47 km/h | 47 km/h | 24 km/h | 24 km/h |
|
||||
| primary | | | 60 | | 47 km/h | 64 km/h | 48 km/h | 65 km/h |
|
||||
| primary | | 3 | 60 | | 47 km/h | 64 km/h | 24 km/h | 32 km/h |
|
||||
| primary | | | | 60 | 64 km/h | 47 km/h | 65 km/h | 48 km/h |
|
||||
| primary | | 3 | | 60 | 64 km/h | 47 km/h | 32 km/h | 24 km/h |
|
||||
| primary | 15 | | 60 | | 47 km/h | 11 km/h | 48 km/h | 12 km/h |
|
||||
| primary | 15 | 3 | 60 | | 48 km/h | 12 km/h | 24 km/h | 6 km/h |
|
||||
| primary | 15 | | | 60 | 12 km/h | 47 km/h | 12 km/h | 48 km/h |
|
||||
| primary | 15 | 3 | | 60 | 12 km/h | 47 km/h | 6 km/h | 24 km/h |
|
||||
| primary | 15 | | 30 | 60 | 23 km/h | 47 km/h | 24 km/h | 48 km/h |
|
||||
| primary | 15 | 3 | 30 | 60 | 23 km/h | 47 km/h | 12 km/h | 24 km/h |
|
||||
| primary | | | | | 64 km/h | 64 km/h | 18 | 18 |
|
||||
| primary | | 3 | | | 64 km/h | 64 km/h | 9 | 9 |
|
||||
| primary | 60 | | | | 47 km/h | 47 km/h | 13 | 13 |
|
||||
| primary | 60 | 3 | | | 47 km/h | 47 km/h | 7 | 7 |
|
||||
| primary | | | 60 | | 47 km/h | 64 km/h | 13 | 18 |
|
||||
| primary | | 3 | 60 | | 47 km/h | 64 km/h | 7 | 9 |
|
||||
| primary | | | | 60 | 64 km/h | 47 km/h | 18 | 13 |
|
||||
| primary | | 3 | | 60 | 64 km/h | 47 km/h | 9 | 7 |
|
||||
| primary | 15 | | 60 | | 47 km/h | 11 km/h | 13 | 3 |
|
||||
| primary | 15 | 3 | 60 | | 48 km/h | 12 km/h | 7 | 2 |
|
||||
| primary | 15 | | | 60 | 12 km/h | 47 km/h | 3 | 13 |
|
||||
| primary | 15 | 3 | | 60 | 12 km/h | 47 km/h | 2 | 7 |
|
||||
| primary | 15 | | 30 | 60 | 23 km/h | 47 km/h | 7 | 13 |
|
||||
| primary | 15 | 3 | 30 | 60 | 23 km/h | 47 km/h | 3 | 7 |
|
||||
|
||||
Scenario: Car - Single lane streets be ignored or incur a penalty
|
||||
Then routability should be
|
||||
|
||||
| highway | maxspeed | lanes | maxspeed:forward | maxspeed:backward | forw | backw | forw_rate | backw_rate |
|
||||
| primary | | | | | 64 km/h | 64 km/h | 65 km/h | 65 km/h |
|
||||
| primary | | 1 | | | 64 km/h | 64 km/h | 32 km/h | 32 km/h |
|
||||
| primary | 60 | | | | 47 km/h | 47 km/h | 48 km/h | 48 km/h |
|
||||
| primary | 60 | 1 | | | 47 km/h | 47 km/h | 24 km/h | 24 km/h |
|
||||
| primary | | | 60 | | 47 km/h | 64 km/h | 48 km/h | 65 km/h |
|
||||
| primary | | 1 | 60 | | 47 km/h | 64 km/h | 24 km/h | 32 km/h |
|
||||
| primary | | | | 60 | 64 km/h | 47 km/h | 65 km/h | 48 km/h |
|
||||
| primary | | 1 | | 60 | 64 km/h | 47 km/h | 32 km/h | 24 km/h |
|
||||
| primary | 15 | | 60 | | 47 km/h | 11 km/h | 48 km/h | 12 km/h |
|
||||
| primary | 15 | 1 | 60 | | 48 km/h | 12 km/h | 24 km/h | 6 km/h |
|
||||
| primary | 15 | | | 60 | 12 km/h | 47 km/h | 12 km/h | 48 km/h |
|
||||
| primary | 15 | 1 | | 60 | 12 km/h | 47 km/h | 6 km/h | 24 km/h |
|
||||
| primary | 15 | | 30 | 60 | 23 km/h | 47 km/h | 24 km/h | 48 km/h |
|
||||
| primary | 15 | 1 | 30 | 60 | 23 km/h | 47 km/h | 12 km/h | 24 km/h |
|
||||
| primary | | | | | 64 km/h | 64 km/h | 18 | 18 |
|
||||
| primary | | 1 | | | 64 km/h | 64 km/h | 9 | 9 |
|
||||
| primary | 60 | | | | 47 km/h | 47 km/h | 13 | 13 |
|
||||
| primary | 60 | 1 | | | 47 km/h | 47 km/h | 7 | 7 |
|
||||
| primary | | | 60 | | 47 km/h | 64 km/h | 13 | 18 |
|
||||
| primary | | 1 | 60 | | 47 km/h | 64 km/h | 7 | 9 |
|
||||
| primary | | | | 60 | 64 km/h | 47 km/h | 18 | 13 |
|
||||
| primary | | 1 | | 60 | 64 km/h | 47 km/h | 9 | 7 |
|
||||
| primary | 15 | | 60 | | 47 km/h | 11 km/h | 13 | 3 |
|
||||
| primary | 15 | 1 | 60 | | 48 km/h | 12 km/h | 7 | 2 |
|
||||
| primary | 15 | | | 60 | 12 km/h | 47 km/h | 3 | 13 |
|
||||
| primary | 15 | 1 | | 60 | 12 km/h | 47 km/h | 2 | 7 |
|
||||
| primary | 15 | | 30 | 60 | 23 km/h | 47 km/h | 7 | 13 |
|
||||
| primary | 15 | 1 | 30 | 60 | 23 km/h | 47 km/h | 3 | 7 |
|
||||
|
||||
Scenario: Car - Single lane streets only incur a penalty for two-way streets
|
||||
Then routability should be
|
||||
| highway | maxspeed | lanes | oneway | forw | backw | forw_rate | backw_rate |
|
||||
| primary | 30 | 1 | yes | 23 km/h | | 24 km/h | |
|
||||
| primary | 30 | 1 | -1 | | 23 km/h | | 24 km/h |
|
||||
| primary | 30 | 1 | | 23 km/h | 23 km/h | 12 km/h | 12 km/h |
|
||||
| primary | 30 | 2 | | 23 km/h | 23 km/h | 24 km/h | 24 km/h |
|
||||
| primary | 30 | 1 | yes | 23 km/h | | 7 | |
|
||||
| primary | 30 | 1 | -1 | | 23 km/h | | 7 |
|
||||
| primary | 30 | 1 | | 23 km/h | 23 km/h | 3 | 3 |
|
||||
| primary | 30 | 2 | | 23 km/h | 23 km/h | 7 | 7 |
|
||||
|
||||
Scenario: Car - Forward/backward maxspeed on reverse oneways
|
||||
Then routability should be
|
||||
| highway | maxspeed | maxspeed:forward | maxspeed:backward | oneway | forw | backw | forw_rate | backw_rate |
|
||||
| primary | | | | -1 | | 64 km/h | | 65 km/h |
|
||||
| primary | 30 | | | -1 | | 23 km/h | | 24 km/h |
|
||||
| primary | | 30 | | -1 | | 64 km/h | | 65 km/h |
|
||||
| primary | | | 30 | -1 | | 23 km/h | | 24 km/h |
|
||||
| primary | 20 | 30 | | -1 | | 15 km/h | | 16 km/h |
|
||||
| primary | 20 | | 30 | -1 | | 23 km/h | | 24 km/h |
|
||||
| primary | | | | -1 | | 64 km/h | | 18 |
|
||||
| primary | 30 | | | -1 | | 23 km/h | | 7 |
|
||||
| primary | | 30 | | -1 | | 64 km/h | | 18 |
|
||||
| primary | | | 30 | -1 | | 23 km/h | | 7 |
|
||||
| primary | 20 | 30 | | -1 | | 15 km/h | | 4 |
|
||||
| primary | 20 | | 30 | -1 | | 23 km/h | | 7 |
|
||||
|
||||
@@ -7,8 +7,8 @@ Feature: Car - Surfaces
|
||||
Scenario: Car - Ways tagged service should reduce speed
|
||||
Then routability should be
|
||||
| highway | service | forw | backw | forw_rate |
|
||||
| service | alley | 15 km/h +-1 | 15 km/h +-1 | 12.05 km/h |
|
||||
| service | alley | 15 km/h +-1 | 15 km/h +-1 | 2 |
|
||||
| service | emergency_access | | | |
|
||||
| service | driveway | 15 km/h +-1 | 15 km/h +-1 | 12.05 km/h |
|
||||
| service | drive-through | 15 km/h +-1 | 15 km/h +-1 | 12.05 km/h |
|
||||
| service | parking | 15 km/h +-1 | 15 km/h +-1 | 12.05 km/h |
|
||||
| service | driveway | 15 km/h +-1 | 15 km/h +-1 | 2 |
|
||||
| service | drive-through | 15 km/h +-1 | 15 km/h +-1 | 2 |
|
||||
| service | parking | 15 km/h +-1 | 15 km/h +-1 | 2 |
|
||||
|
||||
@@ -52,23 +52,23 @@ Feature: Traffic - turn penalties
|
||||
|
||||
Scenario: Weighting not based on turn penalty file
|
||||
When I route I should get
|
||||
| from | to | route | speed | time |
|
||||
| a | h | ad,dhk,dhk | 65 km/h | 11s +-1 |
|
||||
# straight
|
||||
| i | g | fim,fg,fg | 55 km/h | 13s +-1 |
|
||||
# right
|
||||
| a | e | ad,def,def | 44 km/h | 16.3s +-1 |
|
||||
# left
|
||||
| c | g | cd,def,fg,fg | 65 km/h | 22s +-1 |
|
||||
# double straight
|
||||
| p | g | mp,fim,fg,fg | 60 km/h | 24s +-1 |
|
||||
# straight-right
|
||||
| a | l | ad,dhk,klm,klm | 53 km/h | 27s +-1 |
|
||||
# straight-left
|
||||
| l | e | klm,dhk,def,def | 55 km/h | 26s +-1 |
|
||||
# double right
|
||||
| g | n | fg,fim,mn,mn | 44 km/h | 32s +-1 |
|
||||
# double left
|
||||
| from | to | route | speed | weight | time |
|
||||
| a | h | ad,dhk,dhk | 65 km/h | 11s +-1 | 11s +-1 |
|
||||
# straight
|
||||
| i | g | fim,fg,fg | 55 km/h | 13s +-1 | 13s +-1 |
|
||||
# right
|
||||
| a | e | ad,def,def | 44 km/h | 16.3s +-1 | 16.3s +-1 |
|
||||
# left
|
||||
| c | g | cd,def,fg,fg | 65 km/h | 22s +-1 | 22s +-1 |
|
||||
# double straight
|
||||
| p | g | mp,fim,fg,fg | 60 km/h | 24s +-1 | 24s +-1 |
|
||||
# straight-right
|
||||
| a | l | ad,dhk,klm,klm | 53 km/h | 27s +-1 | 27s +-1 |
|
||||
# straight-left
|
||||
| l | e | klm,dhk,def,def | 55 km/h | 26s +-1 | 26s +-1 |
|
||||
# double right
|
||||
| g | n | fg,fim,mn,mn | 44 km/h | 32s +-1 | 32s +-1 |
|
||||
# double left
|
||||
|
||||
Scenario: Weighting based on turn penalty file
|
||||
Given the turn penalty file
|
||||
@@ -88,25 +88,25 @@ Feature: Traffic - turn penalties
|
||||
# ade left turn
|
||||
And the contract extra arguments "--turn-penalty-file {penalties_file}"
|
||||
When I route I should get
|
||||
| from | to | route | speed | time |
|
||||
| a | h | ad,dhk,dhk | 65 km/h | 11s +-1 |
|
||||
# straight
|
||||
| i | g | fim,fg,fg | 56 km/h | 15s +-1 |
|
||||
# right - ifg penalty
|
||||
| a | e | ad,def,def | 53 km/h | 14s +-1 |
|
||||
# left - faster because of negative ade penalty
|
||||
| c | g | cd,def,fg,fg | 52 km/h | 27s +-1 |
|
||||
# double straight
|
||||
| p | g | mp,fim,fg,fg | 49 km/h | 29s +-1 |
|
||||
# straight-right - ifg penalty
|
||||
| a | l | ad,def,fim,klm,klm | 48 km/h | 45s +-1 |
|
||||
# was straight-left - forced around by hkl penalty
|
||||
| l | e | klm,fim,def,def | 38 km/h | 38s +-1 |
|
||||
# double right - forced left by lkh penalty
|
||||
| g | n | fg,fim,mn,mn | 25 km/h | 57s +-1 |
|
||||
# double left - imn penalty
|
||||
| j | c | jk,klm,fim,def,cd,cd | 44 km/h | 65.8s +-1 |
|
||||
# double left - hdc penalty ever so slightly higher than imn; forces all the way around
|
||||
| from | to | route | speed | weight | time |
|
||||
| a | h | ad,dhk,dhk | 65 km/h | 11 | 11s +-1 |
|
||||
# straight
|
||||
| i | g | fim,fg,fg | 56 km/h | 12.8 | 12s +-1 |
|
||||
# right - ifg penalty
|
||||
| a | e | ad,def,def | 67 km/h | 10.8 | 10s +-1 |
|
||||
# left - faster because of negative ade penalty
|
||||
| c | g | cd,def,fg,fg | 65 km/h | 22 | 22s +-1 |
|
||||
# double straight
|
||||
| p | g | mp,fim,fg,fg | 61 km/h | 23.8 | 23s +-1 |
|
||||
# straight-right - ifg penalty
|
||||
| a | l | ad,def,fim,klm,klm | 58 km/h | 37 | 37s +-1 |
|
||||
# was straight-left - forced around by hkl penalty
|
||||
| l | e | klm,fim,def,def | 44 km/h | 32.6 | 32s +-1 |
|
||||
# double right - forced left by lkh penalty
|
||||
| g | n | fg,fim,mn,mn | 28 km/h | 51.8 | 51s +-1 |
|
||||
# double left - imn penalty
|
||||
| j | c | jk,klm,fim,def,cd,cd | 53 km/h | 54.6 | 54s +-1 |
|
||||
# double left - hdc penalty ever so slightly higher than imn; forces all the way around
|
||||
|
||||
Scenario: Too-negative penalty clamps, but does not fail
|
||||
Given the contract extra arguments "--turn-penalty-file {penalties_file}"
|
||||
|
||||
@@ -21,8 +21,8 @@ Feature: Car - weights
|
||||
| bdf | service |
|
||||
When I route I should get
|
||||
| from | to | route | speed | weight |
|
||||
| a | e | abc,cg,efg,efg | 28 km/h | 38 +-1 |
|
||||
| a | d | abc,bdf,bdf | 18 km/h | 21 +-1 |
|
||||
| a | e | abc,cg,efg,efg | 28 km/h | 126.6 |
|
||||
| a | d | abc,bdf,bdf | 18 km/h | 71.7 |
|
||||
|
||||
Scenario: Does not jump off the highway to go down service road
|
||||
Given the node map
|
||||
@@ -59,5 +59,5 @@ Feature: Car - weights
|
||||
"""
|
||||
When I route I should get
|
||||
| from | to | route | speed | weight |
|
||||
| a | d | ab,bc,cd,cd | 65 km/h | 12 +-1 |
|
||||
| a | e | ab,be,be | 14 km/h | 104 |
|
||||
| a | d | ab,bc,cd,cd | 65 km/h | 44.4 |
|
||||
| a | e | ab,be,be | 14 km/h | 112 |
|
||||
|
||||
@@ -6,9 +6,10 @@ module.exports = function () {
|
||||
this.Then(/^routability should be$/, (table, callback) => {
|
||||
this.buildWaysFromTable(table, () => {
|
||||
var directions = ['forw','backw','bothw'],
|
||||
testedHeaders = ['forw','backw','bothw','forw_rate','backw_rate','bothw_rate'],
|
||||
headers = new Set(Object.keys(table.hashes()[0]));
|
||||
|
||||
if (!['forw','backw','bothw','forw_rate','backw_rate','bothw_rate'].some(k => !!headers.has(k))) {
|
||||
if (!testedHeaders.some(k => !!headers.has(k))) {
|
||||
throw new Error('*** routability table must contain either "forw", "backw", "bothw", "forw_rate" or "backw_rate" column');
|
||||
}
|
||||
|
||||
@@ -16,19 +17,33 @@ module.exports = function () {
|
||||
if (e) return callback(e);
|
||||
var testRow = (row, i, cb) => {
|
||||
var outputRow = Object.assign({}, row);
|
||||
// clear the fields that are tested for in the copied response object
|
||||
for (var field in outputRow) {
|
||||
if (testedHeaders.indexOf(field) != -1)
|
||||
outputRow[field] = '';
|
||||
}
|
||||
|
||||
testRoutabilityRow(i, (err, result) => {
|
||||
if (err) return cb(err);
|
||||
directions.filter(d => headers.has(d + '_rate')).forEach((direction) => {
|
||||
var want = row[direction + '_rate'];
|
||||
if (/^\d+ km\/h/.test(want)) {
|
||||
var rate = direction + '_rate';
|
||||
var want = row[rate];
|
||||
switch (true) {
|
||||
case '' === want:
|
||||
outputRow[rate] = result[direction].status ?
|
||||
result[direction].status.toString() : '';
|
||||
break;
|
||||
case /^\d+$/.test(want):
|
||||
if (result[direction].rate) {
|
||||
outputRow[direction + '_rate'] = !isNaN(result[direction].rate) ?
|
||||
result[direction].rate.toString()+' km/h' :
|
||||
outputRow[rate] = !isNaN(result[direction].rate) ?
|
||||
result[direction].rate.toString() :
|
||||
result[direction].rate.toString() || '';
|
||||
} else {
|
||||
outputRow[direction + '_rate'] = '';
|
||||
outputRow[rate] = '';
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new Error(util.format('*** Unknown expectation format: %s for header %s', want, rate));
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
@@ -109,7 +109,7 @@ module.exports = function () {
|
||||
if (row.weight.length) {
|
||||
if (!row.weight.match(/[\d\.]+/))
|
||||
return cb(new Error('*** Weight must be specified as a numeric value. (ex: 8)'));
|
||||
got.weight = instructions ? util.format('%dm', weight) : '';
|
||||
got.weight = instructions ? util.format('%d', weight) : '';
|
||||
} else {
|
||||
got.weight = '';
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user