251 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
			
		
		
	
	
			251 lines
		
	
	
		
			7.4 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
@routing @car @restrictions
 | 
						|
Feature: Car - Turn restrictions
 | 
						|
# Handle turn restrictions as defined by http://wiki.openstreetmap.org/wiki/Relation:restriction
 | 
						|
# Note that if u-turns are allowed, turn restrictions can lead to suprising, but correct, routes.
 | 
						|
 | 
						|
    Background: Use car routing
 | 
						|
        Given the profile "car"
 | 
						|
 | 
						|
    @no_turning
 | 
						|
    Scenario: Car - No left turn
 | 
						|
        Given the node map
 | 
						|
            |   | n |   |
 | 
						|
            | w | j | e |
 | 
						|
            |   | s |   |
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | oneway |
 | 
						|
            | sj    | yes    |
 | 
						|
            | nj    | -1     |
 | 
						|
            | wj    | -1     |
 | 
						|
            | ej    | -1     |
 | 
						|
 | 
						|
        And the relations
 | 
						|
            | type        | way:from | way:to | node:via | restriction  |
 | 
						|
            | restriction | sj       | wj     | j        | no_left_turn |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route |
 | 
						|
            | s    | w  |       |
 | 
						|
            | s    | n  | sj,nj |
 | 
						|
            | s    | e  | sj,ej |
 | 
						|
 | 
						|
    @no_turning
 | 
						|
    Scenario: Car - No right turn
 | 
						|
        Given the node map
 | 
						|
            |   | n |   |
 | 
						|
            | w | j | e |
 | 
						|
            |   | s |   |
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | oneway |
 | 
						|
            | sj    | yes    |
 | 
						|
            | nj    | -1     |
 | 
						|
            | wj    | -1     |
 | 
						|
            | ej    | -1     |
 | 
						|
 | 
						|
        And the relations
 | 
						|
            | type        | way:from | way:to | node:via | restriction   |
 | 
						|
            | restriction | sj       | ej     | j        | no_right_turn |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route |
 | 
						|
            | s    | w  | sj,wj |
 | 
						|
            | s    | n  | sj,nj |
 | 
						|
            | s    | e  |       |
 | 
						|
 | 
						|
    @no_turning
 | 
						|
    Scenario: Car - No u-turn
 | 
						|
        Given the node map
 | 
						|
            |   | n |   |
 | 
						|
            | w | j | e |
 | 
						|
            |   | s |   |
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | oneway |
 | 
						|
            | sj    | yes    |
 | 
						|
            | nj    | -1     |
 | 
						|
            | wj    | -1     |
 | 
						|
            | ej    | -1     |
 | 
						|
 | 
						|
        And the relations
 | 
						|
            | type        | way:from | way:to | node:via | restriction |
 | 
						|
            | restriction | sj       | wj     | j        | no_u_turn   |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route |
 | 
						|
            | s    | w  |       |
 | 
						|
            | s    | n  | sj,nj |
 | 
						|
            | s    | e  | sj,ej |
 | 
						|
 | 
						|
    @no_turning
 | 
						|
    Scenario: Car - Handle any no_* relation
 | 
						|
        Given the node map
 | 
						|
            |   | n |   |
 | 
						|
            | w | j | e |
 | 
						|
            |   | s |   |
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | oneway |
 | 
						|
            | sj    | yes    |
 | 
						|
            | nj    | -1     |
 | 
						|
            | wj    | -1     |
 | 
						|
            | ej    | -1     |
 | 
						|
 | 
						|
        And the relations
 | 
						|
            | type        | way:from | way:to | node:via | restriction      |
 | 
						|
            | restriction | sj       | wj     | j        | no_weird_zigzags |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route |
 | 
						|
            | s    | w  |       |
 | 
						|
            | s    | n  | sj,nj |
 | 
						|
            | s    | e  | sj,ej |
 | 
						|
 | 
						|
    @only_turning
 | 
						|
    Scenario: Car - Only left turn
 | 
						|
        Given the node map
 | 
						|
            |   | n |   |
 | 
						|
            | w | j | e |
 | 
						|
            |   | s |   |
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | oneway |
 | 
						|
            | sj    | yes    |
 | 
						|
            | nj    | -1     |
 | 
						|
            | wj    | -1     |
 | 
						|
            | ej    | -1     |
 | 
						|
 | 
						|
        And the relations
 | 
						|
            | type        | way:from | way:to | node:via | restriction    |
 | 
						|
            | restriction | sj       | wj     | j        | only_left_turn |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route |
 | 
						|
            | s    | w  | sj,wj |
 | 
						|
            | s    | n  |       |
 | 
						|
            | s    | e  |       |
 | 
						|
 | 
						|
    @only_turning
 | 
						|
    Scenario: Car - Only right turn
 | 
						|
        Given the node map
 | 
						|
            |   | n |   |
 | 
						|
            | w | j | e |
 | 
						|
            |   | s |   |
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | oneway |
 | 
						|
            | sj    | yes    |
 | 
						|
            | nj    | -1     |
 | 
						|
            | wj    | -1     |
 | 
						|
            | ej    | -1     |
 | 
						|
 | 
						|
        And the relations
 | 
						|
            | type        | way:from | way:to | node:via | restriction     |
 | 
						|
            | restriction | sj       | ej     | j        | only_right_turn |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route |
 | 
						|
            | s    | w  |       |
 | 
						|
            | s    | n  |       |
 | 
						|
            | s    | e  | sj,ej |
 | 
						|
 | 
						|
    @only_turning
 | 
						|
    Scenario: Car - Only straight on
 | 
						|
        Given the node map
 | 
						|
            |   | n |   |
 | 
						|
            | w | j | e |
 | 
						|
            |   | s |   |
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | oneway |
 | 
						|
            | sj    | yes    |
 | 
						|
            | nj    | -1     |
 | 
						|
            | wj    | -1     |
 | 
						|
            | ej    | -1     |
 | 
						|
 | 
						|
        And the relations
 | 
						|
            | type        | way:from | way:to | node:via | restriction      |
 | 
						|
            | restriction | sj       | nj     | j        | only_straight_on |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route |
 | 
						|
            | s    | w  |       |
 | 
						|
            | s    | n  | sj,nj |
 | 
						|
            | s    | e  |       |
 | 
						|
 | 
						|
    @no_turning
 | 
						|
    Scenario: Car - Handle any only_* restriction
 | 
						|
        Given the node map
 | 
						|
            |   | n |   |
 | 
						|
            | w | j | e |
 | 
						|
            |   | s |   |
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | oneway |
 | 
						|
            | sj    | yes    |
 | 
						|
            | nj    | -1     |
 | 
						|
            | wj    | -1     |
 | 
						|
            | ej    | -1     |
 | 
						|
 | 
						|
        And the relations
 | 
						|
            | type        | way:from | way:to | node:via | restriction        |
 | 
						|
            | restriction | sj       | nj     | j        | only_weird_zigzags |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route |
 | 
						|
            | s    | w  |       |
 | 
						|
            | s    | n  | sj,nj |
 | 
						|
            | s    | e  |       |
 | 
						|
 | 
						|
    @except
 | 
						|
    Scenario: Car - Except tag and on no_ restrictions
 | 
						|
        Given the node map
 | 
						|
            | b | x | c |
 | 
						|
            | a | j | d |
 | 
						|
            |   | s |   |
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | oneway |
 | 
						|
            | sj    | no     |
 | 
						|
            | xj    | -1     |
 | 
						|
            | aj    | -1     |
 | 
						|
            | bj    | no     |
 | 
						|
            | cj    | no     |
 | 
						|
            | dj    | -1     |
 | 
						|
 | 
						|
        And the relations
 | 
						|
            | type        | way:from | way:to | node:via | restriction   | except   |
 | 
						|
            | restriction | sj       | aj     | j        | no_left_turn  | motorcar |
 | 
						|
            | restriction | sj       | bj     | j        | no_left_turn  |          |
 | 
						|
            | restriction | sj       | cj     | j        | no_right_turn |          |
 | 
						|
            | restriction | sj       | dj     | j        | no_right_turn | motorcar |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route |
 | 
						|
            | s    | a  | sj,aj |
 | 
						|
            | s    | b  |       |
 | 
						|
            | s    | c  |       |
 | 
						|
            | s    | d  | sj,dj |
 | 
						|
 | 
						|
    @except
 | 
						|
    Scenario: Car - Except tag and on only_ restrictions
 | 
						|
        Given the node map
 | 
						|
            | a |   | b |
 | 
						|
            |   | j |   |
 | 
						|
            |   | s |   |
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | oneway |
 | 
						|
            | sj    | yes    |
 | 
						|
            | aj    | no     |
 | 
						|
            | bj    | no     |
 | 
						|
 | 
						|
        And the relations
 | 
						|
            | type        | way:from | way:to | node:via | restriction      | except   |
 | 
						|
            | restriction | sj       | aj     | j        | only_straight_on | motorcar |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | from | to | route |
 | 
						|
            | s    | a  | sj,aj |
 | 
						|
            | s    | b  | sj,bj | |