osrm-backend/features/guidance/turn-angles.feature
2018-03-20 16:33:15 +01:00

1477 lines
64 KiB
Gherkin

@routing @guidance @turn-angles
Feature: Simple Turns
Background:
Given the profile "car"
Given a grid size of 1 meters
Scenario: Offset Turn
Given the node map
"""
a - - - - - - - - b - - - - - - - - - c
|
|
|
|
|
|
d
'
'
'
'
'
e
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
f
"""
And the ways
| nodes | highway | name | lanes |
| abc | primary | road | 4 |
| bdef | primary | turn | 2 |
When I route I should get
| waypoints | route | turns |
| a,c | road,road | depart,arrive |
| a,e | road,turn,turn | depart,turn slight right,arrive |
| e,a | turn,road,road | depart,turn slight left,arrive |
| e,c | turn,road,road | depart,turn sharp right,arrive |
Scenario: Road Taking a Turn after Intersection
Given the node map
"""
a - - - - - - - - b - - - - - - - - - c
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
d
'
'
'
'
'
e
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
'
f
"""
And the ways
| nodes | highway | name | lanes |
| abc | primary | road | 4 |
| bdef | primary | turn | 2 |
When I route I should get
| waypoints | route | turns |
| a,c | road,road | depart,arrive |
| a,e | road,turn,turn | depart,turn right,arrive |
| e,a | turn,road,road | depart,turn left,arrive |
| e,c | turn,road,road | depart,turn right,arrive |
Scenario: U-Turn Lane
Given the node map
"""
j
|
|
|
|
|
|
|
i - - - - - - - - - - - - - - - - - g - h
|
|
|
|
|
|
f
|
/
/
d - - - - - - - - e
/
c
/
|
|
|
|
|
a - k - - - - - - - - - - - - - - - - - b
"""
And the ways
| nodes | highway | name | lanes | oneway |
| akb | primary | road | 4 | yes |
| hgi | primary | road | 4 | yes |
| kcdefg | primary_link | | 1 | yes |
| gj | tertiary | turn | 1 | |
When I route I should get
| waypoints | route | turns |
| a,b | road,road | depart,arrive |
| a,i | road,road,road | depart,continue uturn,arrive |
| a,j | road,turn,turn | depart,turn left,arrive |
#http://www.openstreetmap.org/#map=19/52.50871/13.26127
Scenario: Curved Turn
Given the node map
"""
f - - - - - - - - - - - e - - - - - - - d
l
k
\
\
j
\
\
i
\
\
h
|
|
|
|
a - - - - - - - - - - - - - - - - - b - c
|
|
|
|
|
|
|
|
g
"""
And the ways
| nodes | highway | name | lanes | oneway |
| abc | primary | road | 5 | no |
| gb | secondary | turn | 3 | yes |
| bhijkle | unclassified | turn | 2 | yes |
| de | residential | road | | yes |
| ef | residential | road | 2 | yes |
When I route I should get
| waypoints | route | turns | locations |
| a,c | road,road | depart,arrive | a,c |
| c,a | road,road | depart,arrive | c,a |
| g,a | turn,road,road | depart,turn left,arrive | g,b,a |
| g,c | turn,road,road | depart,turn right,arrive | g,b,c |
| g,f | turn,road,road | depart,end of road left,arrive | g,e,f |
| c,f | road,road,road | depart,turn right,arrive | c,b,f |
| a,f | road,road,road | depart,continue uturn,arrive | a,b,f |
# http://www.openstreetmap.org/#map=19/52.48753/13.52838
Scenario: Traffic Circle
Given the node map
"""
. l .
m k
.
.
j
n
.
.
i - - - p
o
. h
a - b
g
c
.
d f
. .
e
"""
And the ways
| nodes | highway | name | lanes | oneway | junction |
| ab | residential | road | 1 | yes | |
| ip | residential | road | 1 | yes | |
| bcdefghijklmnob | residential | road | 1 | yes | roundabout |
When I route I should get
| waypoints | route | turns | intersections |
| a,p | road,road,road | depart,roundabout turn straight exit-1,arrive | true:90;true:165 false:270 false:345,true:90 false:180 true:345;true:270 |
Scenario: Splitting Road with many lanes
Given the node map
"""
f - - - - - - - - - - - - - - - - - - - - e
'
'
'
'
'
a - - - - - b
'
'
'
'
'
c - - - - - - - - - - - - - - - - - - - - d
"""
And the ways
| nodes | highway | name | lanes | oneway |
| ab | primary | road | 4 | no |
| bcd | primary | road | 2 | yes |
| efb | primary | road | 2 | yes |
When I route I should get
| waypoints | route | turns |
| a,d | road,road | depart,arrive |
| e,a | road,road | depart,arrive |
Scenario: Splitting Road with many lanes; same as above makes sure len(turn:lanes) work as expected
Given the node map
"""
f - - - - - - - - - - - - - - - - - - - - e
'
'
'
'
'
a - - - - - b
'
'
'
'
'
c - - - - - - - - - - - - - - - - - - - - d
"""
And the ways
| nodes | highway | name | turn:lanes | oneway |
| ab | primary | road | left\|left\|right\|right | no |
| bcd | primary | road | through\|through | yes |
| efb | primary | road | through\|through | yes |
When I route I should get
| waypoints | route | turns |
| a,d | road,road | depart,arrive |
| e,a | road,road | depart,arrive |
@todo
# currently the intersections don't match up do to the `merging` process.
# The intermediate intersection is technically no-turn at all, since the road continues.
Scenario: Splitting Road with many lanes
Given the node map
"""
f - - - - - - - - - - - - - - - - - - - - e
'
'
'
'
'
a - - - - - b
'
'
'
'
'
c - - - - - - - - - - - - - - - - - - - - d
"""
And the ways
| nodes | highway | name | lanes | oneway |
| ab | primary | road | 4 | no |
| bcd | primary | road | 2 | yes |
| efb | primary | road | 2 | yes |
When I route I should get
| waypoints | route | turns | intersections ; |
| a,d | road,road | depart,arrive | true:90;true:270 |
| e,a | road,road | depart,arrive | true:270;rue:90 |
#http://www.openstreetmap.org/#map=19/52.54759/13.43929
Scenario: Curved Turn At Cross
Given the node map
"""
h
|
|
|
|
| . b - - - - - - - - - - - - - - - - - - - - - - - a
| .
| .
| c
|
|
|
d
|
|
|
e |
. |
. |
g - - - - - - - - - - - - - - - - - - f |
|
|
|
i
"""
And the ways
| nodes | lanes | name |
| abcd | 3 | road |
| defg | 2 | road |
| hdi | 2 | cross |
When I route I should get
| waypoints | route | turns |
| a,g | road,road | depart,arrive |
| i,a | cross,road,road | depart,turn right,arrive |
| i,g | cross,road,road | depart,turn left,arrive |
| h,g | cross,road,road | depart,turn right,arrive |
| h,a | cross,road,road | depart,turn left,arrive |
#http://www.openstreetmap.org/#map=19/52.56243/13.32666
Scenario: Modelled Curve on Segregated Road
Given the node map
"""
a f
| . e - - - - g
| h ' |
| . ' |
| i |
| . |
| |
| . |
| |
| j |
| |
| ' |
|. |
| |
m b - - - - - - - - - - - - - - - - - - - k - - - - l
| |
c d
"""
And the ways
| nodes | name | oneway | lanes |
| abc | road | yes | 3 |
| dkef | road | yes | 3 |
| mbkl | turn | yes | 3 |
| gehijb | turn | yes | 3 |
When I route I should get
| waypoints | route | turns |
| a,c | road,road | depart,arrive |
| a,l | road,turn,turn | depart,turn left,arrive |
| a,f | road,road,road | depart,continue uturn,arrive |
| d,f | road,road | depart,arrive |
| d,l | road,turn,turn | depart,turn right,arrive |
| d,c | road,road,road | depart,continue uturn,arrive |
| g,l | turn,turn,turn | depart,continue uturn,arrive |
| g,c | turn,road,road | depart,turn left,arrive |
#http://www.openstreetmap.org/#map=19/52.50878/13.26085
Scenario: Curved Turn
Given the node map
"""
f - - - - - - - - - e - - - - - - - - - d
k
.
j
.
i
.
h
|
|
|
|
|
|
|
|
a - - - - - - - - - - - - - - - - - b - c
|
|
|
|
|
|
|
|
g
"""
And the ways
| nodes | highway | name | lanes | oneway |
| abc | primary | road | 5 | no |
| gb | secondary | turn | 3 | yes |
| bhijke | unclassified | turn | 2 | yes |
| de | residential | road | | yes |
| ef | residential | road | 2 | yes |
When I route I should get
| waypoints | route | turns | locations | # |
| g,f | turn,road,road | depart,turn left,arrive | g,e,f | #could offer an additional turn at `e` if you don't detect the turn in between as curve |
| c,f | road,road,road | depart,continue right,arrive | c,b,f | |
#http://www.openstreetmap.org/search?query=52.479264%2013.295617#map=19/52.47926/13.29562
Scenario: Splitting Roads with curved split
Given the node map
"""
f - - - - - - - - - - - - - - - - - e
.
.
g
.
a - - - - - b
.
c
.
.
h - - - - - - - - - - - - - - - - - d
"""
And the ways
| nodes | highway | name | lanes | oneway |
| ab | primary | road | 4 | no |
| bchd | primary | road | 2 | yes |
| efgb | primary | road | 2 | yes |
When I route I should get
| waypoints | route | turns |
| a,d | road,road | depart,arrive |
| e,a | road,road | depart,arrive |
#http://www.openstreetmap.org/#map=19/52.51710/13.35462
Scenario: Merge next to modelled turn
Given the node map
"""
f - - - - - - - - - - - - - - - e
.
.
.
a - - - - - - - - b
.\
.\
.\
g \
\
. \
c- - - - - - - - - - - - - - - d
h
|
|
|
|
|
|
|
|
|
|
i
"""
And the ways
| nodes | name | oneway | lanes | highway |
| ab | spree | no | 6 | tertiary |
| bcd | spree | yes | 3 | tertiary |
| efb | spree | yes | 3 | tertiary |
| bghi | | no | | service |
When I route I should get
| waypoints | route | turns |
| a,d | spree,spree | depart,arrive |
| e,a | spree,spree | depart,arrive |
| a,i | spree,, | depart,turn right,arrive |
| e,i | spree,, | depart,turn left,arrive |
Scenario: Merge next to modelled turn
Given the node map
"""
f - - - - - - - - - - - - - - - e
.
.
.
a - - - - - - - - b
.\
.\
.\
g \
\
. \
c- - - - - - - - - - - - - - - d
h
|
|
|
|
|
|
|
|
|
|
i
"""
And the ways
| nodes | name | oneway | lanes | highway |
| ab | spree | no | 6 | tertiary |
| bcd | spree | yes | 3 | tertiary |
| efb | spree | yes | 3 | tertiary |
| bghi | | no | | living_street |
When I route I should get
| waypoints | route | turns |
| a,d | spree,spree | depart,arrive |
| e,a | spree,spree | depart,arrive |
| a,i | spree,, | depart,turn right,arrive |
| e,i | spree,, | depart,turn left,arrive |
# http://www.openstreetmap.org/#map=18/52.52147/13.41779
Scenario: Parking Isle
Given the node map
"""
c - - - - - - - - - - - - - - b - - - - - - - - - - - - - - a
.
.
.
.
.
.
.
1 .
.
.
.
.
j - - - - - - - - - - - - - - - - - - - - - - i
.
.
.
.
d
.
.
.
.
e
.
.
.
k
2
.
.
g - - - - - - - - - - f - - - - - - - - - - - - - - - - - - h
"""
And the ways
| nodes | name | oneway | lanes | highway |
| gfh | allee | yes | 3 | primary |
| bjdekf | | yes | | service |
| ij | | no | | parking aisle |
| abc | allee | yes | 3 | primary |
When I route I should get
| waypoints | route | turns |
| a,c | allee,allee | depart,arrive |
| a,h | allee,allee,allee | depart,continue uturn,arrive |
| 1,h | ,allee,allee | depart,turn left,arrive |
| 2,h | ,allee,allee | depart,turn left,arrive |
#http://www.openstreetmap.org/#map=18/52.56251/13.32650
@todo
Scenario: Curved Turn on Separated Directions
Given the node map
"""
e d
f c - - - - - - - - - - - j
| l ' |
| ' |
| ' |
| ' |
| ' |
| n |
| |
| ' |
| |
| ' |
| |
| |
| |
|' |
| |
| |
| |
| |
g |
h - - - - - - - - - - - - - - - b - - - - - - - - - - - o
| |
| |
| |
| |
| |
| |
i a
"""
And the ways
| nodes | name | oneway | lanes | highway |
| jc | Kapweg | yes | 3 | primary |
| clng | Kapweg | yes | | primary_link |
| hbo | Kapweg | yes | 2 | primary |
| efg | Kurt | yes | 4 | secondary |
| gh | Kurt | yes | 2 | primary |
| hi | Kurt | yes | 3 | primary |
| ab | Kurt | yes | 4 | primary |
| cd | Kurt | yes | 3 | secondary |
| bc | Kurt | yes | 2 | primary |
When I route I should get
| waypoints | route | turns |
| j,i | Kapweg,Kurt,Kurt | depart,turn left,arrive |
| j,o | Kapweg,Kapweg,Kapweg | depart,continue uturn,arrive |
| a,i | Kurt,Kurt,Kurt | depart,continue uturn,arrive |
#http://www.openstreetmap.org/#map=18/52.56251/13.32650
Scenario: Curved Turn on Separated Directions
Given the node map
"""
e d
f c - - - - - - - - - - - j
| l ' |
| ' |
| ' |
| ' |
| ' |
| n |
| |
| ' |
| |
| ' |
| |
| |
| |
|' |
| |
| |
| |
| |
g |
h - - - - - - - - - - - - - - - b - - - - - - - - - - - o
| |
| |
| |
| |
| |
| |
i a
"""
And the ways
| nodes | name | oneway | lanes | highway |
| jc | Kapweg | yes | 3 | primary |
| clngh | Kapweg | yes | | primary_link |
| hbo | Kapweg | yes | 2 | primary |
| efh | Kurt | yes | 4 | secondary |
| hi | Kurt | yes | 3 | primary |
| ab | Kurt | yes | 4 | primary |
| cd | Kurt | yes | 3 | secondary |
| bc | Kurt | yes | 2 | primary |
When I route I should get
| waypoints | route | turns |
| j,i | Kapweg,Kurt,Kurt | depart,turn left,arrive |
| j,o | Kapweg,Kapweg,Kapweg | depart,continue uturn,arrive |
| a,i | Kurt,Kurt,Kurt | depart,continue uturn,arrive |
#http://www.openstreetmap.org/#map=19/52.53731/13.36033
Scenario: Splitting Road to Left
Given the node map
"""
k
.
.
j
.
.
.
a - - - - - - - b - - - - - - c - - - - - - - d - - - - - - e
.
'
f .
.
i
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
g h
"""
And the nodes
| node | highway |
| i | traffic_signals |
And the ways
| nodes | name | oneway | lanes | highway |
| abc | Perle | no | 4 | secondary |
| cde | Perle | no | 6 | secondary |
| cfg | Heide | yes | 2 | secondary |
| hic | Heide | yes | 3 | secondary |
| cjk | Friede | no | | tertiary |
When I route I should get
| waypoints | route | turns | intersections |
| a,g | Perle,Heide,Heide | depart,turn right,arrive | true:90;true:90 true:195 false:270 true:345;true:18 |
| a,k | Perle,Friede,Friede | depart,turn left,arrive | true:90;true:90 true:195 false:270 true:345;true:153 |
| a,e | Perle,Perle | depart,arrive | true:90,true:90 true:195 false:270 true:345;true:270 |
| e,k | Perle,Friede,Friede | depart,turn right,arrive | true:270;false:90 true:195 true:270 true:345;true:153 |
| e,g | Perle,Heide,Heide | depart,turn left,arrive | true:270;false:90 true:195 true:270 true:345;true:18 |
| h,k | Heide,Friede | depart,arrive | true:16,true:90 true:195 true:270 true:345;true:153 |
| h,e | Heide,Perle,Perle | depart,turn right,arrive | true:16;true:90 true:195 true:270 true:345;true:270 |
| h,a | Heide,Perle,Perle | depart,turn left,arrive | true:16;true:90 true:195 true:270 true:345;true:90 |
#http://www.openstreetmap.org/#map=19/52.53293/13.32956
# adjusted ways to reflect the case geometry for 2/3/2018
Scenario: Curved Exit from Curved Road
Given the node map
"""
g
.
.
f
.
.
.
.
.
e
.
d
'
c \
a - - - - - - b '
h .
i
' . . . j
"""
And the ways
| nodes | name | oneway | lanes | highway |
| ab | Siemens | no | 5 | secondary |
| bcdefg | Erna | no | 3 | secondary |
| dhij | Siemens | no | | residential |
When I route I should get
| waypoints | route | turns |
| a,j | Siemens,Siemens,Siemens | depart,turn slight right,arrive |
| a,g | Siemens,Erna | depart,arrive |
| g,j | Erna,Siemens,Siemens | depart,turn left,arrive |
| g,a | Erna,Siemens | depart,arrive |
#http://www.openstreetmap.org/#map=19/52.51303/13.32170
Scenario: Ernst Reuter Platz
Given the node map
"""
j g
. .
. .
. .
i h
.' e - - k - - d '.
' .
f c
.
.
.
b
.
.
.
.
a
"""
And the ways
| nodes | name | oneway | lanes | highway |
| abcdk | ernst | yes | 4 | primary |
| ek | ernst | yes | 5 | primary |
| kef | ernst | yes | 4 | primary |
| ghd | march | yes | 3 | secondary |
| eij | otto | yes | 2 | secondary |
When I route I should get
| waypoints | route | turns |
| a,j | ernst,otto,otto | depart,turn slight right,arrive |
| a,f | ernst,ernst | depart,arrive |
#http://www.openstreetmap.org/#map=19/52.52409/13.36829
Scenario: Tiny Curve at Turn
Given the node map
"""
h
|
|
|
|
|
|
f - - - - - - - - i - - g
e |
. d |
a - - - - - - - - - - b - c ' j
"""
And the ways
| nodes | name | oneway | lanes | highway |
| abcdef | ella | no | | residential |
| fig | ella | no | | residential |
| hf | ilse | no | | residential |
| ij | wash | no | | residential |
When I route I should get
| waypoints | route | turns |
| a,g | ella,ella | depart,arrive |
| g,a | ella,ella | depart,arrive |
| g,h | ella,ilse,ilse | depart,turn right,arrive |
| a,h | ella,ilse,ilse | depart,turn left,arrive |
| h,g | ilse,ella,ella | depart,turn left,arrive |
| h,a | ilse,ella,ella | depart,turn right,arrive |
#http://www.openstreetmap.org/#map=18/52.53738/13.36027
Scenario: Merging at Turn - Don't report u-turn
Given the node map
"""
g
.
.
.
.
h f
.
. .
. j
. .
c
. . .
. . .
. . .
. . .
. . .
. . .
. . b
. . .
. . .
. . .
. d .
. . .
. . .
i . .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
. .
e a
"""
And the ways
| nodes | name | oneway | lanes | highway |
| abc | Heide | yes | 3 | secondary |
| cde | Heide | yes | 2 | secondary |
| cjf | Perle | yes | 6 | secondary |
| cjf | Perle | no | 6 | secondary |
| fg | Fenn | no | 6 | secondary |
| ch | Friede | no | | tertiary |
| ic | Perle | no | 4 | secondary |
And the nodes
| node | highway |
| j | traffic_signals |
| b | traffic_signals |
When I route I should get
| waypoints | route | turns |
| a,e | Heide,Heide,Heide | depart,continue uturn,arrive |
| a,g | Heide,Fenn,Fenn | depart,turn right,arrive |
| a,h | Heide,Friede,Friede | depart,turn left,arrive |
| i,e | Perle,Heide,Heide | depart,turn sharp right,arrive |
| i,h | Perle,Friede,Friede | depart,turn left,arrive |
#http://www.openstreetmap.org/#map=19/52.48630/13.36017
Scenario: Don't Break U-turns
Given the node map
"""
. . . b - - - - - - - - - - a
c '
. ' /
. ' i
d ' /
/
j
|
|
|
|
|
|
e - - - - - - - k
| .
f .
l ' - g - - - - - - - - - - - h
"""
And the ways
| nodes | name | oneway | lanes | highway |
| ab | julius | yes | 2 | secondary |
| gh | julius | yes | 2 | secondary |
| bcd | kolonne | yes | 2 | secondary |
| ekg | kolonne | yes | 2 | secondary |
| cijkf | feurig | yes | | residential |
| fl | feurig | no | | residential |
When I route I should get
| waypoints | route | turns |
| b,g | kolonne,kolonne,kolonne | depart,continue uturn,arrive |
#http://www.openstreetmap.org/#map=19/52.51633/13.42077
Scenario: Service Road at the end with slight offset
Given the node map
"""
d - - - - - - - - - - - - - - e
|
c - - - - - - - - - - - - - - b
|
|
|
|
|
|
|
|
|
a
"""
And the ways
| nodes | name | highway |
| ab | holz | residential |
| bc | | service |
| bde | | service |
When I route I should get
| waypoints | route | turns |
| e,c | , | depart,arrive |
| e,a | ,holz,holz | depart,turn left,arrive |
| c,e | , | depart,arrive |
| c,a | ,holz,holz | depart,turn right,arrive |
| a,c | holz,, | depart,turn left,arrive |
| a,e | holz,, | depart,turn right,arrive |
#http://www.openstreetmap.org/#map=19/52.45037/13.51923
Scenario: Special Turn Road
Given the node map
"""
h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - g - - - - f
|
|
|
|
|
d - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - e
.
.
.
.
.
a - - - b - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - c
"""
And the ways
| nodes | name | ref | lanes | highway | oneway |
| abc | mich | b9 | 3 | primary | yes |
| fgh | mich | b9 | 3 | primary | yes |
| bdeg | mich | | | primary_link | yes |
When I route I should get
| waypoints | route | ref | turns |
| a,h | mich,mich,mich | b9,b9,b9 | depart,continue uturn,arrive |
#http://www.openstreetmap.org/#map=19/52.49449/13.18116
Scenario: Curved Parking Lot Road
Given the node map
"""
m
|
|
|
|
f - - - - - - - - - - - - - - e - - - - - - - - - - - - - - d
l
k
\
j
i
/
h
g
a - - - - - - - - - - - - - - b - - - - - - - - - - - - - - c
"""
And the ways
| nodes | name | oneway | highway |
| abc | gato | yes | residential |
| def | gato | yes | residential |
| bghijkle | | yes | service |
| em | hain | no | service |
When I route I should get
| waypoints | route | turns |
| a,f | gato,gato,gato | depart,continue uturn,arrive |
| d,m | gato,hain,hain | depart,turn right,arrive |
| a,m | gato,hain,hain | depart,turn left,arrive |
| d,f | gato,gato | depart,arrive |
#http://www.openstreetmap.org/#map=19/52.60831/13.42990
Scenario: Double Curve Turn
Given the node map
"""
_ . d
f - - - - - - - - - - - - - - - - - - - -_- e '
.
g
.
.
.
.
h
. _ c
. .
. .
i .
. .
. .
a - - - - - - - - - - - - - - b
.
.
.
j
.
.
k
"""
And the ways
| nodes | name | oneway | highway | lanes |
| ab | rose | yes | secondary | 2 |
| ef | rose | yes | secondary | 2 |
| de | trift | yes | secondary | 2 |
| bc | trift | yes | secondary | 2 |
| eghibj | muhle | yes | tertiary | 1 |
And the nodes
| node | highway |
| h | traffic_signals |
| j | traffic_signals |
When I route I should get
| waypoints | route | turns |
| a,c | rose,trift,trift | depart,turn slight left,arrive |
| a,k | rose,muhle,muhle | depart,turn slight right,arrive |
| d,f | trift,rose | depart,arrive |
| d,k | trift,muhle,muhle | depart,turn sharp left,arrive |
| d,c | trift,trift,trift | depart,continue uturn,arrive |
#http://www.openstreetmap.org/#map=19/52.50740/13.44824
Scenario: Turning Loop at the end of the road
Given the node map
"""
l - - k _
. j
m '
. i
. .
. .
. h
. .
n .
. .
. g
o .
. .
p f
. .
. .
. . e
a - - - - b - - - - c - - - - - - - - - - - - - d '
"""
And the ways
| nodes | name | highway | lanes | oneway |
| abc | circled | residential | 1 | no |
| cdefghijklmnopc | circled | residential | 1 | yes |
When I route I should get
| waypoints | bearings | route | turns |
| b,a | 90,2 180,180 | circled,circled | depart,arrive |
Scenario: Curved Parking Lot Road
Given the node map
"""
m
|
|
|
|
f - - - - - - - - - - - - - - e - - - - - - - - - - - - - - d
l
k
j
i
h
g
a - - - - - - - - - - - - - - b - - - - - - - - - - - - - - c
"""
And the ways
| nodes | name | oneway | highway |
| abc | gato | yes | residential |
| def | gato | yes | residential |
| bghijkle | | yes | service |
| em | hain | no | service |
When I route I should get
| waypoints | route | turns |
| a,m | gato,hain,hain | depart,turn left,arrive |
Scenario: Segfaulting Regression
Given the node map
"""
a - - - - - - - - - - - - - - b c
|
|
|
d--------------e
"""
And the ways
| nodes | lanes:forward |
| ab | |
| bcde | 6 |
When I route I should get
| waypoints | route |
| a,e | ab,bcde |
@3401
Scenario: Curve With Duplicated Coordinates
Given the node locations
| node | lat | lon | # |
| a | 0.9999280745650984 | 1.0 | |
| b | 0.9999280745650984 | 1.0000179813587253 | |
| c | 0.9999280745650984 | 1.0000359627174509 | |
| d | 0.9999460559238238 | 1.0000674300952204 | |
| e | 0.9999640372825492 | 1.0000809161142643 | |
| f | 0.9999820186412746 | 1.0000854114539457 | |
| g | 1.0 | 1.0000854114539457 | |
| h | 1.0 | 1.0000854114539457 | #same as g |
| z | 0.9999100932063729 | 1.0000179813587253 | |
# g
# |
# f
# '
# e
# '
# d
# '
#a - b - c
# |
# z
And the ways
| nodes | oneway | lanes | # |
| ab | yes | 1 | |
| zb | yes | 1 | |
| bcdefgh | yes | 1 | #intentional duplication |
# we don't care for turn instructions, this is a coordinate extraction bug check
When I route I should get
| waypoints | route | intersections |
| a,g | ab,bcdefgh,bcdefgh | true:90;true:45 false:180 false:270;true:180 |
#https://github.com/Project-OSRM/osrm-backend/pull/3469#issuecomment-270806580
Scenario: Oszillating Lower Priority Road
#Given the node map
# """
# a -db c
# f
# """
Given the node locations
| node | lat | lon | # |
| a | 1.0 | 1.0 | |
| b | 1.0000179813587253 | 1.0 | |
| c | 1.0000204580571323 | 1.0 | |
| d | 1.0000179813587253 | 1.0 | same as b |
| f | 1.0000179813587253 | 1.0000179813587253 | |
And the ways
| nodes | oneway | lanes | highway |
| ab | yes | 1 | primary |
| bf | yes | 1 | primary |
| bcd | yes | 1 | service |
# we don't care for turn instructions, this is a coordinate extraction bug check
When I route I should get
| waypoints | route |
| a,d | ab,ab |
Scenario: Sharp Turn Onto A Bridge
Given the node map
"""
e
|
|
|
|
|
|
|
|
|
|
|
|
|
ga - - -b
f /
d -c
"""
And the ways
| nodes | oneway | lanes |
| gaf | yes | 1 |
| abcde | yes | 1 |
When I route I should get
| waypoints | route |
| g,e | abcde,abcde |
# 4205
# https://www.openstreetmap.org/node/36153635#map=19/51.97548/7.61795
Scenario: merging onto a through street
Given the node map
"""
e
`
`
`
`
d
c
a - - - - - - - b``
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
`
f
"""
And the ways
| nodes | oneway | name |
| abc | yes | fww |
| fcde | no | jahn |
When I route I should get
| waypoints | route | turns |
| a,f | fww,jahn,jahn | depart,turn right,arrive |
| a,e | fww,jahn,jahn | depart,turn left,arrive |