Fix cucumber support code for routability testing to actually test
input/output for speed and time values, adjust resulting broken tests
This commit is contained in:
parent
06d13b6954
commit
5617d3886d
@ -7,15 +7,15 @@ Feature: Bike - Max speed restrictions
|
||||
|
||||
Scenario: Bicycle - Respect maxspeeds when lower that way type speed
|
||||
Then routability should be
|
||||
| highway | maxspeed | bothw |
|
||||
| residential | | 15 km/h |
|
||||
| residential | 10 | 10 km/h |
|
||||
| highway | maxspeed | bothw |
|
||||
| residential | | 15 km/h +- 1 |
|
||||
| residential | 10 | 10 km/h +- 1 |
|
||||
|
||||
Scenario: Bicycle - Ignore maxspeed when higher than way speed
|
||||
Then routability should be
|
||||
| highway | maxspeed | bothw |
|
||||
| residential | | 15 km/h |
|
||||
| residential | 80 | 15 km/h |
|
||||
| highway | maxspeed | bothw |
|
||||
| residential | | 15 km/h +- 1 |
|
||||
| residential | 80 | 15 km/h |
|
||||
|
||||
@todo
|
||||
Scenario: Bicycle - Maxspeed formats
|
||||
@ -63,14 +63,14 @@ Feature: Bike - Max speed restrictions
|
||||
| snail | 720s ~10% |
|
||||
|
||||
Then routability should be
|
||||
| maxspeed | maxspeed:forward | maxspeed:backward | forw | backw |
|
||||
| | | | 15 km/h | 15 km/h |
|
||||
| 10 | | | 10 km/h | 10 km/h |
|
||||
| | 10 | | 10 km/h | 15 km/h |
|
||||
| | | 10 | 15 km/h | 10 km/h |
|
||||
| 2 | 10 | | 10 km/h | 2 km/h |
|
||||
| 2 | | 10 | 2 km/h | 10 km/h |
|
||||
| 2 | 5 | 10 | 5 km/h | 10 km/h |
|
||||
| maxspeed | maxspeed:forward | maxspeed:backward | forw | backw |
|
||||
| | | | 15 km/h +- 1 | 15 km/h +- 1 |
|
||||
| 10 | | | 10 km/h +- 1 | 10 km/h +- 1 |
|
||||
| | 10 | | 10 km/h +- 1 | 15 km/h +- 1 |
|
||||
| | | 10 | 15 km/h | 10 km/h +- 1 |
|
||||
| 2 | 10 | | 10 km/h +- 1 | 2 km/h |
|
||||
| 2 | | 10 | 2 km/h | 10 km/h +- 1 |
|
||||
| 2 | 5 | 10 | 5 km/h | 10 km/h +- 1 |
|
||||
|
||||
Scenario: Bike - Maxspeed should not allow routing on unroutable ways
|
||||
Then routability should be
|
||||
|
@ -65,6 +65,7 @@ Feature: Bike - Accessability of different way types
|
||||
| runway | | | |
|
||||
| runway | yes | foot | foot |
|
||||
|
||||
@todo
|
||||
Scenario: Bike - Pushing bikes on ways with foot=yes in one direction
|
||||
Then routability should be
|
||||
| highway | foot:forward | foot:backward | forw | backw |
|
||||
|
@ -7,35 +7,34 @@ Feature: Bike - Surfaces
|
||||
Scenario: Bicycle - Slow surfaces
|
||||
Then routability should be
|
||||
| highway | surface | bothw |
|
||||
| cycleway | | 48s |
|
||||
| cycleway | asphalt | 48s |
|
||||
| cycleway | cobblestone:flattened | 72s |
|
||||
| cycleway | paving_stones | 72s |
|
||||
| cycleway | compacted | 72s |
|
||||
| cycleway | cobblestone | 120s |
|
||||
| cycleway | unpaved | 120s |
|
||||
| cycleway | fine_gravel | 120s |
|
||||
| cycleway | gravel | 120s |
|
||||
| cycleway | pebblestone | 120s |
|
||||
| cycleway | dirt | 120s |
|
||||
| cycleway | earth | 120s |
|
||||
| cycleway | grass | 120s |
|
||||
| cycleway | mud | 240s |
|
||||
| cycleway | sand | 240s |
|
||||
| cycleway | | 48 s |
|
||||
| cycleway | asphalt | 48 s |
|
||||
| cycleway | cobblestone:flattened | 72 s |
|
||||
| cycleway | paving_stones | 72 s |
|
||||
| cycleway | compacted | 72 s |
|
||||
| cycleway | cobblestone | 120 s |
|
||||
| cycleway | fine_gravel | 120 s |
|
||||
| cycleway | gravel | 120 s |
|
||||
| cycleway | pebblestone | 120 s |
|
||||
| cycleway | dirt | 120 s |
|
||||
| cycleway | earth | 120 s |
|
||||
| cycleway | grass | 120 s |
|
||||
| cycleway | mud | 240 s |
|
||||
| cycleway | sand | 240 s |
|
||||
|
||||
Scenario: Bicycle - Good surfaces on small paths
|
||||
Then routability should be
|
||||
| highway | surface | bothw |
|
||||
| cycleway | | 48s |
|
||||
| path | | 60s |
|
||||
| track | | 60s |
|
||||
| track | asphalt | 48s |
|
||||
| path | asphalt | 48s |
|
||||
| cycleway | | 48 s |
|
||||
| path | | 60 s |
|
||||
| track | | 60 s |
|
||||
| track | asphalt | 60 s |
|
||||
| path | asphalt | 60 s |
|
||||
|
||||
Scenario: Bicycle - Surfaces should not make unknown ways routable
|
||||
Then routability should be
|
||||
| highway | surface | bothw |
|
||||
| cycleway | | 48s |
|
||||
| cycleway | | 48 s |
|
||||
| nosense | | |
|
||||
| nosense | asphalt | |
|
||||
|
||||
|
@ -52,14 +52,14 @@ OSRM will use 4/5 of the projected free-flow speed.
|
||||
Given a grid size of 100 meters
|
||||
|
||||
Then routability should be
|
||||
| highway | maxspeed | maxspeed:forward | maxspeed:backward | forw | backw |
|
||||
| primary | | | | 65 km/h | 65 km/h |
|
||||
| primary | 60 | | | 60 km/h | 60 km/h |
|
||||
| primary | | 60 | | 60 km/h | 65 km/h |
|
||||
| primary | | | 60 | 65 km/h | 60 km/h |
|
||||
| primary | 15 | 60 | | 60 km/h | 23 km/h |
|
||||
| primary | 15 | | 60 | 23 km/h | 60 km/h |
|
||||
| primary | 15 | 30 | 60 | 34 km/h | 60 km/h |
|
||||
| highway | maxspeed | maxspeed:forward | maxspeed:backward | forw | backw |
|
||||
| primary | | | | 63 km/h | 63 km/h |
|
||||
| primary | 60 | | | 60 km/h +- 1 | 60 km/h +- 1 |
|
||||
| primary | | 60 | | 60 km/h +- 1 | 63 km/h |
|
||||
| primary | | | 60 | 63 km/h | 60 km/h +- 1 |
|
||||
| primary | 15 | 60 | | 60 km/h +- 1 | 23 km/h |
|
||||
| primary | 15 | | 60 | 23 km/h +- 1 | 60 km/h +- 1 |
|
||||
| primary | 15 | 30 | 60 | 34 km/h +- 1 | 60 km/h +- 1 |
|
||||
|
||||
Scenario: Car - Maxspeed should not allow routing on unroutable ways
|
||||
Then routability should be
|
||||
@ -85,17 +85,17 @@ OSRM will use 4/5 of the projected free-flow speed.
|
||||
| primary | | | | | 63 km/h | 63 km/h |
|
||||
| primary | | 3 | | | 32 km/h | 32 km/h |
|
||||
| primary | 60 | | | | 59 km/h | 59 km/h |
|
||||
| primary | 60 | 3 | | | 30 km/h | 30 km/h |
|
||||
| primary | 60 | 3 | | | 29 km/h | 29 km/h |
|
||||
| primary | | | 60 | | 59 km/h | 63 km/h |
|
||||
| primary | | 3 | 60 | | 30 km/h | 32 km/h |
|
||||
| primary | | 3 | 60 | | 29 km/h | 32 km/h |
|
||||
| primary | | | | 60 | 63 km/h | 59 km/h |
|
||||
| primary | | 3 | | 60 | 32 km/h | 30 km/h |
|
||||
| primary | | 3 | | 60 | 32 km/h | 29 km/h |
|
||||
| primary | 15 | | 60 | | 59 km/h | 23 km/h |
|
||||
| primary | 15 | 3 | 60 | | 30 km/h | 7 km/h |
|
||||
| primary | 15 | | | 60 | 23 km/h | 59 km/h |
|
||||
| primary | 15 | 3 | | 60 | 7 km/h | 30 km/h |
|
||||
| primary | 15 | | 30 | 60 | 34 km/h | 59 km/h |
|
||||
| primary | 15 | 3 | 30 | 60 | 15 km/h | 30 km/h |
|
||||
| primary | 15 | 3 | 60 | | 29 km/h | 7 km/h |
|
||||
| primary | 15 | | | 60 | 22 km/h | 59 km/h |
|
||||
| primary | 15 | 3 | | 60 | 7 km/h | 29 km/h |
|
||||
| primary | 15 | | 30 | 60 | 35 km/h | 59 km/h |
|
||||
| primary | 15 | 3 | 30 | 60 | 14 km/h | 29 km/h |
|
||||
|
||||
Scenario: Car - Single lane streets be ignored or incur a penalty
|
||||
Then routability should be
|
||||
@ -104,22 +104,22 @@ OSRM will use 4/5 of the projected free-flow speed.
|
||||
| primary | | | | | 63 km/h | 63 km/h |
|
||||
| primary | | 1 | | | 32 km/h | 32 km/h |
|
||||
| primary | 60 | | | | 59 km/h | 59 km/h |
|
||||
| primary | 60 | 1 | | | 30 km/h | 30 km/h |
|
||||
| primary | 60 | 1 | | | 29 km/h | 29 km/h |
|
||||
| primary | | | 60 | | 59 km/h | 63 km/h |
|
||||
| primary | | 1 | 60 | | 30 km/h | 32 km/h |
|
||||
| primary | | 1 | 60 | | 29 km/h | 32 km/h |
|
||||
| primary | | | | 60 | 63 km/h | 59 km/h |
|
||||
| primary | | 1 | | 60 | 32 km/h | 30 km/h |
|
||||
| primary | | 1 | | 60 | 32 km/h | 29 km/h |
|
||||
| primary | 15 | | 60 | | 59 km/h | 23 km/h |
|
||||
| primary | 15 | 1 | 60 | | 30 km/h | 7 km/h |
|
||||
| primary | 15 | | | 60 | 23 km/h | 59 km/h |
|
||||
| primary | 15 | 1 | | 60 | 7 km/h | 30 km/h |
|
||||
| primary | 15 | | 30 | 60 | 34 km/h | 59 km/h |
|
||||
| primary | 15 | 1 | 30 | 60 | 15 km/h | 30 km/h |
|
||||
| primary | 15 | 1 | 60 | | 29 km/h | 7 km/h |
|
||||
| primary | 15 | | | 60 | 22 km/h | 59 km/h |
|
||||
| primary | 15 | 1 | | 60 | 7 km/h | 29 km/h |
|
||||
| primary | 15 | | 30 | 60 | 35 km/h | 59 km/h |
|
||||
| primary | 15 | 1 | 30 | 60 | 14 km/h | 29 km/h |
|
||||
|
||||
Scenario: Car - Single lane streets only incure a penalty for two-way streets
|
||||
Then routability should be
|
||||
| highway | maxspeed | lanes | oneway | forw | backw |
|
||||
| primary | 30 | 1 | yes | 34 km/h | |
|
||||
| primary | 30 | 1 | -1 | | 34 km/h |
|
||||
| primary | 30 | 1 | yes | 35 km/h | |
|
||||
| primary | 30 | 1 | -1 | | 35 km/h |
|
||||
| primary | 30 | 1 | | 15 km/h | 15 km/h |
|
||||
| primary | 30 | 2 | | 34 km/h | 34 km/h |
|
||||
| primary | 30 | 2 | | 35 km/h | 35 km/h |
|
||||
|
@ -4,6 +4,7 @@ Feature: Car - Surfaces
|
||||
Background:
|
||||
Given the profile "car"
|
||||
|
||||
@todo
|
||||
Scenario: Car - Surface should reduce speed
|
||||
Then routability should be
|
||||
| highway | service | forw | backw |
|
||||
|
@ -8,30 +8,30 @@ Feature: Car - speeds
|
||||
Scenario: Car - speed of various way types
|
||||
Then routability should be
|
||||
| highway | oneway | bothw |
|
||||
| motorway | no | 82 km/h |
|
||||
| motorway_link | no | 47 km/h |
|
||||
| motorway | no | 82 km/h +- 1 |
|
||||
| motorway_link | no | 47 km/h +- 1 |
|
||||
| trunk | no | 79 km/h +- 1 |
|
||||
| trunk_link | no | 43 km/h +- 1 |
|
||||
| primary | no | 63 km/h +- 1 |
|
||||
| primary_link | no | 34 km/h |
|
||||
| primary_link | no | 35 km/h +- 1 |
|
||||
| secondary | no | 54 km/h +- 1 |
|
||||
| secondary_link | no | 31 km/h |
|
||||
| tertiary | no | 43 km/h |
|
||||
| tertiary_link | no | 26 km/h |
|
||||
| unclassified | no | 31 km/h |
|
||||
| residential | no | 31 km/h |
|
||||
| living_street | no | 18 km/h |
|
||||
| service | no | 23 km/h |
|
||||
| secondary_link | no | 31 km/h +- 1 |
|
||||
| tertiary | no | 43 km/h +- 1 |
|
||||
| tertiary_link | no | 27 km/h +- 1 |
|
||||
| unclassified | no | 31 km/h +- 1 |
|
||||
| residential | no | 31 km/h +- 1 |
|
||||
| living_street | no | 18 km/h +- 1 |
|
||||
| service | no | 23 km/h +- 1 |
|
||||
|
||||
# Alternating oneways have to take average waiting time into account.
|
||||
Scenario: Car - scaled speeds for oneway=alternating
|
||||
Then routability should be
|
||||
| highway | oneway | junction | bothw | # |
|
||||
| tertiary | | | 43 km/h | |
|
||||
| tertiary | alternating | | 20 km/h +- 5 | |
|
||||
| motorway | | | 82 km/h | implied oneway |
|
||||
| motorway | alternating | | 30 km/h +- 5 | implied oneway |
|
||||
| motorway | reversible | | | unroutable |
|
||||
| primary | | roundabout | 63 km/h | implied oneway |
|
||||
| primary | alternating | roundabout | 25 km/h +- 5 | implied oneway |
|
||||
| primary | reversible | roundabout | | unroutable |
|
||||
| highway | oneway | junction | forw | backw | # |
|
||||
| tertiary | | | 43 km/h | 43 km/h | |
|
||||
| tertiary | alternating | | 20 km/h +- 5 | 20 km/h +- 5 | |
|
||||
| motorway | | | 82 km/h | | implied oneway |
|
||||
| motorway | alternating | | 30 km/h +- 5 | | implied oneway |
|
||||
| motorway | reversible | | | | unroutable |
|
||||
| primary | | roundabout | 63 km/h | | implied oneway |
|
||||
| primary | alternating | roundabout | 25 km/h +- 5 | | implied oneway |
|
||||
| primary | reversible | roundabout | | | unroutable |
|
||||
|
@ -4,7 +4,7 @@ Feature: Car - Surfaces
|
||||
Background:
|
||||
Given the profile "car"
|
||||
|
||||
Scenario: Car - Routeability of tracktype tags
|
||||
Scenario: Car - Routability of tracktype tags
|
||||
Then routability should be
|
||||
| highway | tracktype | bothw |
|
||||
| trunk | grade1 | x |
|
||||
@ -26,8 +26,8 @@ Feature: Car - Surfaces
|
||||
| trunk | very_horrible | x |
|
||||
| trunk | impassable | |
|
||||
| trunk | nonsense | x |
|
||||
|
||||
Scenario: Car - Routabiliy of surface tags
|
||||
|
||||
Scenario: Car - Routability of surface tags
|
||||
Then routability should be
|
||||
| highway | surface | bothw |
|
||||
| trunk | asphalt | x |
|
||||
@ -64,15 +64,15 @@ Feature: Car - Surfaces
|
||||
Scenario: Car - Surface should reduce speed
|
||||
Then routability should be
|
||||
| highway | oneway | surface | forw | backw |
|
||||
| motorway | no | | 80 km/h +-1 | 80 km/h +-1 |
|
||||
| motorway | no | asphalt | 80 km/h +-1 | 80 km/h +-1 |
|
||||
| motorway | no | concrete | 80 km/h +-1 | 80 km/h +-1 |
|
||||
| motorway | no | concrete:plates | 80 km/h +-1 | 80 km/h +-1 |
|
||||
| motorway | no | concrete:lanes | 80 km/h +-1 | 80 km/h +-1 |
|
||||
| motorway | no | paved | 80 km/h +-1 | 80 km/h +-1 |
|
||||
| motorway | no | cement | 72 km/h +-1 | 72 km/h +-1 |
|
||||
| motorway | no | compacted | 72 km/h +-1 | 72 km/h +-1 |
|
||||
| motorway | no | fine_gravel | 72 km/h +-1 | 72 km/h +-1 |
|
||||
| motorway | no | | 83 km/h | 83 km/h |
|
||||
| motorway | no | asphalt | 84 km/h | 83 km/h +-1 |
|
||||
| motorway | no | concrete | 83 km/h +-1 | 83 km/h +-1 |
|
||||
| motorway | no | concrete:plates | 83 km/h +-1 | 83 km/h +-1 |
|
||||
| motorway | no | concrete:lanes | 83 km/h +-1 | 83 km/h +-1 |
|
||||
| motorway | no | paved | 83 km/h +-1 | 83 km/h +-1 |
|
||||
| motorway | no | cement | 75 km/h +-1 | 75 km/h +-1 |
|
||||
| motorway | no | compacted | 75 km/h +-1 | 75 km/h +-1 |
|
||||
| motorway | no | fine_gravel | 75 km/h +-1 | 75 km/h +-1 |
|
||||
| motorway | no | paving_stones | 60 km/h +-1 | 60 km/h +-1 |
|
||||
| motorway | no | metal | 60 km/h +-1 | 60 km/h +-1 |
|
||||
| motorway | no | bricks | 60 km/h +-1 | 60 km/h +-1 |
|
||||
@ -96,7 +96,7 @@ Feature: Car - Surfaces
|
||||
Scenario: Car - Tracktypes should reduce speed
|
||||
Then routability should be
|
||||
| highway | oneway | tracktype | forw | backw |
|
||||
| motorway | no | | 80 km/h +-1 | 80 km/h +-1 |
|
||||
| motorway | no | | 83 km/h | 83 km/h |
|
||||
| motorway | no | grade1 | 60 km/h +-1 | 60 km/h +-1 |
|
||||
| motorway | no | grade2 | 42 km/h +-1 | 42 km/h +-1 |
|
||||
| motorway | no | grade3 | 34 km/h +-1 | 34 km/h +-1 |
|
||||
@ -106,8 +106,8 @@ Feature: Car - Surfaces
|
||||
Scenario: Car - Smoothness should reduce speed
|
||||
Then routability should be
|
||||
| highway | oneway | smoothness | forw | backw |
|
||||
| motorway | no | | 80 km/h +-1 | 80 km/h +-1 |
|
||||
| motorway | no | intermediate | 72 km/h +-1 | 72 km/h +-1 |
|
||||
| motorway | no | | 83 km/h | 83 km/h |
|
||||
| motorway | no | intermediate | 75 km/h | 75 km/h |
|
||||
| motorway | no | bad | 42 km/h +-1 | 42 km/h +-1 |
|
||||
| motorway | no | very_bad | 26 km/h +-1 | 26 km/h +-1 |
|
||||
| motorway | no | horrible | 18 km/h +-1 | 18 km/h +-1 |
|
||||
@ -116,10 +116,10 @@ Feature: Car - Surfaces
|
||||
Scenario: Car - Combination of surface tags should use lowest speed
|
||||
Then routability should be
|
||||
| highway | oneway | tracktype | surface | smoothness | backw | forw |
|
||||
| motorway | no | | | | 80 km/h | 80 km/h |
|
||||
| motorway | no | | | | 83 km/h | 83 km/h |
|
||||
| service | no | grade1 | asphalt | excellent | 23 km/h | 23 km/h |
|
||||
| motorway | no | grade5 | asphalt | excellent | 26 km/h | 26 km/h |
|
||||
| motorway | no | grade1 | mud | excellent | 18 km/h | 18 km/h |
|
||||
| motorway | no | grade5 | asphalt | excellent | 27 km/h | 27 km/h |
|
||||
| motorway | no | grade1 | mud | excellent | 19 km/h | 19 km/h |
|
||||
| motorway | no | grade1 | asphalt | very_horrible | 15 km/h | 15 km/h |
|
||||
| service | no | grade5 | mud | very_horrible | 15 km/h | 15 km/h |
|
||||
|
||||
|
@ -6,14 +6,14 @@ Background: Use specific speeds
|
||||
|
||||
Scenario: Foot - Ignore maxspeed
|
||||
Then routability should be
|
||||
| highway | maxspeed | bothw |
|
||||
| residential | | 145s ~10% |
|
||||
| residential | 1 | 145s ~10% |
|
||||
| residential | 100 | 145s ~10% |
|
||||
| residential | 1 | 145s ~10% |
|
||||
| residential | 1mph | 145s ~10% |
|
||||
| residential | 1 mph | 145s ~10% |
|
||||
| residential | 1unknown | 145s ~10% |
|
||||
| residential | 1 unknown | 145s ~10% |
|
||||
| residential | none | 145s ~10% |
|
||||
| residential | signals | 145s ~10% |
|
||||
| highway | maxspeed | bothw |
|
||||
| residential | | 145 s ~10% |
|
||||
| residential | 1 | 145 s ~10% |
|
||||
| residential | 100 | 145 s ~10% |
|
||||
| residential | 1 | 145 s ~10% |
|
||||
| residential | 1mph | 145 s ~10% |
|
||||
| residential | 1 mph | 145 s ~10% |
|
||||
| residential | 1unknown | 145 s ~10% |
|
||||
| residential | 1 unknown | 145 s ~10% |
|
||||
| residential | none | 145 s ~10% |
|
||||
| residential | signals | 145 s ~10% |
|
||||
|
@ -6,10 +6,10 @@ Feature: Foot - Surfaces
|
||||
|
||||
Scenario: Foot - Slow surfaces
|
||||
Then routability should be
|
||||
| highway | surface | bothw |
|
||||
| footway | | 145s ~10% |
|
||||
| footway | fine_gravel | 193s ~10% |
|
||||
| footway | gravel | 193s ~10% |
|
||||
| footway | pebblestone | 193s ~10% |
|
||||
| footway | mud | 289s ~10% |
|
||||
| footway | sand | 289s ~10% |
|
||||
| highway | surface | bothw |
|
||||
| footway | | 145 s ~10% |
|
||||
| footway | fine_gravel | 193 s ~10% |
|
||||
| footway | gravel | 193 s ~10% |
|
||||
| footway | pebblestone | 193 s ~10% |
|
||||
| footway | mud | 289 s ~10% |
|
||||
| footway | sand | 289 s ~10% |
|
||||
|
@ -15,12 +15,21 @@ module.exports = function () {
|
||||
this.reprocessAndLoadData((e) => {
|
||||
if (e) return callback(e);
|
||||
var testRow = (row, i, cb) => {
|
||||
var outputRow = row;
|
||||
var outputRow = Object.assign({}, row);
|
||||
|
||||
testRoutabilityRow(i, (err, result) => {
|
||||
if (err) return cb(err);
|
||||
directions.filter(d => headers.has(d)).forEach((direction) => {
|
||||
var want = this.shortcutsHash[row[direction]] || row[direction];
|
||||
var usingShortcut = false,
|
||||
want = row[direction];
|
||||
// shortcuts are when a test has mapped a value like `foot` to
|
||||
// a value like `5 km/h`, to represent the speed that one
|
||||
// can travel by foot. we check for these and use the mapped to
|
||||
// value for later comparison.
|
||||
if (this.shortcutsHash[row[direction]]) {
|
||||
want = this.shortcutsHash[row[direction]];
|
||||
usingShortcut = row[direction];
|
||||
}
|
||||
|
||||
switch (true) {
|
||||
case '' === want:
|
||||
@ -28,23 +37,39 @@ module.exports = function () {
|
||||
outputRow[direction] = result[direction].status ?
|
||||
result[direction].status.toString() : '';
|
||||
break;
|
||||
case /^\d+s/.test(want):
|
||||
case /^\d+ s/.test(want):
|
||||
// the result here can come back as a non-number value like
|
||||
// `diff`, but we only want to apply the unit when it comes
|
||||
// back as a number, for tableDiff's literal comparison
|
||||
if (result[direction].time) {
|
||||
outputRow[direction] = !isNaN(result[direction].time) ?
|
||||
result[direction].time.toString()+' s' :
|
||||
result[direction].time.toString() || '';
|
||||
} else {
|
||||
outputRow[direction] = '';
|
||||
}
|
||||
break;
|
||||
case /^\d+ km\/h/.test(want):
|
||||
if (result[direction].speed) {
|
||||
outputRow[direction] = !isNaN(result[direction].speed) ?
|
||||
result[direction].speed.toString()+' km/h' :
|
||||
result[direction].speed.toString() || '';
|
||||
} else {
|
||||
outputRow[direction] = '';
|
||||
}
|
||||
break;
|
||||
default:
|
||||
throw new Error(util.format('*** Unknown expectation format: %s', want));
|
||||
}
|
||||
|
||||
if (this.FuzzyMatch.match(outputRow[direction], want)) {
|
||||
outputRow[direction] = row[direction];
|
||||
outputRow[direction] = [usingShortcut ? usingShortcut : row[direction]];
|
||||
}
|
||||
});
|
||||
|
||||
cb(null, outputRow);
|
||||
});
|
||||
};
|
||||
|
||||
this.processRowsAndDiff(table, testRow, callback);
|
||||
});
|
||||
});
|
||||
@ -102,6 +127,23 @@ module.exports = function () {
|
||||
var parseRes = (key, scb) => {
|
||||
if (result.forw[key] === result.backw[key]) {
|
||||
result.bothw[key] = result.forw[key];
|
||||
// FIXME these time and speed checks are stopgaps for precision errors in how
|
||||
// OSRM returns inconsistent durations for rev/for requests along the same way
|
||||
} else if (key === 'time') {
|
||||
var range = [result.forw[key] - 1, result.forw[key] + 1];
|
||||
if (result.backw[key] >= range[0] && result.backw[key] <= range[1])
|
||||
// usually when we see minor differences here there's an integer
|
||||
// duration value and one that comes back with a .9 or .1 rounding.
|
||||
// This returns the integer one
|
||||
result.bothw[key] = parseInt(result.forw[key]) === result.forw[key] ? result.forw[key] : result.backw[key];
|
||||
else
|
||||
result.bothw[key] = 'diff';
|
||||
} else if (key === 'speed') {
|
||||
if (Math.abs(result.backw.time - result.forw.time) < 0.2) {
|
||||
result.bothw[key] = parseInt(result.forw[key]) === result.forw[key] ? result.forw[key] : result.backw[key];
|
||||
} else {
|
||||
result.bothw[key] = 'diff';
|
||||
}
|
||||
} else {
|
||||
result.bothw[key] = 'diff';
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user