2016-05-25 09:24:11 -04:00
|
|
|
@routing @guidance
|
|
|
|
Feature: Slipways and Dedicated Turn Lanes
|
|
|
|
|
|
|
|
Background:
|
|
|
|
Given the profile "car"
|
|
|
|
Given a grid size of 5 meters
|
|
|
|
|
|
|
|
Scenario: Turn Instead of Ramp
|
|
|
|
Given the node map
|
2016-09-30 03:33:08 -04:00
|
|
|
"""
|
|
|
|
e
|
2016-12-19 03:56:49 -05:00
|
|
|
a b-----c-d
|
2016-10-19 13:08:48 -04:00
|
|
|
`--h |
|
|
|
|
||
|
|
|
|
1||
|
|
|
|
||
|
|
|
|
`f
|
|
|
|
|
|
2016-09-30 03:33:08 -04:00
|
|
|
g
|
|
|
|
"""
|
2016-05-25 09:24:11 -04:00
|
|
|
|
|
|
|
And the ways
|
2016-10-26 17:32:29 -04:00
|
|
|
| nodes | highway | name | oneway |
|
|
|
|
| abc | trunk | first | |
|
|
|
|
| cd | trunk | first | |
|
|
|
|
| bhf | trunk_link | | yes |
|
|
|
|
| cfg | primary | second | yes |
|
|
|
|
| ec | primary | second | |
|
2016-05-25 09:24:11 -04:00
|
|
|
|
2016-05-26 09:21:09 -04:00
|
|
|
And the relations
|
|
|
|
| type | way:from | way:to | node:via | restriction |
|
2016-10-21 04:39:06 -04:00
|
|
|
| restriction | abc | cfg | c | no_right_turn |
|
2016-05-26 09:21:09 -04:00
|
|
|
|
2016-05-25 09:24:11 -04:00
|
|
|
When I route I should get
|
2016-11-29 04:23:13 -05:00
|
|
|
| waypoints | route | turns |
|
|
|
|
| a,g | first,second,second | depart,turn right,arrive |
|
|
|
|
| a,1 | first,, | depart,turn right,arrive |
|
2016-05-25 09:24:11 -04:00
|
|
|
|
2016-10-20 06:15:36 -04:00
|
|
|
Scenario: Turn Instead of Ramp - Max-Speed
|
|
|
|
Given the node map
|
|
|
|
"""
|
|
|
|
e
|
2016-10-21 05:18:26 -04:00
|
|
|
a-b-----c-------------------------d
|
2016-10-19 13:08:48 -04:00
|
|
|
`--h |
|
2016-10-20 06:15:36 -04:00
|
|
|
||
|
|
|
|
1||
|
2016-10-19 13:08:48 -04:00
|
|
|
||
|
|
|
|
`f
|
2016-10-20 06:15:36 -04:00
|
|
|
|
|
|
|
|
g
|
|
|
|
"""
|
|
|
|
|
|
|
|
And the ways
|
2016-10-26 17:32:29 -04:00
|
|
|
| nodes | highway | name | maxspeed | oneway |
|
|
|
|
| abc | trunk | first | 70 | |
|
|
|
|
| cd | trunk | first | 2 | |
|
|
|
|
| bhf | trunk_link | | 2 | yes |
|
|
|
|
| cfg | primary | second | 50 | yes |
|
|
|
|
| ec | primary | second | 50 | |
|
2016-10-20 06:15:36 -04:00
|
|
|
|
|
|
|
And the relations
|
|
|
|
| type | way:from | way:to | node:via | restriction |
|
2016-10-21 05:18:26 -04:00
|
|
|
| restriction | abc | cfg | c | no_right_turn |
|
2016-10-20 06:15:36 -04:00
|
|
|
|
|
|
|
When I route I should get
|
2016-11-29 04:23:13 -05:00
|
|
|
| waypoints | route | turns |
|
|
|
|
| a,g | first,second,second | depart,turn right,arrive |
|
|
|
|
| a,1 | first,, | depart,turn right,arrive |
|
2016-10-20 06:15:36 -04:00
|
|
|
|
|
|
|
|
2016-05-25 09:24:11 -04:00
|
|
|
Scenario: Turn Instead of Ramp
|
|
|
|
Given the node map
|
2016-09-30 03:33:08 -04:00
|
|
|
"""
|
|
|
|
e
|
2016-12-19 03:56:49 -05:00
|
|
|
|
|
|
|
|
…
|
|
|
|
a-b-----c--d
|
|
|
|
`--h …
|
2016-10-19 13:08:48 -04:00
|
|
|
\|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-09-30 03:33:08 -04:00
|
|
|
f
|
2016-10-19 13:08:48 -04:00
|
|
|
|
|
|
|
|
|
|
2016-09-30 03:33:08 -04:00
|
|
|
g
|
|
|
|
"""
|
2016-05-25 09:24:11 -04:00
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | highway | name |
|
|
|
|
| abcd | motorway | first |
|
|
|
|
| bhf | motorway_link | |
|
|
|
|
| efg | primary | second |
|
|
|
|
|
|
|
|
When I route I should get
|
2016-11-29 04:23:13 -05:00
|
|
|
| waypoints | route | turns |
|
|
|
|
| a,g | first,,second,second | depart,off ramp right,turn straight,arrive |
|
2016-05-25 09:24:11 -04:00
|
|
|
|
2016-08-17 03:49:19 -04:00
|
|
|
Scenario: Turn Instead of Ramp
|
|
|
|
Given the node map
|
|
|
|
"""
|
|
|
|
e
|
2016-12-19 03:56:49 -05:00
|
|
|
|
|
|
|
|
…
|
|
|
|
a-b-----c-d
|
|
|
|
`--h …
|
2016-10-19 13:08:48 -04:00
|
|
|
\|
|
|
|
|
|
|
|
|
|
|
|
2016-08-17 03:49:19 -04:00
|
|
|
f
|
2016-10-19 13:08:48 -04:00
|
|
|
|
|
|
|
|
|
|
2016-08-17 03:49:19 -04:00
|
|
|
g
|
|
|
|
"""
|
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | highway | name |
|
|
|
|
| abcd | motorway | first |
|
|
|
|
| bhf | motorway_link | |
|
|
|
|
| efg | primary | second |
|
|
|
|
|
|
|
|
When I route I should get
|
2016-11-29 04:23:13 -05:00
|
|
|
| waypoints | route | turns |
|
|
|
|
| a,g | first,,second,second | depart,off ramp right,turn straight,arrive |
|
2016-08-17 03:49:19 -04:00
|
|
|
|
2016-05-25 09:24:11 -04:00
|
|
|
Scenario: Inner city expressway with on road
|
|
|
|
Given the node map
|
2016-09-30 03:33:08 -04:00
|
|
|
"""
|
2016-12-19 03:56:49 -05:00
|
|
|
a b-------c-g
|
2016-10-19 13:08:48 -04:00
|
|
|
`--f |
|
|
|
|
\|
|
|
|
|
|
|
|
|
|
|
|
2016-09-30 03:33:08 -04:00
|
|
|
d
|
2016-10-19 13:08:48 -04:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2016-09-30 03:33:08 -04:00
|
|
|
e
|
|
|
|
"""
|
2016-05-25 09:24:11 -04:00
|
|
|
|
|
|
|
And the ways
|
2016-10-26 17:32:29 -04:00
|
|
|
| nodes | highway | name | oneway |
|
|
|
|
| abc | primary | road | |
|
|
|
|
| cg | primary | road | |
|
|
|
|
| bfd | trunk_link | | yes |
|
|
|
|
| cde | trunk | trunk | yes |
|
2016-05-25 09:24:11 -04:00
|
|
|
|
2016-05-26 09:21:09 -04:00
|
|
|
And the relations
|
|
|
|
| type | way:from | way:to | node:via | restriction |
|
|
|
|
| restriction | abc | cde | c | no_right_turn |
|
|
|
|
|
2016-05-25 09:24:11 -04:00
|
|
|
When I route I should get
|
|
|
|
| waypoints | route | turns |
|
|
|
|
| a,e | road,trunk,trunk | depart,turn right,arrive |
|
|
|
|
|
|
|
|
|
|
|
|
Scenario: Slipway Round U-Turn
|
|
|
|
Given the node map
|
2016-09-30 03:33:08 -04:00
|
|
|
"""
|
|
|
|
a f
|
2016-10-19 13:08:48 -04:00
|
|
|
| |
|
2016-09-30 03:33:08 -04:00
|
|
|
b e
|
2016-10-19 13:08:48 -04:00
|
|
|
|\ /|
|
|
|
|
| | |
|
|
|
|
| g |
|
|
|
|
| |
|
2016-09-30 03:33:08 -04:00
|
|
|
c d
|
|
|
|
"""
|
2016-05-25 09:24:11 -04:00
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | highway | name | oneway |
|
|
|
|
| abc | primary | road | yes |
|
|
|
|
| bge | primary_link | | yes |
|
|
|
|
| def | primary | road | yes |
|
|
|
|
|
|
|
|
When I route I should get
|
|
|
|
| waypoints | route | turns |
|
|
|
|
| a,f | road,road,road | depart,continue uturn,arrive |
|
|
|
|
|
|
|
|
Scenario: Slipway Steep U-Turn
|
|
|
|
Given the node map
|
2016-09-30 03:33:08 -04:00
|
|
|
"""
|
|
|
|
a f
|
2016-10-19 13:08:48 -04:00
|
|
|
| |
|
2016-09-30 03:33:08 -04:00
|
|
|
b e
|
2016-10-19 13:08:48 -04:00
|
|
|
|\g/|
|
|
|
|
| |
|
|
|
|
| |
|
2016-09-30 03:33:08 -04:00
|
|
|
c d
|
|
|
|
"""
|
2016-05-25 09:24:11 -04:00
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | highway | name | oneway |
|
|
|
|
| abc | primary | road | yes |
|
|
|
|
| bge | primary_link | | yes |
|
|
|
|
| def | primary | road | yes |
|
|
|
|
|
|
|
|
When I route I should get
|
|
|
|
| waypoints | route | turns |
|
|
|
|
| a,f | road,road,road | depart,continue uturn,arrive |
|
2016-06-27 11:05:13 -04:00
|
|
|
|
|
|
|
Scenario: Schwarzwaldstrasse Autobahn
|
|
|
|
Given the node map
|
2016-09-30 03:33:08 -04:00
|
|
|
"""
|
2016-10-13 03:59:10 -04:00
|
|
|
. i . . . . . h . . . . g
|
|
|
|
.j '. . '
|
|
|
|
a . k
|
|
|
|
' b . r c . d . e . . . . f
|
|
|
|
. . .
|
|
|
|
. . .
|
|
|
|
. . .
|
|
|
|
. . .
|
|
|
|
l . .
|
|
|
|
m . .
|
2016-09-30 03:33:08 -04:00
|
|
|
n q
|
2016-10-13 03:59:10 -04:00
|
|
|
. .
|
|
|
|
. .
|
|
|
|
. .
|
2016-09-30 03:33:08 -04:00
|
|
|
o p
|
|
|
|
"""
|
2016-06-27 11:05:13 -04:00
|
|
|
|
|
|
|
And the nodes
|
|
|
|
# the traffic light at `l` is not actually in the data, but necessary for the test to check everything
|
|
|
|
# http://www.openstreetmap.org/#map=19/48.99211/8.40336
|
|
|
|
| node | highway |
|
|
|
|
| r | traffic_signals |
|
|
|
|
| l | traffic_signals |
|
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | highway | name | ref | oneway |
|
|
|
|
| abrcd | secondary | Schwarzwaldstrasse | L561 | yes |
|
|
|
|
| hija | secondary | Schwarzwaldstrasse | L561 | yes |
|
|
|
|
| def | secondary | Ettlinger Strasse | | yes |
|
|
|
|
| gh | secondary | Ettlinger Strasse | | yes |
|
|
|
|
| blmn | secondary_link | | L561 | yes |
|
|
|
|
| hkc | secondary_link | Ettlinger Strasse | | yes |
|
|
|
|
| qdki | secondary_link | Ettlinger Allee | | yes |
|
|
|
|
| cn | secondary_link | Ettlinger Allee | | yes |
|
|
|
|
| no | primary | Ettlinger Allee | | yes |
|
|
|
|
| pq | primary | Ettlinger Allee | | yes |
|
|
|
|
| qe | secondary_link | Ettlinger Allee | | yes |
|
|
|
|
|
|
|
|
When I route I should get
|
2016-10-26 17:32:29 -04:00
|
|
|
| waypoints | route | turns | ref |
|
|
|
|
| a,o | Schwarzwaldstrasse,Ettlinger Allee,Ettlinger Allee | depart,turn right,arrive | L561,L561, |
|
2016-07-04 06:19:49 -04:00
|
|
|
|
|
|
|
Scenario: Traffic Lights everywhere
|
|
|
|
#http://map.project-osrm.org/?z=18¢er=48.995336%2C8.383813&loc=48.995467%2C8.384548&loc=48.995115%2C8.382761&hl=en&alt=0
|
|
|
|
Given the node map
|
2016-09-30 03:33:08 -04:00
|
|
|
"""
|
|
|
|
a k l j
|
|
|
|
d b c i
|
|
|
|
|
|
|
|
e g
|
|
|
|
|
|
|
|
1
|
|
|
|
h
|
|
|
|
|
|
|
|
f
|
|
|
|
"""
|
2016-07-04 06:19:49 -04:00
|
|
|
|
|
|
|
And the nodes
|
|
|
|
| node | highway |
|
|
|
|
| b | traffic_signals |
|
|
|
|
| e | traffic_signals |
|
|
|
|
| g | traffic_signals |
|
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | highway | name | oneway |
|
|
|
|
| aklbci | secondary | Ebertstrasse | yes |
|
|
|
|
| kdeh | secondary_link | | yes |
|
|
|
|
| jcghf | primary | Brauerstrasse | yes |
|
|
|
|
|
|
|
|
When I route I should get
|
2016-12-05 06:02:07 -05:00
|
|
|
| waypoints | route | turns |
|
|
|
|
| a,i | Ebertstrasse,Ebertstrasse | depart,arrive |
|
|
|
|
| a,l | Ebertstrasse,Ebertstrasse | depart,arrive |
|
|
|
|
| a,f | Ebertstrasse,Brauerstrasse,Brauerstrasse | depart,turn right,arrive |
|
|
|
|
| a,1 | Ebertstrasse,, | depart,turn slight right,arrive |
|
2016-09-02 08:06:38 -04:00
|
|
|
|
|
|
|
#2839
|
|
|
|
Scenario: Self-Loop
|
|
|
|
Given the node map
|
2016-09-30 03:33:08 -04:00
|
|
|
"""
|
2016-10-19 13:08:48 -04:00
|
|
|
/-l-----k---\
|
|
|
|
/ `j--
|
|
|
|
m \
|
|
|
|
/ i
|
|
|
|
/ \
|
|
|
|
| \
|
|
|
|
| h
|
|
|
|
| |
|
|
|
|
n |
|
|
|
|
| |
|
|
|
|
| g
|
|
|
|
o |
|
|
|
|
/ /
|
|
|
|
| f
|
|
|
|
/- p /
|
|
|
|
/ e
|
|
|
|
a ------- b --------------- c ----------------- d ---/
|
2016-09-30 03:33:08 -04:00
|
|
|
"""
|
2016-09-02 08:06:38 -04:00
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | name | oneway | highway | lanes |
|
|
|
|
| abc | circled | no | residential | 1 |
|
|
|
|
| cdefghijklmnopc | circled | yes | residential | 1 |
|
|
|
|
|
|
|
|
When I route I should get
|
|
|
|
| waypoints | bearings | route | turns |
|
|
|
|
| b,a | 90,10 270,10 | circled,circled | depart,arrive |
|
|
|
|
|
|
|
|
@todo
|
|
|
|
#due to the current turn function, the left turn bcp is exactly the same cost as pcb, a right turn. The right turn should be way faster,though
|
|
|
|
#for that reason we cannot distinguish between driving clockwise through the circle or counter-clockwise. Until this is improved, this case here
|
|
|
|
#has to remain as todo (see #https://github.com/Project-OSRM/osrm-backend/pull/2849)
|
|
|
|
Scenario: Self-Loop - Bidirectional
|
|
|
|
Given the node map
|
2016-09-30 03:33:08 -04:00
|
|
|
"""
|
2016-10-19 13:08:48 -04:00
|
|
|
/-l-----k---\
|
|
|
|
/ `j--
|
|
|
|
m \
|
|
|
|
/ i
|
|
|
|
/ \
|
|
|
|
| \
|
|
|
|
| h
|
|
|
|
| |
|
|
|
|
n |
|
|
|
|
| |
|
|
|
|
| g
|
|
|
|
o |
|
|
|
|
/ /
|
|
|
|
| f
|
|
|
|
/- p /
|
|
|
|
/ e
|
|
|
|
a ------- b --------------- c ----------------- d ---/
|
2016-09-30 03:33:08 -04:00
|
|
|
"""
|
2016-09-02 08:06:38 -04:00
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | name | oneway | highway | lanes |
|
|
|
|
| abc | circled | no | residential | 1 |
|
|
|
|
| cdefghijklmnopc | circled | no | residential | 1 |
|
|
|
|
|
|
|
|
When I route I should get
|
|
|
|
| waypoints | bearings | route | turns |
|
|
|
|
| b,a | 90,10 270,10 | circled,circled | depart,arrive |
|
2016-09-13 07:17:18 -04:00
|
|
|
|
|
|
|
#http://www.openstreetmap.org/#map=19/38.90597/-77.01276
|
|
|
|
Scenario: Don't falsly classify as sliproads
|
|
|
|
Given the node map
|
2016-09-30 03:33:08 -04:00
|
|
|
"""
|
|
|
|
j
|
2016-10-19 13:08:48 -04:00
|
|
|
a-b ----------------------------------------- c ------------d
|
|
|
|
\ |
|
|
|
|
\ |
|
|
|
|
\ |
|
|
|
|
\ |
|
|
|
|
\ |
|
|
|
|
e |
|
|
|
|
\ |
|
|
|
|
\ |
|
|
|
|
\ |
|
|
|
|
\ |
|
|
|
|
\ |
|
|
|
|
\ |
|
|
|
|
\ |
|
|
|
|
\ |
|
|
|
|
\ |
|
|
|
|
\ |
|
|
|
|
\ |
|
|
|
|
\ |
|
|
|
|
\ |
|
|
|
|
\ |
|
|
|
|
\ 1
|
|
|
|
`---------- f ------- g ----------\
|
|
|
|
| \
|
2016-09-30 03:33:08 -04:00
|
|
|
i h
|
|
|
|
"""
|
2016-09-13 07:17:18 -04:00
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | name | highway | oneway | maxspeed |
|
|
|
|
| abcd | new york | primary | yes | 35 |
|
|
|
|
| befgh | m street | secondary | yes | 35 |
|
|
|
|
| igcj | 1st street | tertiary | no | 20 |
|
|
|
|
|
|
|
|
And the nodes
|
|
|
|
| node | highway |
|
|
|
|
| c | traffic_signals |
|
|
|
|
| g | traffic_signals |
|
|
|
|
|
|
|
|
When I route I should get
|
|
|
|
| waypoints | route | turns | # |
|
|
|
|
| a,d | new york,new york | depart,arrive | this is the sinatra route |
|
|
|
|
| a,j | new york,1st street,1st street | depart,turn left,arrive | |
|
|
|
|
| a,1 | new york,m street,1st street,1st street | depart,turn right,turn left,arrive | this can false be seen as a sliproad |
|
2016-09-19 06:56:13 -04:00
|
|
|
|
|
|
|
# Merging into degree two loop on dedicated turn detection / 2927
|
|
|
|
Scenario: Turn Instead of Ramp
|
|
|
|
Given the node map
|
2016-09-30 03:33:08 -04:00
|
|
|
"""
|
2016-10-19 13:08:48 -04:00
|
|
|
/--------------------f
|
|
|
|
g-----------h--\ |
|
|
|
|
d-----e
|
|
|
|
i c-----------j--/
|
|
|
|
| |
|
|
|
|
| |
|
|
|
|
| |
|
|
|
|
| |
|
|
|
|
| |
|
|
|
|
\ /
|
|
|
|
\ /
|
|
|
|
\ /
|
2016-09-30 03:33:08 -04:00
|
|
|
b
|
2016-10-19 13:08:48 -04:00
|
|
|
|
|
2016-09-30 03:33:08 -04:00
|
|
|
a
|
|
|
|
"""
|
2016-09-19 06:56:13 -04:00
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | highway | name | oneway |
|
|
|
|
| abi | primary | road | yes |
|
|
|
|
| bcjd | primary | loop | yes |
|
|
|
|
| dhgf | primary | loop | yes |
|
|
|
|
| fed | primary | loop | yes |
|
|
|
|
|
|
|
|
And the nodes
|
|
|
|
| node | highway |
|
|
|
|
| g | traffic_signals |
|
|
|
|
| c | traffic_signals |
|
|
|
|
|
|
|
|
# We don't actually care about routes here, this is all about endless loops in turn discovery
|
|
|
|
When I route I should get
|
|
|
|
| waypoints | route | turns |
|
|
|
|
| a,i | road,road,road | depart,fork slight left,arrive |
|
2016-10-26 17:32:29 -04:00
|
|
|
|
|
|
|
|
|
|
|
# The following tests are current false positives / false negatives #3199
|
|
|
|
|
|
|
|
@sliproads
|
|
|
|
# http://www.openstreetmap.org/#map=19/52.59847/13.14815
|
|
|
|
Scenario: Sliproad Detection
|
|
|
|
Given the node map
|
|
|
|
"""
|
|
|
|
a . . .
|
|
|
|
. .
|
|
|
|
b . . . . . . c . . . d
|
|
|
|
` . .
|
|
|
|
e . .
|
|
|
|
` . .
|
|
|
|
f . .
|
|
|
|
` . .
|
|
|
|
g i
|
|
|
|
` h .
|
|
|
|
"""
|
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | highway | name |
|
|
|
|
| abefgh | residential | Nachtigallensteig |
|
|
|
|
| bcd | residential | Kiebitzsteig |
|
|
|
|
| cg | residential | Haenflingsteig |
|
|
|
|
| hid | residential | Waldkauzsteig |
|
|
|
|
|
|
|
|
When I route I should get
|
|
|
|
| waypoints | route | turns |
|
|
|
|
| a,d | Nachtigallensteig,Kiebitzsteig,Kiebitzsteig | depart,turn left,arrive |
|
|
|
|
| a,h | Nachtigallensteig,Nachtigallensteig | depart,arrive |
|
|
|
|
|
|
|
|
|
|
|
|
@sliproads
|
|
|
|
Scenario: Not a obvious Sliproad
|
|
|
|
Given the node map
|
|
|
|
"""
|
|
|
|
d
|
|
|
|
.
|
|
|
|
s . a . . b . . c
|
|
|
|
` .
|
|
|
|
` e
|
|
|
|
.`
|
|
|
|
. `
|
|
|
|
f g
|
|
|
|
"""
|
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | highway | name | oneway |
|
|
|
|
| sabc | primary | sabc | |
|
|
|
|
| dbef | primary | dbef | yes |
|
|
|
|
| aeg | primary | aeg | yes |
|
|
|
|
|
|
|
|
When I route I should get
|
|
|
|
| waypoints | route | turns |
|
|
|
|
| s,f | sabc,aeg,dbef,dbef | depart,turn right,turn right,arrive |
|
|
|
|
|
|
|
|
@sliproads
|
|
|
|
Scenario: Through Street, not a Sliproad although obvious
|
|
|
|
Given the node map
|
|
|
|
"""
|
|
|
|
d
|
|
|
|
.
|
|
|
|
s . a . . b . . c
|
|
|
|
` .
|
|
|
|
` e
|
|
|
|
. `
|
|
|
|
. `
|
|
|
|
f g
|
|
|
|
"""
|
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | highway | name | oneway |
|
|
|
|
| sabc | primary | sabc | |
|
|
|
|
| dbef | primary | dbef | yes |
|
|
|
|
| aeg | primary | aeg | yes |
|
|
|
|
|
|
|
|
When I route I should get
|
|
|
|
| waypoints | route | turns |
|
|
|
|
| s,f | sabc,aeg,dbef,dbef | depart,turn right,turn right,arrive |
|
|
|
|
|
|
|
|
@sliproads
|
|
|
|
Scenario: Sliproad target turn is restricted
|
|
|
|
Given the node map
|
|
|
|
"""
|
|
|
|
d
|
|
|
|
.
|
|
|
|
s . a . . . . b . . c
|
|
|
|
` .
|
|
|
|
` .
|
|
|
|
` .
|
|
|
|
` .
|
|
|
|
`.
|
|
|
|
e
|
|
|
|
.`
|
|
|
|
f `
|
|
|
|
. ` g
|
|
|
|
"""
|
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | highway | name | oneway |
|
|
|
|
| sa | primary | sabc | |
|
|
|
|
| abc | primary | sabc | |
|
|
|
|
| dbe | primary | dbef | yes |
|
|
|
|
| ef | primary | dbef | |
|
|
|
|
| ae | primary | aeg | yes |
|
|
|
|
| eg | primary | aeg | |
|
|
|
|
# the reason we have to split ways at e is that otherwise we can't handle restrictions via e
|
|
|
|
|
|
|
|
And the relations
|
|
|
|
| type | way:from | way:to | node:via | restriction |
|
|
|
|
| restriction | ae | ef | e | no_right_turn |
|
|
|
|
|
|
|
|
When I route I should get
|
|
|
|
| waypoints | route | turns |
|
|
|
|
| s,f | sabc,dbef,dbef | depart,turn right,arrive |
|
|
|
|
| s,g | sabc,aeg,aeg | depart,turn right,arrive |
|
|
|
|
|
|
|
|
@sliproads
|
|
|
|
Scenario: Not a Sliproad, road not continuing straight
|
|
|
|
Given the node map
|
|
|
|
"""
|
|
|
|
d
|
|
|
|
.
|
|
|
|
s . a . . b . . c
|
|
|
|
` .
|
|
|
|
` e . . g
|
|
|
|
"""
|
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | highway | name | oneway |
|
|
|
|
| sabc | primary | sabc | |
|
|
|
|
| dbe | primary | dbe | yes |
|
|
|
|
| aeg | primary | aeg | yes |
|
|
|
|
|
|
|
|
When I route I should get
|
|
|
|
| waypoints | route | turns |
|
|
|
|
| s,c | sabc,sabc | depart,arrive |
|
|
|
|
| s,g | sabc,aeg,aeg | depart,turn right,arrive |
|
|
|
|
|
|
|
|
@sliproads
|
|
|
|
Scenario: Intersection too far away with Traffic Light shortly after initial split
|
|
|
|
Given the node map
|
|
|
|
"""
|
|
|
|
d
|
|
|
|
.
|
|
|
|
s . a . . . . . . . . . . . . . t . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . b . . c
|
|
|
|
` . . . . . . . . . . . .
|
|
|
|
` . . . . . . . . . . . .
|
|
|
|
` . . . . . . . . . . . .
|
|
|
|
` . . . . . . . . . . . .
|
|
|
|
` . . . . . . . . . . . .
|
|
|
|
` . . . . . . . . . . . .
|
|
|
|
` . . .
|
|
|
|
` e
|
|
|
|
.
|
|
|
|
f
|
|
|
|
.
|
|
|
|
"""
|
|
|
|
|
|
|
|
And the nodes
|
|
|
|
| node | highway |
|
|
|
|
| t | traffic_signals |
|
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | highway | name | oneway |
|
|
|
|
| satbc | primary | sabc | |
|
|
|
|
| dbef | primary | dbef | yes |
|
|
|
|
| ae | primary | ae | yes |
|
|
|
|
|
|
|
|
When I route I should get
|
|
|
|
| waypoints | route | turns |
|
|
|
|
| s,f | sabc,ae,dbef,dbef | depart,turn slight right,turn right,arrive |
|
|
|
|
|
|
|
|
@sliproads
|
|
|
|
Scenario: Traffic Signal on Sliproad
|
|
|
|
Given the node map
|
|
|
|
"""
|
|
|
|
d
|
|
|
|
.
|
|
|
|
s . a . . . . . b . . c
|
|
|
|
` .
|
|
|
|
` .
|
|
|
|
` .
|
|
|
|
t .
|
|
|
|
` .
|
|
|
|
e
|
|
|
|
.
|
|
|
|
.
|
|
|
|
f
|
|
|
|
"""
|
|
|
|
|
|
|
|
And the nodes
|
|
|
|
| node | highway |
|
|
|
|
| t | traffic_signals |
|
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | highway | name | oneway |
|
|
|
|
| sabc | primary | sabc | |
|
|
|
|
| dbe | primary | dbe | yes |
|
|
|
|
| ef | primary | ef | |
|
|
|
|
| ate | primary | ate | yes |
|
|
|
|
|
|
|
|
When I route I should get
|
|
|
|
| waypoints | route | turns |
|
|
|
|
| s,f | sabc,ef,ef | depart,turn right,arrive |
|
|
|
|
|
|
|
|
@sliproads
|
|
|
|
Scenario: Sliproad tagged as link
|
|
|
|
Given the node map
|
|
|
|
"""
|
|
|
|
d
|
|
|
|
.
|
|
|
|
s . a . . . . . b . . c
|
|
|
|
` .
|
|
|
|
` .
|
|
|
|
` .
|
|
|
|
` .
|
|
|
|
` .
|
|
|
|
e
|
|
|
|
.
|
|
|
|
.
|
|
|
|
f
|
|
|
|
"""
|
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | highway | name | oneway |
|
|
|
|
| sabc | motorway | sabc | |
|
|
|
|
| dbef | motorway | dbef | yes |
|
|
|
|
| ae | motorway_link | ae | yes |
|
|
|
|
|
|
|
|
When I route I should get
|
|
|
|
| waypoints | route | turns |
|
|
|
|
| s,f | sabc,dbef,dbef | depart,turn right,arrive |
|
|
|
|
|
|
|
|
@sliproads
|
|
|
|
Scenario: Sliproad with same-ish names
|
|
|
|
Given the node map
|
|
|
|
"""
|
|
|
|
d
|
|
|
|
.
|
|
|
|
s . a . . b . . c
|
|
|
|
` .
|
|
|
|
. e
|
|
|
|
..
|
|
|
|
.
|
|
|
|
f
|
|
|
|
.
|
|
|
|
t
|
|
|
|
"""
|
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | highway | name | ref | oneway |
|
|
|
|
| sabc | primary | main | | |
|
|
|
|
| dbe | primary | crossing | r0 | yes |
|
|
|
|
| eft | primary | crossing | r0;r1 | yes |
|
|
|
|
| af | primary | sliproad | | yes |
|
|
|
|
|
|
|
|
When I route I should get
|
|
|
|
| waypoints | route | turns |
|
|
|
|
| s,t | main,crossing,crossing | depart,turn right,arrive |
|
|
|
|
|
|
|
|
@sliproads
|
|
|
|
Scenario: Not a Sliproad, name mismatch
|
|
|
|
Given the node map
|
|
|
|
"""
|
|
|
|
d
|
|
|
|
.
|
|
|
|
s . a . . b . . c
|
|
|
|
` .
|
|
|
|
. e
|
|
|
|
. .
|
|
|
|
..
|
|
|
|
.
|
|
|
|
f
|
|
|
|
.
|
|
|
|
t
|
|
|
|
"""
|
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | highway | name | oneway |
|
|
|
|
| sabc | primary | main | |
|
|
|
|
| dbe | primary | top | yes |
|
|
|
|
| ef | primary | bottom | yes |
|
|
|
|
| ft | primary | away | yes |
|
|
|
|
| af | primary | sliproad | yes |
|
|
|
|
|
|
|
|
When I route I should get
|
|
|
|
| waypoints | route | turns |
|
|
|
|
| s,t | main,away,away | depart,turn right,arrive |
|
|
|
|
|
|
|
|
@sliproads
|
|
|
|
Scenario: Not a Sliproad, low road priority
|
|
|
|
Given the node map
|
|
|
|
"""
|
|
|
|
d
|
|
|
|
.
|
|
|
|
s . a . . b . . c
|
|
|
|
` .
|
|
|
|
. e
|
|
|
|
. .
|
|
|
|
..
|
|
|
|
.
|
|
|
|
f
|
|
|
|
.
|
|
|
|
t
|
|
|
|
"""
|
|
|
|
|
|
|
|
And the ways
|
|
|
|
# maxspeed otherwise service road will never be routed over and we won't see instructions
|
|
|
|
| nodes | highway | name | maxspeed | oneway |
|
|
|
|
| sabc | primary | main | 30 km/h | |
|
|
|
|
| dbe | primary | crossing | 30 km/h | yes |
|
|
|
|
| eft | primary | crossing | 30 km/h | yes |
|
|
|
|
| ft | primary | away | 30 km/h | yes |
|
|
|
|
| af | service | sliproad | 30 km/h | yes |
|
|
|
|
|
|
|
|
When I route I should get
|
|
|
|
| waypoints | route | turns |
|
|
|
|
| s,t | main,away,away | depart,turn right,arrive |
|
|
|
|
|
|
|
|
@sliproads
|
|
|
|
Scenario: Not a Sliproad, more than three roads at target intersection
|
|
|
|
Given the node map
|
|
|
|
"""
|
|
|
|
d
|
|
|
|
.
|
|
|
|
s . a . . b . . c
|
|
|
|
` .
|
|
|
|
. e
|
|
|
|
. .
|
|
|
|
..
|
|
|
|
. h
|
|
|
|
f .
|
|
|
|
. g
|
|
|
|
t
|
|
|
|
"""
|
|
|
|
|
|
|
|
And the ways
|
|
|
|
| nodes | highway | name | oneway |
|
|
|
|
| sabc | primary | main | |
|
|
|
|
| dbe | primary | top | yes |
|
|
|
|
| eft | primary | bottom | yes |
|
|
|
|
| fh | primary | another | |
|
|
|
|
| fg | primary | another | |
|
|
|
|
| af | primary | sliproad | yes |
|
|
|
|
|
|
|
|
When I route I should get
|
|
|
|
| waypoints | route | turns |
|
|
|
|
| s,g | main,sliproad,another,another | depart,turn right,turn left,arrive |
|