96 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
@routing @restrictions
 | 
						|
Feature: Turn restrictions
 | 
						|
	Handle turn restrictions as defined by http://wiki.openstreetmap.org/wiki/Relation:restriction
 | 
						|
	How this plays with u-turns can be tricky.
 | 
						|
	
 | 
						|
	Scenario: No left turn
 | 
						|
		Given the nodes
 | 
						|
		 |   | t |   |
 | 
						|
		 | a | j | b |
 | 
						|
		 |   | s |   |
 | 
						|
 | 
						|
		And the ways
 | 
						|
		 | nodes |
 | 
						|
		 | bj    |
 | 
						|
		 | aj    |
 | 
						|
		 | sj    |
 | 
						|
		 | tj    |
 | 
						|
 | 
						|
		And the relations
 | 
						|
		 | from | to | via | restriction  |
 | 
						|
		 | sj   | aj | j   | no_left_turn |
 | 
						|
 | 
						|
		When I route I should get
 | 
						|
		 | from | to | route |
 | 
						|
		 | s    | a  |       |
 | 
						|
		 | s    | b  | sj,jb |
 | 
						|
		 | s    | t  | sj,tj |
 | 
						|
		 | a    | b  | aj,bj |
 | 
						|
		 | a    | a  | aj,sj |
 | 
						|
		 | a    | t  | aj,tj |
 | 
						|
		 | b    | b  | jb,aj |
 | 
						|
		 | b    | s  | bj,sj |
 | 
						|
		 | b    | t  | bj,tj |
 | 
						|
 | 
						|
	Scenario: No left turn, go counter-clockwise around the block instead
 | 
						|
		Given the nodes
 | 
						|
		 | x | t |   |
 | 
						|
		 | a | j | b |
 | 
						|
		 |   | s |   |
 | 
						|
 | 
						|
		And the ways
 | 
						|
		 | nodes |
 | 
						|
		 | bj    |
 | 
						|
		 | aj    |
 | 
						|
		 | sj    |
 | 
						|
		 | tj    |
 | 
						|
		 | axt   |
 | 
						|
 | 
						|
		And the relations
 | 
						|
		 | from | to | via | restriction  |
 | 
						|
		 | sj   | aj | j   | no_left_turn |
 | 
						|
 | 
						|
		When I route I should get
 | 
						|
		 | from | to | route     |
 | 
						|
		 | s    | a  | sj,tj,axt |
 | 
						|
		 | s    | b  | sj,jb     |
 | 
						|
		 | s    | t  | sj,tj     |
 | 
						|
		 | a    | b  | aj,bj     |
 | 
						|
		 | a    | a  | aj,sj     |
 | 
						|
		 | a    | t  | aj,tj     |
 | 
						|
		 | b    | b  | jb,aj     |
 | 
						|
		 | b    | s  | bj,sj     |
 | 
						|
		 | b    | t  | bj,tj     |
 | 
						|
		
 | 
						|
	Scenario: No left turn, go clockwise around the block instead
 | 
						|
		Given the nodes
 | 
						|
		 |   |   | t |   |
 | 
						|
		 | z | a | j | b |
 | 
						|
		 | x |   | s |   |
 | 
						|
 | 
						|
		And the ways
 | 
						|
		 | nodes |
 | 
						|
		 | bj    |
 | 
						|
		 | aj    |
 | 
						|
		 | sj    |
 | 
						|
		 | tj    |
 | 
						|
		 | sxza  |
 | 
						|
 | 
						|
		And the relations
 | 
						|
		 | from | to | via | restriction  |
 | 
						|
		 | sj   | aj | j   | no_left_turn |
 | 
						|
 | 
						|
		When I route I should get
 | 
						|
		 | from | to | route     |
 | 
						|
		 | s    | a  | sxza      |
 | 
						|
		 | s    | b  | sj,jb     |
 | 
						|
		 | s    | t  | sj,tj     |
 | 
						|
		 | a    | b  | aj,bj     |
 | 
						|
		 | a    | a  | aj,sj     |
 | 
						|
		 | a    | t  | aj,tj     |
 | 
						|
		 | b    | b  | jb,aj     |
 | 
						|
		 | b    | s  | bj,sj     |
 | 
						|
		 | b    | t  | bj,tj     |
 | 
						|
 | 
						|
 |