osrm-backend/features/guidance/obvious-turn-discovery.feature
Siarhei Fedartsou aadc088084
Fix distance calculation consistency. (#6315)
Consolidate great circle distance calculations to use cheap ruler library.
2022-08-19 22:31:40 +01:00

1242 lines
40 KiB
Gherkin

@routing @guidance @obvious
Feature: Simple Turns
Background:
Given the profile "car"
Given a grid size of 10 meters
# https://www.openstreetmap.org/#map=19/52.51802/13.31337
Scenario: Crossing a square
Given the node map
"""
d
|
e - - - - - - - c - g
| |
| |
| |
| |
f - - - - - - - b
|
a
"""
And the ways
| nodes | highway | name | oneway |
| ab | residential | losch | no |
| cd | residential | ron | no |
| cefb | residential | alt | yes |
| bc | residential | alt | no |
| gc | residential | guer | no |
When I route I should get
| from | to | route | turns |
| a | d | losch,ron | depart,arrive |
# https://www.openstreetmap.org/#map=18/52.51355/13.21988
Scenario: Turning tertiary next to residential
Given the node map
"""
a - - - b - - - - c
|
d
` _
`-_
e
"""
And the ways
| nodes | highway | name |
| abde | tertiary | havel |
| bc | residential | anger |
When I route I should get
| from | to | route | turns |
| a | c | havel,anger | depart,arrive |
| a | e | havel,havel,havel | depart,continue right,arrive |
#https://www.openstreetmap.org/#map=19/52.50996/13.23183
Scenario: Tertiary turning at unclassified
Given the node map
"""
a - - - b - - - c
|
|
d
"""
And the ways
| nodes | highway |
| ab | tertiary |
| bd | tertiary |
| bc | unclassified |
When I route I should get
| from | to | route | turns |
| a | c | ab,bc | depart,arrive |
| a | d | ab,bd,bd | depart,turn right,arrive |
#https://www.openstreetmap.org/#map=19/52.50602/13.25468
# this scenario detects obvious correctly, but requires changes in collapsing roads
Scenario: Small offset due to large Intersection
Given the node map
"""
a - - - - - b - - - - - - c
|
d
` `
` `
f e
"""
And the ways
| nodes | highway |
| abc | residential |
| bde | residential |
| df | residential |
When I route I should get
| from | to | route | turns |
| a | e | abc,bde,bde,bde | depart,turn right,continue left,arrive |
| a | f | abc,bde,df,df | depart,turn right,turn right,arrive |
# https://www.openstreetmap.org/#map=19/52.49709/13.26620
# https://www.openstreetmap.org/#map=19/52.49458/13.26273
# scenario requires handling in post-processing
@todo
Scenario: Offsets in road
Given a grid size of 3 meters
Given the node map
"""
i
|
|
|
a - - - - - - - b e - - - - - - - - - f
`c - - - - - - - d`
| |
| |
| |
g h
"""
And the ways
| nodes | highway | name |
| abcdef | residential | Zikade |
| gc | residential | Lärche |
| hd | residential | Kiefer |
| ei | residential | Kiefer |
When I route I should get
| from | to | route | turns | locations |
| a | f | Zikade,Zikade | depart,arrive | a,f |
| f | a | Zikade,Zikade | depart,arrive | f,a |
| a | g | Zikade,Lärche,Lärche | depart,turn right,arrive | a,c,g |
| h | i | Kiefer,Kiefer | depart,arrive | h,i |
| i | h | Kiefer,Kiefer | depart,arrive | i,h |
| h | f | Kiefer,Zikade,Zikade | depart,turn right,arrive | h,d,f |
# https://www.openstreetmap.org/#map=20/52.49408/13.27375
Scenario: Straight on unnamed service
Given the node map
"""
a - - - - b - - - - c
` .
d
"""
And the ways
| nodes | highway | name |
| abc | service | |
| bd | service | |
When I route I should get
| from | to | route | turns | locations |
| a | c | , | depart,arrive | a,c |
| a | d | ,, | depart,turn slight right,arrive | a,b,d |
# https://www.openstreetmap.org/#map=19/52.49198/13.28069
Scenario: Curved roads at turn
Given the node map
"""
............g
.f
e```
/
a - - - - b
c
`
`
`
d
"""
And the ways
| nodes | highway | name | oneway |
| abcd | residential | herbert | yes |
| befg | residential | casper | yes |
When I route I should get
| from | to | route | turns |
| a | d | herbert,herbert,herbert | depart,continue right,arrive |
| a | g | herbert,casper,casper | depart,turn left,arrive |
# https://www.openstreetmap.org/#map=19/52.49189/13.28431
Scenario: Turning residential
Given the node map
"""
d
`
a - - - b
\
\
c
"""
And the ways
| nodes | highway | name | oneway |
| abc | residential | bismark | yes |
| bd | residential | caspar | yes |
When I route I should get
| from | to | route | turns |
| a | c | bismark,bismark,bismark | depart,continue right,arrive |
| a | d | bismark,caspar,caspar | depart,turn left,arrive |
# https://www.openstreetmap.org/#map=19/52.48681/13.28547
Scenario: Slight Loss in Category with turning road
Given the node map
"""
g
/
f
e ..c - - - - d
a - - - - b`````
"""
And the ways
| nodes | highway | name |
| ab | tertiary | warm |
| bcd | residential | warm |
| befg | tertiary | paul |
When I route I should get
| from | to | route | turns |
| a | d | warm,warm | depart,arrive |
| a | g | warm,paul,paul | depart,turn slight left,arrive |
# https://www.openstreetmap.org/#map=19/52.48820/13.29947
Scenario: Driveway within curved road
Given the node map
"""
f--e
\
`
g d
\ |
\|
c
w
./
.b
a-`
"""
And the ways
| nodes | highway | name | oneway |
| abc | residential | charlot | no |
| cdef | residential | fried | yes |
| gc | service | | |
When I route I should get
| from | to | route | turns |
| a | f | charlot,fried | depart,arrive |
| a | g | charlot,, | depart,turn left,arrive |
# https://www.openstreetmap.org/#map=20/52.46815/13.33984
Scenario: Curve onto end of the road
Given the node map
"""
d - - - - e - f-_
``g
h
a - - - - - - b - - _ _ _
` ` ` c
"""
And the ways
| nodes | highway | name |
| ab | residential | menz |
| defghbc | residential | rem |
When I route I should get
| from | to | route | turns |
| a | c | menz,rem | depart,arrive |
| d | c | rem,rem | depart,arrive |
| c | d | rem,rem,rem | depart,continue right,arrive |
| c | a | rem,menz | depart,arrive |
# https://www.openstreetmap.org/#map=19/37.58151/-122.34863
Scenario: Straight towards oneway street, Service Category, Unnamed
Given the node map
"""
a - - b - - c
|
d
"""
And the ways
| nodes | highway | name | oneway |
| ab | service | | |
| cb | service | | yes |
| bd | service | | |
When I route I should get
| from | to | route | turns |
| a | d | ,, | depart,turn right,arrive |
# https://www.openstreetmap.org/#map=19/37.61256/-122.40371
Scenario: Turning Road with Offset at Segregated Intersection
Given the node map
"""
i h
| |
| . f - - g
a _ | ` |
b - c - - d - - e
| |
| |
j k
"""
And the ways
| nodes | highway | name | oneway |
| abcd | residential | park | no |
| cfg | residential | diego | no |
| de | service | | yes |
| kdfh | primary | camino | yes |
| icj | primary | camino | yes |
When I route I should get
| from | to | route | turns |
| a | g | park,diego,diego | depart,turn slight left,arrive |
| a | h | park,diego,camino,camino | depart,turn slight left,turn left,arrive |
| a | j | park,camino,camino | depart,turn right,arrive |
# https://www.openstreetmap.org/#map=19/37.76407/-122.49642
Scenario: Road splitting of straight turn
Given the node map
"""
d - - - - e - - - - -.f - - - - g
.````````
a - - - - b - - - - - c
"""
And the ways
| nodes | highway | name | oneway |
| ab | secondary | 37 | yes |
| bc | residential | 37 | yes |
| bf | secondary_link | Sunset | yes |
| defg | secondary | Sunset | yes |
When I route I should get
| from | to | route | turns |
| a | c | 37,37 | depart,arrive |
| a | g | 37,Sunset,Sunset | depart,turn slight left,arrive |
# https://www.openstreetmap.org/#map=19/37.77072/-122.41727
# requires changes in post-processing
@todo
Scenario: Splitting road at traffic island before a turn
Given the node map
"""
_ _ e
.c - - - - - - - - - d - `
a - - b `
`f g` `
h `
| `
i `
.`.`
j.
.
.
.
k
"""
And the ways
| nodes | highway | name | oneway |
| ab | primary | howard | no |
| dcb | primary | howard | yes |
| bfghij | primary | howard | yes |
| edjk | primary | ness | yes |
When I route I should get
| from | to | route | turns | # |
| a | k | howard,ness,ness | depart,turn left,arrive | |
| e | k | ness,ness | depart,continue slight left,arrive | #if modelled better, a depart/arrive would be more desirable |
| e | a | ness,howard,howard | depart,turn slight right,arrive | |
# https://www.openstreetmap.org/#map=19/37.63171/-122.46205
# requires changes in post-processing
@todo
Scenario: Weird combination of turning roads
Given the node map
"""
a
|
b
|`
| e
| `f
| ` g _
| j-- - - - h - - i
k
| l - - - - m - - n
| q
| p
| o
|
|
c
|
d
"""
And the ways
| nodes | highway | name | oneway |
| abk | tertiary_link | loop | no |
| kcd | residential | loop | no |
| copqm | tertiary_link | | yes |
| klmn | tertiary_link | drive | yes |
| ih | tertiary_link | drive | yes |
| hjk | residential | drive | yes |
| hgfeb | tertiary_link | | yes |
When I route I should get
| from | to | turns | route |
| i | a | depart,turn right,arrive | drive,loop,loop |
| i | d | depart,turn left,arrive | drive,loop,loop |
| a | n | depart,turn left,arrive | loop,drive,drive |
| d | n | depart,turn right,arrive | loop,drive,drive |
# https://www.openstreetmap.org/#map=19/37.26591/-121.84474
Scenario: Road splitting (unmerged)
Given the node map
"""
. g - - - h
d - - - - c - - e - - f `
. ` `
a - - - - b `
`
`
`
`
`
i
"""
And the ways
| nodes | highway | name | oneway |
| ei | service | | |
| abe | primary | lane | yes |
| ecd | primary | lane | yes |
| hgfe | primary | lane | no |
When I route I should get
| from | to | route | turns |
| a | h | lane,lane | depart,arrive |
| a | i | lane,, | depart,turn sharp right,arrive |
| h | d | lane,lane | depart,arrive |
| h | i | lane,, | depart,turn left,arrive |
# https://www.openstreetmap.org/#map=19/37.85108/-122.27078
Scenario: Turning Road category
Given the node map
"""
e d
| |
| |
f c i
| | `
| j`
| ` |
|k | l
| |.`
g b
| |
| |
| |
h a
"""
And the ways
| nodes | highway | name | oneway |
| abl | primary | adeline | yes |
| bjcd | tertiary | martin | yes |
| efg | tertiary | martin | yes |
| ijkgh | primary | adeline | yes |
When I route I should get
| from | to | route | turns |
| e | h | martin,adeline,adeline | depart,turn straight,arrive |
| a | d | adeline,martin,martin | depart,turn slight left,arrive |
| a | l | adeline,adeline,adeline | depart,continue slight right,arrive |
| i | h | adeline,adeline | depart,arrive |
# https://www.openstreetmap.org/#map=19/37.76471/-122.49639
Scenario: Turning road
Given the node map
"""
f - - - - - - - e - - - - d
g
h
a - - - b - - - - - - - - c
|
|
i
"""
And the ways
| nodes | highway | name | oneway |
| abd | primary | lincoln | yes |
| def | primary | lincoln | yes |
| eghbi | secondary | 37 | yes |
When I route I should get
| from | to | route | turns |
| d | i | lincoln,37,37 | depart,turn slight left,arrive |
| d | f | lincoln,lincoln | depart,arrive |
# https://www.openstreetmap.org/#map=19/37.63541/-122.48343
# https://www.openstreetmap.org/#map=19/52.47752/13.28864
Scenario: Road Splitting up
Given the node map
"""
d
`
`
`
a - - - - - - - - - b
`
`
` c
"""
And the ways
| nodes | highway | name |
| abc | residential | vista |
| bd | residential | sierra |
When I route I should get
| from | to | route | turns |
| a | c | vista,vista | depart,arrive |
| a | d | vista,sierra,sierra | depart,turn left,arrive |
# https://www.openstreetmap.org/#map=19/52.45191/13.44113
# check service road handling in `is_similar_turn`
@todo
Scenario: Road Splitting up at a Driveway
Given the node map
"""
d
`
`
`
a - - - - - - - - - b - - - - - e
`
`
`
`c
"""
And the ways
| nodes | highway | name |
| abc | residential | britz |
| bd | residential | palz |
| be | service | |
When I route I should get
| from | to | route | turns |
| a | c | britz,britz | depart,arrive |
| a | e | britz,, | depart,turn straight,arrive |
# https://www.openstreetmap.org/#map=20/37.62997/-122.49246
# test is mutually exclusive with features/guidance/fork.feature:27 "Scenario: Don't Fork On Single Road"
@todo
Scenario: Curving road with name-handoff
Given the node map
"""
a
|
|
b
`
c
`
d
l - k h ` e
` j - i ` ` f - - - - - g
"""
And the ways
| nodes | highway | name | oneway |
| abcd | tertiary | palm | no |
| defg | tertiary | clare | no |
| lkjihd | residential | clare | yes |
When I route I should get
| from | to | route | turns |
| a | g | palm,clare,clare | depart,new name slight left,arrive |
| g | a | clare,palm,palm | depart,turn right,arrive |
| l | g | clare,clare | depart,arrive |
| l | a | clare,palm,palm | depart,turn left,arrive |
# https://www.openstreetmap.org/#map=19/37.84291/-122.23681
Scenario: Two roads turning into the same direction
Given the node map
"""
e
|
|.c
a - - - b`
|
|
d
"""
And the ways
| nodes | highway | name | oneway |
| abc | residential | romany | no |
| db | residential | ost | yes |
| be | residential | martin | yes |
When I route I should get
| from | to | route | turns |
| a | c | romany,romany | depart,arrive |
# https://www.openstreetmap.org/#map=19/37.82815/-122.28733
# the similarity check considers `bc` as non-similar to `bd` due to a name change "mandela"->"horton"
# this behavior is captured by features/guidance/turn.feature:126 "Scenario: Three Way Intersection"
# and is mutually exclusive with the test expectation
@todo
Scenario: Turning Secondary Next to Residential
Given the node map
"""
c
| |
| |
-----` |
a b - - - d
----------
"""
And the ways
| nodes | highway | name |
| ab | secondary | mandela |
| bc | secondary | horton |
| bd | residential | yerda |
When I route I should get
| from | to | route | turns |
| a | d | mandela,yerda,yerda | depart,turn straight,arrive |
| a | c | mandela,horton,horton | depart,turn left,arrive |
# https://www.openstreetmap.org/#map=19/52.46341/13.40272
Scenario: Loss of road class on turn (segregated)
Given the node map
"""
f - - - e - - - d
|
1
|
a - - - b - - - c
|
|
g
"""
And the ways
| nodes | highway | name | oneway |
| ab | tertiary | germ | yes |
| ef | tertiary | germ | yes |
| de | tertiary | ober | yes |
| bc | tertiary | ober | yes |
| be | tertiary | germ | no |
| bg | residential | germ | no |
When I route I should get
| from | to | route | turns |
| 1 | g | germ,germ | depart,arrive |
| d | g | ober,germ,germ | depart,turn left,arrive |
| a | g | germ,germ,germ | depart,continue right,arrive |
# https://www.openstreetmap.org/#map=19/37.29821/-121.86874
Scenario: Sliproads of Higher Category when entering Intersection
Given the node map
"""
e
|
g|
|
|
h |
i |
a - - b - - - c - - d
j |
k |
|
l|
|
f
"""
And the ways
| nodes | highway | name | oneway |
| abcd | tertiary | stone | no |
| ecf | primary | curt | yes |
| eghib | primary_link | | yes |
| bjklf | primary_link | | yes |
When I route I should get
| from | to | route | turns |
| a | d | stone,stone | depart,arrive |
# https://www.openstreetmap.org/#map=19/37.63866/-122.46677
Scenario: Slightly offset traffic circle
Given the node map
"""
i----h
` g
` `
a - - - - - b |
c f
` d - e `
"""
And the ways
| nodes | highway | name |
| abcdefghib | residential | road |
When I route I should get
| from | to | route | turns |
| a | e | road,road,road | depart,continue right,arrive |
| i | a | road,road,road | depart,continue right,arrive |
| d | a | road,road,road | depart,continue left,arrive |
# https://www.openstreetmap.org/#map=19/37.63829/-122.46345
# scenario geometry must be updated to catch the OSM map
@todo
Scenario: Entering a motorway (curved)
Given the node map
"""
a - - - - - - b - - - c - - - - - d
e g
f
|
i - h - j
"""
And the ways
| nodes | highway | name | oneway |
| abcd | trunk | sky | yes |
| befgc | trunk_link | | yes |
| fh | trunk_link | | no |
| ihj | residential | susan | no |
When I route I should get
| from | to | route | turns |
| i | d | susan,,sky | depart,turn left,arrive |
| j | d | susan,,sky | depart,turn right,arrive |
# https://www.openstreetmap.org/#map=18/48.99155/8.43520
Scenario: Passing a motorway link on a trunk road
Given the node map
"""
a - - - - - - - - - - b-----
` ````````````c
` d
"""
And the ways
| nodes | highway | name | ref | oneway |
| abc | trunk | sued | K 9652 | yes |
| bd | motorway_link | | A 5 | yes |
When I route I should get
| from | to | route | turns |
| a | c | sued,sued | depart,arrive |
| a | d | sued,, | depart,off ramp slight right,arrive |
# https://www.openstreetmap.org/#map=19/48.98900/8.43800
Scenario: Splitting motorway links without names but with destinations
Given the node map
"""
.... h
. .g.`
..... e..`............... f
... d---```
c`
/
/
b
/
a
"""
And the ways
| nodes | highway | name | destination | oneway |
| abcde | motorway_link | | | yes |
| ef | motorway_link | | right | yes |
| egh | motorway_link | | left | yes |
When I route I should get
| from | to | route | turns |
| a | f | ,, | depart,fork slight right,arrive |
| a | h | ,, | depart,fork slight left,arrive |
# https://www.openstreetmap.org/#map=19/49.01098/8.36052
Scenario: Splitting Road at intersection (modelled turn)
Given the node map
"""
h
|
j - - - - - g - - - - - - - - - - - - i
f
e
d
a - - - b - - - - - - - - - - - - - - c
"""
And the ways
| nodes | highway | name | oneway |
| ab | primary | ente | yes |
| bc | primary | rhein | yes |
| bdefg | primary_link | rhein | yes |
| ig | primary | rhein | yes |
| gj | primary | ente | yes |
| gh | residential | rhein | no |
When I route I should get
| from | to | route | turns |
| a | c | ente,rhein,rhein | depart,new name straight,arrive |
| a | h | ente,rhein,rhein | depart,turn left,arrive |
# https://www.openstreetmap.org/#map=19/48.99776/8.47766
Scenario: Narrow cross
Given the node map
"""
a e
\ /
\ /
\ /
b
/ \
/ \
/ \
d c
"""
And the ways
| nodes | highway | name |
| ab | secondary | baden |
| be | primary | gym |
| bc | tertiary | ritter |
| db | primary | baden |
When I route I should get
| from | to | route | turns |
| a | d | baden,baden,baden | depart,continue right,arrive |
| a | c | baden,ritter | depart,arrive |
| a | e | baden,gym,gym | depart,turn sharp left,arrive |
# https://www.openstreetmap.org/#map=19/48.99870/8.48122
Scenario: Residential Segregated
Given the node map
"""
f e
| |
| |
| |
| |
| |
| |
| |
a - - b - - c - - d
"""
And the ways
| nodes | highway | name | oneway |
| ab | residential | possel | no |
| fb | residential | berg | yes |
| bc | residential | berg | no |
| ce | residential | berg | yes |
| cd | residential | kastell | no |
When I route I should get
| from | to | route | turns |
| a | d | possel,kastell | depart,arrive |
| a | e | possel,berg,berg | depart,turn left,arrive |
# https://www.openstreetmap.org/#map=19/48.99810/8.46749
# the test case depends on geometry: for `da` route both `no_name_change_to_candidate`
# and `compare_road_deviation_is_distinct` are true so `bc` is considered non-similar
@todo
Scenario: Slight End of Road
Given the node map
"""
d
/
/
a - - - - - - b - - - - - - - c
"""
And the ways
| nodes | highway | name |
| abd | residential | kanzler |
| bc | residential | gartner |
When I route I should get
| from | to | route | turns |
| a | c | kanzler,gartner | depart,arrive |
| a | d | kanzler,kanzler,kanzler | depart,continue left,arrive |
| d | a | kanzler,kanzler,kanzler | depart,continue right,arrive |
# https://www.openstreetmap.org/#map=18/52.46942/13.33159
Scenario: Curved crossing
Given the node map
"""
f
.`
h .
`. e `
`. . `
`. . `
`. . `
d
c - ` `.
a - - - - - - - - - b - - ` ` ` `.
g
"""
And the ways
| nodes | highway | name | oneway |
| abcd | residential | hand | no |
| def | residential | hand | yes |
| hdg | secondary | schmi | no |
When I route I should get
| from | to | route | turns |
| a | f | hand,hand | depart,arrive |
| h | g | schmi,schmi | depart,arrive |
# https://www.openstreetmap.org/#map=19/52.56562/13.39109
# the obviousness check depends on geometry at node `c`
@todo
Scenario: Dented Straight
Given the node map
"""
a - - - b. . d - - - - e
` `
`c`
|
|
f
"""
And the ways
| nodes | highway | name |
| abcde | residential | nord |
| cf | residential | stern |
When I route I should get
| from | to | route | turns |
| a | e | nord,nord | depart,arrive |
| e | a | nord,nord | depart,arrive |
# https://www.openstreetmap.org/#map=17/52.57124/13.39892
Scenario: Primary road curved turn
Given the node map
"""
m - - l....
`k.
a - - b - . ``- - - - p
`c . \
`. `j - - - o
d \
\ i
e \
| h
| |
f g
"""
And the ways
| nodes | highway | name | oneway | lanes |
| abc | primary | schoen | yes | 2 |
| cdef | primary | grab | yes | 1 |
| klm | primary | schoen | yes | 2 |
| ghijk | primary | grab | yes | 1 |
| cj | secondary_link | mann | yes | 1 |
| jo | secondary | mann | yes | 1 |
| pk | secondary | mann | yes | 1 |
When I route I should get
| from | to | route | turns |
| a | f | schoen,grab,grab | depart,turn slight right,arrive |
| g | m | grab,schoen | depart,arrive |
| a | o | schoen,mann,mann | depart,turn straight,arrive |
# https://www.openstreetmap.org/#map=18/52.55374/13.41462
# scenario for internal intersection collapsing
@todo
Scenario: Turn Links as Straights
Given the node map
"""
l k
| |
j - - -i - - hg- - - f
| / |/
/| / |
a - --bc - - d - - - e
| |
m n
"""
And the ways
| nodes | highway | oneway | name |
| abc | primary | yes | born |
| ij | primary | yes | born |
| cde | primary | yes | wisb |
| fghi | primary | yes | wisb |
| li | primary | yes | berl |
| hk | primary | yes | berl |
| icm | primary | yes | scho |
| ndh | primary | yes | scho |
| bh | primary_link | yes | |
| gc | primary_link | yes | |
When I route I should get
| from | to | route | turns | locations | # |
| a | k | born,,berl | depart,turn left,arrive | a,b,k | On improved collapse, this should offer berl on turn |
| f | m | wisb,,scho | depart,turn left,arrive | f,g,m | On improved collapse, this should offer scho on turn |
# https://www.openstreetmap.org/#map=19/52.56934/13.40131
Scenario: Crossing Segregated before a turn
Given the node map
"""
_-d
f - - - e -- ` `
| _-c
a - - -.b -- ` `
. `
g`
"""
And the ways
| nodes | highway | oneway | name |
| ab | primary | yes | scho |
| bc | primary | yes | brei |
| de | primary | yes | brei |
| ef | primary | yes | scho |
| gb | secondary | no | woll |
| be | secondary_link | no | woll |
When I route I should get
| from | to | route | turns |
| g | c | woll,brei,brei | depart,turn slight right,arrive |
| g | f | woll,scho,scho | depart,turn sharp left,arrive |
| a | c | scho,brei | depart,arrive |
| d | f | brei,scho | depart,arrive |
# https://www.openstreetmap.org/#map=19/52.58072/13.42985
Scenario: Trunk Turning into Motorway
Given the node map
"""
a - - - - - b - - -
` . ` ` ` ` ` ` ` ` c
` - - - - d
"""
And the ways
| nodes | highway | name | oneway |
| ab | trunk | prenz | yes |
| bc | motorway | | yes |
| bd | trunk_link | | yes |
When I route I should get
| from | to | route | turns |
| a | c | prenz, | depart,arrive |
| a | d | prenz,, | depart,off ramp slight right,arrive |
# https://www.openstreetmap.org/#map=19/52.57800/13.42900
Scenario: Splitting Secondary
Given the node map
"""
. . c
.. ``
a - - - - - - - b ` ` ` `
\
\ d - - - - - - - - - e
"""
And the ways
| nodes | highway | name | lanes | oneway |
| ab | secondary | dame | 2 | no |
| bc | secondary | pase | 2 | no |
| bde | secondary | feuc | 1 | yes |
When I route I should get
| from | to | route | turns |
| a | c | dame,pase,pase | depart,new name straight,arrive |
| a | e | dame,feuc,feuc | depart,turn slight right,arrive |
# https://www.openstreetmap.org/#map=19/52.48468/13.34532
Scenario: Forking into Tertiary
Given the node map
"""
d
. . `
a - - - - - b - - - - - c
"""
And the ways
| nodes | highway | name | oneway | lanes |
| ab | primary | kenny | yes | 4 |
| bc | tertiary | kenny | yes | 2 |
| bd | primary | domi | yes | 2 |
When I route I should get
| from | to | route | turns |
| a | c | kenny,kenny,kenny | depart,continue straight,arrive |
| a | d | kenny,domi,domi | depart,turn slight left,arrive |
# https://www.openstreetmap.org/#map=18/52.56960/13.43815
Scenario: Turn onto classified
Given the node map
"""
e f
| |
| |
a - - - - - b - - c - - . .
` ` ` d
"""
And the ways
| nodes | highway | name | oneway |
| abc | secondary | roma | no |
| cd | unclassified | roma | no |
| eb | secondary | roth | yes |
| cf | secondary | roth | yes |
When I route I should get
| from | to | route | turns |
| a | d | roma,roma | depart,arrive |
| a | f | roma,roth,roth | depart,turn left,arrive |
# https://www.openstreetmap.org/#map=18/52.50908/13.27312
Scenario: Merging onto a different street
Given the node map
"""
d
`.`.`.`.`.`.b - - - - c
a`
"""
And the ways
| nodes | highway | name | oneway |
| ab | secondary | masu | yes |
| dbc | primary | theo | yes |
When I route I should get
| from | to | route | turns | # |
| a | c | masu,theo,theo | depart,turn straight,arrive | theo is a through street |
| d | c | theo,theo | depart,arrive | |
# https://www.openstreetmap.org/#map=18/52.51299/13.28936
Scenario: Lanes override road classes
Given the node map
"""
e
|
|
a - - - b - - - c
|
|
d
"""
And the ways
| nodes | highway | name | lanes |
| ab | primary | knob | 2 |
| bc | unclassified | knob | |
| db | primary | soph | 3 |
| be | living_street | soph | 3 |
When I route I should get
| from | to | route | turns |
| a | c | knob,knob | depart,arrive |
| d | e | soph,soph | depart,arrive |
| d | a | soph,knob,knob | depart,turn left,arrive |
# https://www.openstreetmap.org/node/30797565
Scenario: No turn instruction when turning from unnamed onto unnamed
Given the node map
"""
a
|
|
|
|
b----------------c
|
|
|
|
|
|
d
"""
And the ways
| nodes | highway | name | ref |
| ab | trunk_link | | |
| db | secondary | | L 460 |
| bc | secondary | | |
When I route I should get
| from | to | route | turns |
| d | c | ,, | depart,turn right,arrive |