@routing @guidance Feature: Simple Turns Background: Given the profile "car" Given a grid size of 10 meters Scenario: Four Way Intersection Given the node map """ c a b e d """ And the ways | nodes | highway | | ab | primary | | cb | primary | | db | primary | | eb | primary | When I route I should get | waypoints | route | turns | | a,c | ab,cb,cb | depart,turn left,arrive | | a,e | ab,eb | depart,arrive | | a,d | ab,db,db | depart,turn right,arrive | | c,a | cb,ab,ab | depart,turn right,arrive | | c,d | cb,db | depart,arrive | | c,e | cb,eb,eb | depart,turn left,arrive | | d,a | db,ab,ab | depart,turn left,arrive | | d,c | db,cb | depart,arrive | | d,e | db,eb,eb | depart,turn right,arrive | | e,a | eb,ab | depart,arrive | | e,c | eb,cb,cb | depart,turn right,arrive | | e,d | eb,db,db | depart,turn left,arrive | Scenario: Rotated Four Way Intersection Given the node map """ a c b d e """ And the ways | nodes | highway | | ab | primary | | cb | primary | | db | primary | | eb | primary | When I route I should get | waypoints | route | turns | | a,c | ab,cb,cb | depart,turn left,arrive | | a,e | ab,eb | depart,arrive | | a,d | ab,db,db | depart,turn right,arrive | | c,a | cb,ab,ab | depart,turn right,arrive | | c,d | cb,db | depart,arrive | | c,e | cb,eb,eb | depart,turn left,arrive | | d,a | db,ab,ab | depart,turn left,arrive | | d,c | db,cb | depart,arrive | | d,e | db,eb,eb | depart,turn right,arrive | | e,a | eb,ab | depart,arrive | | e,c | eb,cb,cb | depart,turn right,arrive | | e,d | eb,db,db | depart,turn left,arrive | Scenario: Four Way Intersection Through Street Given the node map """ c a b e d """ And the ways | nodes | highway | | abe | primary | | cb | primary | | db | primary | When I route I should get | waypoints | route | turns | | a,c | abe,cb,cb | depart,turn left,arrive | | a,e | abe,abe | depart,arrive | | a,d | abe,db,db | depart,turn right,arrive | | c,a | cb,abe,abe | depart,turn right,arrive | | c,d | cb,db | depart,arrive | | c,e | cb,abe,abe | depart,turn left,arrive | | d,a | db,abe,abe | depart,turn left,arrive | | d,c | db,cb | depart,arrive | | d,e | db,abe,abe | depart,turn right,arrive | | e,a | abe,abe | depart,arrive | | e,c | abe,cb,cb | depart,turn right,arrive | | e,d | abe,db,db | depart,turn left,arrive | Scenario: Four Way Intersection Double Through Street Given the node map """ c a b e d """ And the ways | nodes | highway | | abe | primary | | cbd | primary | When I route I should get | waypoints | route | turns | | a,c | abe,cbd,cbd | depart,turn left,arrive | | a,e | abe,abe | depart,arrive | | a,d | abe,cbd,cbd | depart,turn right,arrive | | c,a | cbd,abe,abe | depart,turn right,arrive | | c,d | cbd,cbd | depart,arrive | | c,e | cbd,abe,abe | depart,turn left,arrive | | d,a | cbd,abe,abe | depart,turn left,arrive | | d,c | cbd,cbd | depart,arrive | | d,e | cbd,abe,abe | depart,turn right,arrive | | e,a | abe,abe | depart,arrive | | e,c | abe,cbd,cbd | depart,turn right,arrive | | e,d | abe,cbd,cbd | depart,turn left,arrive | Scenario: Three Way Intersection Given the node map """ c a b d """ And the ways | nodes | highway | | ab | primary | | cb | primary | | db | primary | When I route I should get | waypoints | route | turns | | a,c | ab,cb,cb | depart,turn left,arrive | | a,d | ab,db | depart,arrive | | d,c | db,cb,cb | depart,turn right,arrive | | d,a | db,ab | depart,arrive | Scenario: Three Way Intersection - Meeting Oneways Given the node map """ c a b d """ And the ways | nodes | highway | oneway | | ab | primary | yes | | bc | primary | yes | | db | primary | yes | When I route I should get | waypoints | route | turns | | a,c | ab,bc,bc | depart,turn left,arrive | | d,c | db,bc,bc | depart,turn right,arrive | Scenario: Three Way Intersection on Through Street Given the node map """ d a b c """ And the ways | nodes | highway | | abc | primary | | db | primary | When I route I should get | waypoints | route | turns | | a,c | abc,abc | depart,arrive | | a,d | abc,db,db | depart,turn left,arrive | | c,a | abc,abc | depart,arrive | | c,d | abc,db,db | depart,turn right,arrive | Scenario: High Degree Intersection Given the node map """ i b c h a d g f e """ And the ways | nodes | highway | | ab | primary | | ac | primary | | ad | primary | | ae | primary | | af | primary | | ag | primary | | ah | primary | | ai | primary | When I route I should get | waypoints | route | turns | | b,c | ab,ac,ac | depart,turn sharp left,arrive | | b,d | ab,ad,ad | depart,turn left,arrive | | b,e | ab,ae,ae | depart,turn slight left,arrive | | b,f | ab,af | depart,arrive | | b,g | ab,ag,ag | depart,turn slight right,arrive | | b,h | ab,ah,ah | depart,turn right,arrive | | b,i | ab,ai,ai | depart,turn sharp right,arrive | Scenario: Disturbed High Degree Intersection Given the node map """ b i c h a d g e f """ And the ways | nodes | highway | | ab | primary | | ac | primary | | ad | primary | | ae | primary | | af | primary | | ag | primary | | ah | primary | | ai | primary | When I route I should get | waypoints | route | turns | | b,c | ab,ac,ac | depart,turn sharp left,arrive | | b,d | ab,ad,ad | depart,turn left,arrive | | b,e | ab,ae,ae | depart,turn slight left,arrive | | b,f | ab,af | depart,arrive | | b,g | ab,ag,ag | depart,turn slight right,arrive | | b,h | ab,ah,ah | depart,turn right,arrive | | b,i | ab,ai,ai | depart,turn sharp right,arrive | Scenario: Turn instructions at high latitude Given the node locations | node | lat | lon | | a | 55.68740 | 12.52430 | | b | 55.68745 | 12.52409 | | c | 55.68711 | 12.52383 | | d | 55.68745 | 12.52450 | | e | 55.68755 | 12.52450 | | x | -55.68740 | 12.52430 | | y | -55.68745 | 12.52409 | | z | -55.68711 | 12.52383 | | v | -55.68745 | 12.52450 | | w | -55.68755 | 12.52450 | And the ways | nodes | | ab | | bc | | bd | | be | | xy | | yz | | vy | | wy | When I route I should get | from | to | route | turns | | a | c | ab,bc,bc | depart,turn left,arrive | | c | a | bc,ab,ab | depart,turn right,arrive | | x | z | xy,yz,yz | depart,turn right,arrive | | z | x | yz,xy,xy | depart,turn left,arrive | Scenario: Three Way Similar Sharp Turns Given the node map """ a b c d """ And the ways | nodes | highway | | ab | primary | | bc | primary | | bd | primary | When I route I should get | waypoints | route | turns | | a,c | ab,bc,bc | depart,turn sharp right,arrive | | a,d | ab,bd,bd | depart,turn sharp right,arrive | | d,c | bd,bc,bc | depart,turn sharp left,arrive | | d,a | bd,ab,ab | depart,turn sharp left,arrive | Scenario: Left Turn Assignment (1) Given the node map """ d a b c e """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn slight left,arrive | Scenario: Left Turn Assignment (2) Given the node map """ d a b c e """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn left,arrive | Scenario: Left Turn Assignment (3) Given the node map """ d a b c e """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn left,arrive | Scenario: Left Turn Assignment (4) Given the node map """ d a b c e """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn left,arrive | Scenario: Left Turn Assignment (5) Given the node map """ d a b c e """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn left,arrive | Scenario: Left Turn Assignment (6) Given the node map """ d a b c e """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn sharp left,arrive | Scenario: Left Turn Assignment (7) Given the node map """ d a b c e """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn sharp left,arrive | Scenario: Right Turn Assignment (1) Given the node map """ e a b c d """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn slight right,arrive | Scenario: Right Turn Assignment (2) Given the node map """ e a b c d """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn right,arrive | Scenario: Right Turn Assignment (3) Given the node map """ e a b c d """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn right,arrive | Scenario: Right Turn Assignment (4) Given the node map """ e a b c d """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn right,arrive | Scenario: Right Turn Assignment (5) Given the node map """ e a b c d """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn right,arrive | Scenario: Right Turn Assignment (6) Given the node map """ e a b c d """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn sharp right,arrive | Scenario: Right Turn Assignment (7) Given the node map """ e a b c d """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn sharp right,arrive | Scenario: Right Turn Assignment Two Turns Given the node map """ f a b c d e """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | | bf | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn sharp right,arrive | | a,e | abc,be,be | depart,turn right,arrive | Scenario: Right Turn Assignment Two Turns (2) Given the node map """ f c a b e d """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | | bf | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn right,arrive | | a,e | abc,be,be | depart,turn slight right,arrive | Scenario: Right Turn Assignment Two Turns (3) Given the node map """ f a b c e d """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | | bf | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn right,arrive | | a,e | abc,be,be | depart,turn slight right,arrive | Scenario: Right Turn Assignment Two Turns (4) Given the node map """ f a b c d e """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | | bf | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn right,arrive | | a,e | abc,be,be | depart,turn slight right,arrive | Scenario: Right Turn Assignment Three Turns Given the node map """ g a b c d f e """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | | bf | primary | | bg | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn sharp right,arrive | | a,e | abc,be,be | depart,turn right,arrive | | a,f | abc,bf,bf | depart,turn slight right,arrive | Scenario: Slight Turn involving Oneways Given the node map """ a b e d c """ And the ways | nodes | highway | oneway | | abc | primary | yes | | dbe | primary | no | When I route I should get | waypoints | route | turns | | a,c | abc,abc | depart,arrive | | d,e | dbe,dbe | depart,arrive | | e,d | dbe,dbe | depart,arrive | Scenario: Slight Turn involving Oneways Given the node map """ a b e d c """ And the ways | nodes | highway | oneway | | abc | primary | yes | | dbe | primary | no | When I route I should get | waypoints | route | turns | | a,c | abc,abc | depart,arrive | | d,e | dbe,dbe | depart,arrive | | e,d | dbe,dbe | depart,arrive | Scenario: Slight Turn involving Oneways - Name Change Given the node map """ a b e d c """ And the ways | nodes | highway | oneway | | abc | primary | yes | | db | primary | no | | be | primary | no | When I route I should get | waypoints | route | turns | | a,c | abc,abc | depart,arrive | | d,e | db,be | depart,arrive | | e,d | be,db | depart,arrive | Scenario: Right Turn Assignment Three Conflicting Turns with invalid - 1 Given the node map """ g a b c d e f """ And the ways | nodes | highway | oneway | | abc | primary | no | | db | primary | yes | | eb | primary | no | | fb | primary | no | | bg | primary | no | When I route I should get | waypoints | route | turns | | a,e | abc,eb,eb | depart,turn right,arrive | | a,f | abc,fb,fb | depart,turn slight right,arrive | Scenario: Right Turn Assignment Three Conflicting Turns with invalid - 2 Given the node map """ g a b c d e f """ And the ways | nodes | highway | oneway | | abc | primary | yes | | bd | primary | yes | | eb | primary | yes | | bf | primary | yes | | bg | primary | yes | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn right,arrive | | a,f | abc,bf,bf | depart,turn slight right,arrive | Scenario: Right Turn Assignment Three Conflicting Turns with invalid - 3 Given the node map """ g a b c d e f """ And the ways | nodes | highway | oneway | | abc | primary | no | | db | primary | no | | be | primary | no | | fb | primary | yes | | bg | primary | no | When I route I should get | waypoints | route | turns | | a,d | abc,db,db | depart,turn sharp right,arrive | | a,e | abc,be,be | depart,turn right,arrive | Scenario: Conflicting Turns with well distinguished turn Given the node map """ a b c f d e """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | | bf | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn slight right,arrive | | a,e | abc,be,be | depart,turn right,arrive | | a,f | abc,bf,bf | depart,turn sharp right,arrive | Scenario: Conflicting Turns with well distinguished turn (back) Given the node map """ a b c d f e """ And the ways | nodes | highway | | abc | primary | | bd | primary | | be | primary | | bf | primary | When I route I should get | waypoints | route | turns | | a,d | abc,bd,bd | depart,turn sharp right,arrive | | a,e | abc,be,be | depart,turn right,arrive | | a,f | abc,bf,bf | depart,turn slight right,arrive | Scenario: Turn Lane on Splitting up Road Given the node map """ g - - - f - ' . . h - - e - - c - - d a - - b _______/ i """ And the ways | nodes | highway | oneway | name | | ab | secondary | yes | road | | be | secondary | yes | road | | ecd | secondary | no | road | | efg | secondary | yes | road | | ehb | secondary_link | yes | road | | bi | tertiary | no | cross | And the relations | type | way:from | way:to | node:via | restriction | | restriction | ehb | be | b | no_left_turn | When I route I should get | waypoints | route | turns | | a,d | road,road | depart,arrive | | d,i | road,cross,cross | depart,turn left,arrive | | d,g | road,road | depart,arrive | Scenario: Go onto turning major road Given the node map """ c a b d """ And the ways | nodes | highway | name | lanes | | abc | primary | road | 3 | | bd | residential | in | 1 | When I route I should get | waypoints | turns | route | | a,c | depart,arrive | road,road | | d,a | depart,turn left,arrive | in,road,road | | d,c | depart,arrive | in,road | Scenario: Channing Street Given the node map """ g f | | d---c-b-a | | | | h e """ And the nodes | node | highway | | c | traffic_signals | | b | traffic_signals | And the ways | nodes | name | highway | oneway | | ab | Channing Street Northeast | residential | no | | bcd | Channing Street Northwest | residential | yes | | ebf | North Capitol Street Northeast | primary | yes | | gch | North Capitol Street Northeast | primary | yes | When I route I should get | waypoints | turns | route | | a,d | depart,arrive | Channing Street Northeast,Channing Street Northwest | | a,h | depart,turn left,arrive | Channing Street Northeast,North Capitol Street Northeast,North Capitol Street Northeast | Scenario: V St NW, Florida Ave NW: Turn Instruction # https://www.mapillary.com/app/?focus=map&lat=38.91815595&lng=-77.03880249&z=17&pKey=sCxepTOCTZD3OoBXuqGEOw # http://www.openstreetmap.org/way/6062557#map=19/38.91805/-77.03892 Given the node map """ y x c d b a e """ And the ways | nodes | name | highway | oneway | | abc | V St NW | tertiary | yes | | xcde | Florida Ave NW | tertiary | yes | | yd | Champlain St NW | residential | | When I route I should get | waypoints | turns | route | | a,e | depart,turn left,arrive | V St NW,Florida Ave NW,Florida Ave NW | # http://www.openstreetmap.org/node/182805179 Scenario: Make Sharp Left at Traffic Signal Given the node map """ g | _--f-----y i-' | j-k-a]|[b---x e 'c |'d' | h | q """ And the nodes | node | highway | | f | traffic_signals | And the ways | nodes | name | highway | oneway | | yf | yf | trunk_link | yes | | gfehq | Centreville Road | primary | | | fi | fi | trunk_link | yes | | ij | Bloomingdale Road | residential | | | jkabx | Blue Star Memorial Hwy | trunk | yes | | bcde | bcde | trunk_link | yes | | kh | kh | trunk_link | yes | When I route I should get | waypoints | turns | route | | a,q | depart,off ramp right,turn sharp left,arrive | Blue Star Memorial Hwy,bcde,Centreville Road,Centreville Road | @todo # https://www.openstreetmap.org/#map=20/52.51609/13.41080 Scenario: Unnecessary Slight Left onto Stralauer Strasse Given the node map """ e a b c d """ And the ways | nodes | name | highway | oneway | | ab | Molkenmarkt | secondary | yes | | bc | Stralauer Str | secondary | yes | | cd | Stralauer Str | secondary | yes | | ec | Molkenmarkt | secondary | yes | When I route I should get | waypoints | turns | route | | a,d | depart,arrive | Molkenmarkt,Stralauer Str | | e,d | depart,arrive | Molkenmarkt,Stralauer Str | Scenario: Unnecessary Slight Left onto Stralauer Strasse Given the node map """ e a b c d """ And the ways | nodes | name | highway | oneway | | ab | Molkenmarkt | secondary | yes | | bc | Molkenmarkt | secondary | yes | | cd | Stralauer Str | secondary | yes | | ec | Molkenmarkt | secondary | yes | When I route I should get | waypoints | turns | route | | a,d | depart,arrive | Molkenmarkt,Stralauer Str | | e,d | depart,arrive | Molkenmarkt,Stralauer Str | # http://www.openstreetmap.org/#map=18/39.28158/-76.62291 @3002 Scenario: Obvious Index wigh very narrow turn to the right Given the node map """ a - b -.-.- - - c ' ' 'd """ And the ways | nodes | highway | name | | abc | primary | road | | bd | primary_link | | When I route I should get | waypoints | turns | route | | a,c | depart,arrive | road,road | | a,d | depart,turn slight right,arrive | road,, | # http://www.openstreetmap.org/#map=18/39.28158/-76.62291 @3002 Scenario: Obvious Index wigh very narrow turn to the right Given the node map """ a - b - . -.- - c e - -'-'d-f """ And the ways | nodes | highway | name | | abc | primary | road | | bd | primary_link | | | edf | primary_link | | When I route I should get | waypoints | turns | route | | a,c | depart,arrive | road,road | | a,f | depart,turn slight right,arrive | road,, | # http://www.openstreetmap.org/#map=18/39.28158/-76.62291 @3002 Scenario: Obvious Index wigh very narrow turn to the left Given the node map """ . . .d a - b -'-'- - - c """ And the ways | nodes | highway | name | | abc | primary | road | | bd | primary_link | | When I route I should get | waypoints | turns | route | | a,c | depart,arrive | road,road | | a,d | depart,turn slight left,arrive | road,, | # http://www.openstreetmap.org/#map=18/39.28158/-76.62291 @3002 Scenario: Obvious Index wigh very narrow turn to the left Given the node map """ e - -.- d-f a - b - ' - - - c """ And the ways | nodes | highway | name | | abc | primary | road | | bd | primary_link | | | edf | primary_link | | When I route I should get | waypoints | turns | route | | a,f | depart,turn slight left,arrive | road,, | | a,c | depart,arrive | road,road | Scenario: Non-Obvious Turn Next to service road Given the node map """ c . . . . . . . . . . a - - - - - - - b - - - d | | | | | | | e """ And the ways | nodes | highway | name | | ab | primary | in | | bc | primary | through | | be | primary | through | | bd | service | | When I route I should get | waypoints | route | turns | | a,c | in,through,through | depart,turn left,arrive | # http://www.openstreetmap.org/#map=19/52.51556/13.41832 Scenario: No Slight Right at Stralauer Strasse Given the node map """ l m | | f._ | | ' g---h. | | '-i | | a_ | | ''.b---c | |' d._ | | 'e j k """ And the ways | nodes | name | highway | oneway | | ab | Stralauer Str | tertiary | yes | | bcde | Holzmarktstr | secondary | yes | | gf | Stralauer Str | tertiary | yes | | ihg | Holzmarktstr | secondary | yes | | lgbj | Alexanderstr | primary | yes | | kchm | Alexanderstr | primary | yes | When I route I should get | waypoints | turns | route | | a,e | depart,arrive | Stralauer Str,Holzmarktstr | Scenario: No Slight Right at Stralauer Strasse -- less extreme Given the node map """ l m | | f_ | | ' 'g---h_ | | '\_ | | i a_ | | '_ b___c_ | | \_ | | e j k """ And the ways | nodes | name | highway | oneway | | ab | Stralauer Str | tertiary | yes | | bce | Holzmarktstr | secondary | yes | | gf | Stralauer Str | tertiary | yes | | ihg | Holzmarktstr | secondary | yes | | lgbj | Alexanderstr | primary | yes | | kchm | Alexanderstr | primary | yes | When I route I should get | waypoints | turns | route | | a,e | depart,arrive | Stralauer Str,Holzmarktstr | Scenario: No Slight Right at Stralauer Strasse Given the node map """ l m | | | | _ _ g---h_ f' | | '_ | | i | | _ _b---c__ a' | | 'd | | j k """ And the ways | nodes | name | highway | oneway | | ab | Stralauer Str | tertiary | yes | | bcd | Holzmarktstr | secondary | yes | | gf | Stralauer Str | tertiary | yes | | ihg | Holzmarktstr | secondary | yes | | lgbj | Alexanderstr | primary | yes | | kchm | Alexanderstr | primary | yes | When I route I should get | waypoints | turns | route | | a,d | depart,arrive | Stralauer Str,Holzmarktstr | #http://www.openstreetmap.org/#map=19/49.48761/8.47618 @todo @3365 Scenario: Turning Road - Segregated Given the node map """ f d | | a - - - b - c | | | | g e """ And the ways | nodes | name | ref | oneway | | ab | Goethe | B 38 | yes | | bc | | B 38 | yes | | ec | Fried | | yes | | cd | Fried | B 38 | yes | | fbg | Fried | | yes | When I route I should get | waypoints | route | turns | | a,d | Goethe,Fried,Fried | depart,continue left,arrive | | a,g | Goethe,Fried,Fried | depart,turn right,arrive | # Conflicting roads (https://www.openstreetmap.org/export#map=19/37.57805/-77.46049) Scenario: Turning at forklike structure Given the node map """ c d - - - b - - - a - e """ And the ways | nodes | name | oneway | highway | | abc | foo | no | residential | | bd | bar | yes | residential | | eb | some | yes | tertiary_link | When I route I should get | waypoints | route | turns | | a,d | foo,bar,bar | depart,turn slight right,arrive | Scenario: UTurn onto ramp Given the node map """ a - - - b - c .| _________________ de h-g-----------------------f """ And the ways | nodes | name | ref | oneway | highway | | abc | Road | | yes | primary | | ce | other | | yes | primary | | cdg | | | yes | motorway_link | | fgh | | C 42 | yes | motorway | When I route I should get | waypoints | route | ref | turns | | a,h | Road,,, | ,,C 42,C 42 | depart,on ramp right,merge slight left,arrive | Scenario: UTurn onto ramp (same ref) Given the node map """ a - - - b - c .| _________________ de h-g-----------------------f """ And the ways | nodes | name | ref | oneway | highway | | abc | Road | C 42 | yes | primary | | ce | other | | yes | primary | | cdg | | | yes | motorway_link | | fgh | | C 42 | yes | motorway | When I route I should get | waypoints | route | ref | turns | | a,h | Road,,, | C 42,,C 42,C 42 | depart,on ramp right,merge slight left,arrive | Scenario: End of road, T-intersection, no obvious turn, only one road allowed Given the node map """ d . a . b . . c ' . 'e . f """ And the ways | nodes | highway | oneway | ref | | ab | primary | | B 191 | | bc | primary | | B 191 | | be | primary_link | yes | | | dc | primary | | B 4;B 191 | | ce | primary | | B 4 | | ef | primary | | B 4 | And the relations | type | way:from | way:to | node:via | restriction | | restriction | bc | ce | c | no_right_turn | | restriction | be | ef | e | only_right_turn | When I route I should get | waypoints | route | turns | | a,d | ab,dc,dc | depart,turn left,arrive | # https://www.openstreetmap.org/node/1332083066 Scenario: Turns ordering must respect initial bearings Given the node map """ a . be . \ c. d/ .f . g """ And the ways | nodes | highway | oneway | | ab | primary | yes | | bcd | primary | yes | | befg | primary | yes | When I route I should get | waypoints | route | turns | | a,d | ab,bcd,bcd | depart,fork slight right,arrive | | a,g | ab,befg,befg | depart,fork slight left,arrive | @routing @car 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 | ref | turns | | d | c | ,, | L 460,, | depart,turn right,arrive | | c | d | ,, | ,L 460,L 460 | depart,turn left,arrive | # https://www.openstreetmap.org/#map=18/52.25130/10.42545 Scenario: Turn for roads with no name, ref changes Given the node map """ d . . e c . . f . . b . . a """ And the ways | nodes | highway | ref | name | | abc | tertiary | K 57 | | | cd | tertiary | K 56 | | | cf | tertiary | K 56 | | | ce | residential | | Heinrichshöhe | When I route I should get | waypoints | route | turns | | a,f | ,, | depart,turn right,arrive | # https://www.openstreetmap.org/#map=18/52.24071/10.29066 Scenario: Turn for roads with no name, ref changes Given the node map """ x . . d . . . . . . e. . t . c . p. .f . . . . . . b . . a """ And the ways | nodes | highway | ref | name | oneway | | abp | tertiary | K 23 | | yes | | pdx | tertiary | K 23 | | yes | | xdt | tertiary | K 23 | | yes | | tba | tertiary | K 23 | | yes | | etcpf | primary | B 1 | | no | When I route I should get | waypoints | route | turns | | e,x | ,, | depart,turn left,arrive | | f,a | ,, | depart,turn left,arrive |