258 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
			
		
		
	
	
			258 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
| @routing @guidance @turn-lanes
 | |
| Feature: Turn Lane Guidance
 | |
| 
 | |
|     Background:
 | |
|         Given the profile "car"
 | |
|         Given a grid size of 3 meters
 | |
| 
 | |
| 
 | |
|     @sliproads
 | |
|     Scenario: Separate Turn Lanes
 | |
|         Given the node map
 | |
|             """
 | |
|                           e
 | |
|                           .
 | |
|             a ... b ..... c . g
 | |
|                     `     .
 | |
|                      `... d
 | |
|                           .
 | |
|                           f
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | turn:lanes:forward | name     | oneway |
 | |
|             | ab    |                    | in       | yes    |
 | |
|             | bc    | left\|through      | in       | yes    |
 | |
|             | bd    | right              | in       | yes    |
 | |
|             | ec    |                    | cross    | no     |
 | |
|             | cd    |                    | cross    | no     |
 | |
|             | df    |                    | cross    | no     |
 | |
|             | cg    |                    | straight | no     |
 | |
| 
 | |
|         And the relations
 | |
|             | type        | way:from | way:to | node:via | restriction   |
 | |
|             | restriction | bd       | cd     | d        | no_left_turn  |
 | |
|             | restriction | bc       | cd     | c        | no_right_turn |
 | |
| 
 | |
|        When I route I should get
 | |
|             | waypoints | route                | turns                           | lanes                       |
 | |
|             | a,e       | in,cross,cross       | depart,turn left,arrive         | ;,left:true straight:false, |
 | |
|             | a,g       | in,straight,straight | depart,new name straight,arrive | ;,left:false straight:true, |
 | |
|             | a,f       | in,cross,cross       | depart,continue right,arrive    | ,;right:true,               |
 | |
| 
 | |
|     @sliproads
 | |
|     Scenario: Separate Turn Lanes
 | |
|         Given the node map
 | |
|             """
 | |
|                           e
 | |
|             a . . b . . . c g
 | |
|                     `     .
 | |
|                        `  .
 | |
|                         ` d
 | |
|                           f
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | turn:lanes:forward | name     | oneway |
 | |
|             | ab    |                    | in       | yes    |
 | |
|             | bc    | left\|through      | in       | yes    |
 | |
|             | bd    | right              | in       | yes    |
 | |
|             | ec    |                    | cross    | no     |
 | |
|             | cd    |                    | cross    | no     |
 | |
|             | df    |                    | cross    | no     |
 | |
|             | cg    |                    | straight | no     |
 | |
| 
 | |
|         And the relations
 | |
|             | type        | way:from | way:to | node:via | restriction   |
 | |
|             | restriction | bd       | cd     | d        | no_left_turn  |
 | |
|             | restriction | bc       | cd     | c        | no_right_turn |
 | |
| 
 | |
|        When I route I should get
 | |
|             | waypoints | route                | turns                           | lanes                                                                       |
 | |
|             | a,e       | in,cross,cross       | depart,turn left,arrive         | ;,left:true straight:false right:false,                                     |
 | |
|             | a,g       | in,straight,straight | depart,new name straight,arrive | ;,left:false straight:true right:false,                                     |
 | |
|             | a,f       | in,cross,cross       | depart,turn right,arrive        | ,left:false straight:false right:true;left:false straight:false right:true, |
 | |
| 
 | |
| 
 | |
|     @sliproads
 | |
|     Scenario: Separate Turn Lanes Next to other turns
 | |
|         Given the node map
 | |
|             """
 | |
|                         . e
 | |
|             a . . b . . . c g
 | |
|                   .   `   .
 | |
|                   .     ` .
 | |
|                   .       d
 | |
|                   .       f
 | |
|                   .
 | |
|                   .
 | |
|                   .
 | |
|                   .
 | |
|             i . . h . . . j
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | turn:lanes:forward | name     | oneway |
 | |
|             | ab    |                    | in       | yes    |
 | |
|             | bc    | left\|through      | in       | yes    |
 | |
|             | bd    | right              | in       | yes    |
 | |
|             | ec    |                    | cross    | no     |
 | |
|             | cd    |                    | cross    | no     |
 | |
|             | df    |                    | cross    | no     |
 | |
|             | cg    |                    | straight | no     |
 | |
|             | bh    | left\|right        | turn     | yes    |
 | |
|             | ihj   |                    | other    | no     |
 | |
| 
 | |
|         And the relations
 | |
|             | type        | way:from | way:to | node:via | restriction   |
 | |
|             | restriction | bd       | cd     | d        | no_left_turn  |
 | |
|             | restriction | bc       | cd     | c        | no_right_turn |
 | |
| 
 | |
|        When I route I should get
 | |
|             | waypoints | route                | turns                               | lanes                                                                       |
 | |
|             | a,e       | in,cross,cross       | depart,turn left,arrive             | ;,left:true straight:false right:false,                                     |
 | |
|             | a,g       | in,straight,straight | depart,new name straight,arrive     | ;,left:false straight:true right:false,                                     |
 | |
|             | a,f       | in,cross,cross       | depart,turn right,arrive            | ,left:false straight:false right:true;left:false straight:false right:true, |
 | |
|             | a,j       | in,turn,other,other  | depart,turn right,turn left,arrive  | ,,left:true right:false,                                                    |
 | |
|             | a,i       | in,turn,other,other  | depart,turn right,turn right,arrive | ,,left:false right:true,                                                    |
 | |
| 
 | |
| 
 | |
|     @todo @2654 @none
 | |
|     #https://github.com/Project-OSRM/osrm-backend/issues/2645
 | |
|     #http://www.openstreetmap.org/export#map=19/52.56054/13.32152
 | |
|     Scenario: Kurt-Schuhmacher-Damm
 | |
|         Given the node map
 | |
|             """
 | |
|                   g   f
 | |
|                   |   |
 | |
|             j --- h - e
 | |
|                   |   |
 | |
|             a --- b - c
 | |
|                   i   d
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | name | highway        | oneway | turn:lanes        |
 | |
|             | ab    |      | motorway_link  | yes    | left\|none\|right |
 | |
|             | bc    |      | primary_link   | yes    |                   |
 | |
|             | cd    | ksd  | secondary      | yes    |                   |
 | |
|             | cef   | ksd  | primary        | yes    |                   |
 | |
|             | hj    |      | motorway_link  | yes    |                   |
 | |
|             | eh    |      | secondary_link | yes    |                   |
 | |
|             | gh    | ksd  | primary        | yes    |                   |
 | |
|             | hbi   | ksd  | secondary      | yes    |                   |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route    | turns                    | lanes                             |
 | |
|             | a,f       | ,ksd,ksd | depart,turn left,arrive  | ,left:true none:true right:false, |
 | |
|             | a,i       | ,ksd,ksd | depart,turn right,arrive | ,left:false none:true right:true, |
 | |
| 
 | |
|     @todo @2650 @sliproads
 | |
|     #market and haight in SF, restricted turn
 | |
|     #http://www.openstreetmap.org/#map=19/37.77308/-122.42238
 | |
|     Scenario: Market/Haight without Through Street
 | |
|         Given the node map
 | |
|             """
 | |
|                           g j
 | |
|                           | |
 | |
|                           | |
 | |
|                           | |
 | |
|                           | |
 | |
|                           | |
 | |
|                           | |,f
 | |
|                           |,e
 | |
|                          ,d |
 | |
|             a --------- b c |
 | |
|                        /  | |
 | |
|                       /   | |
 | |
|                      /    | |
 | |
|                     |     | |
 | |
|                     |     | |
 | |
|                     |     | |
 | |
|                     l     h i
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | name   | highway     | oneway | turn:lanes:forward |
 | |
|             | ab    | ghough | secondary   | yes    |                    |
 | |
|             | bc    | ghough | secondary   | yes    | through\|through   |
 | |
|             | bd    | ghough | secondary   | yes    | none\|through      |
 | |
|             | def   | ghough | secondary   | yes    |                    |
 | |
|             | gd    | market | primary     | yes    |                    |
 | |
|             | dc    | market | primary     | yes    |                    |
 | |
|             | ch    | market | primary     | yes    |                    |
 | |
|             | iej   | market | primary     | yes    |                    |
 | |
|             | bl    | haight | residential | yes    | left\|none         |
 | |
| 
 | |
|         And the relations
 | |
|             | type        | way:from | way:to | node:via | restriction   |
 | |
|             | relation    | bd       | dc     | d        | no_right_turn |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route                | turns                              | lanes                                                    |
 | |
|             | a,l       | ghough,haight,haight | depart,turn right,arrive           | ,none:false straight:false straight:false straight:true, |
 | |
|             | a,h       | ghough,market,market | depart,turn slight right,arrive    | ,none:false straight:false straight:true straight:true,  |
 | |
|             | a,j       | ghough,market,market | depart,turn left,arrive            | ,none:true straight:false straight:false straight:false, |
 | |
|             | a,f       | ghough,ghough,ghough | depart,continue slight left,arrive | ,none:true straight:true straight:false straight:false,  |
 | |
| 
 | |
|     @todo @2650 @sliproads
 | |
|     #market and haight in SF, unrestricted
 | |
|     #http://www.openstreetmap.org/#map=19/37.77308/-122.42238
 | |
|     Scenario: Market/Haight without Through Street
 | |
|         Given the node map
 | |
|             """
 | |
|                           g j
 | |
|                           | |
 | |
|                           | |
 | |
|                           | |
 | |
|                           | |
 | |
|                           | |
 | |
|                           | |,f
 | |
|                           |,e
 | |
|                          ,d |
 | |
|             a --------- b c |
 | |
|                        /  | |
 | |
|                       /   | |
 | |
|                      /    | |
 | |
|                     |     | |
 | |
|                     |     | |
 | |
|                     |     | |
 | |
|                     l     h i
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | name   | highway     | oneway | turn:lanes:forward |
 | |
|             | ab    | ghough | secondary   | yes    |                    |
 | |
|             | bc    | ghough | secondary   | yes    | through\|through   |
 | |
|             | bd    | ghough | secondary   | yes    | none\|through      |
 | |
|             | def   | ghough | secondary   | yes    |                    |
 | |
|             | gd    | market | primary     | yes    |                    |
 | |
|             | dc    | market | primary     | yes    |                    |
 | |
|             | ch    | market | primary     | yes    |                    |
 | |
|             | iej   | market | primary     | yes    |                    |
 | |
|             | bl    | haight | residential | yes    | left\|none         |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route                | turns                              | lanes                                                    |
 | |
|             | a,l       | ghough,haight,haight | depart,turn right,arrive           | ,none:false straight:false straight:false straight:true, |
 | |
|             | a,h       | ghough,market,market | depart,turn slight right,arrive    | ,none:false straight:false straight:true straight:true,  |
 | |
|             | a,j       | ghough,market,market | depart,turn left,arrive            | ,none:true straight:false straight:false straight:false, |
 | |
|             | a,f       | ghough,ghough,ghough | depart,continue slight left,arrive | ,none:true straight:true straight:false straight:false,  |
 | |
| 
 | |
| 
 | |
|     Scenario: Check sliproad handler loop's exit condition, Issue #2896
 | |
|       # http://www.openstreetmap.org/way/198481519
 | |
|         Given the node locations
 | |
|             | node | lat        | lon         |
 | |
|             | a    | 7.6125350  | 126.5708309 |
 | |
|             | b    | 7.6125156  | 126.5707219 |
 | |
|             | c    | 7.6125363  | 126.5708337 |
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | name |
 | |
|             | cbac  |      |
 | |
| 
 | |
|         When I route I should get
 | |
|             | from | to | route | turns         |
 | |
|             | a    | c  | ,     | depart,arrive |
 |