348 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
			
		
		
	
	
			348 lines
		
	
	
		
			12 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
@routing  @guidance
 | 
						|
Feature: Motorway Guidance
 | 
						|
 | 
						|
    Background:
 | 
						|
        Given the profile "car"
 | 
						|
        Given a grid size of 10 meters
 | 
						|
 | 
						|
    Scenario: Ramp Exit Right
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
            a-b-c-d-e
 | 
						|
               `--f-g
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway       | oneway |
 | 
						|
            | abcde | motorway      |        |
 | 
						|
            | bfg   | motorway_link | yes    |
 | 
						|
 | 
						|
       When I route I should get
 | 
						|
            | waypoints | route         | turns                                |
 | 
						|
            | a,e       | abcde,abcde   | depart,arrive                        |
 | 
						|
            | a,g       | abcde,bfg,bfg | depart,off ramp slight right,arrive |
 | 
						|
 | 
						|
    Scenario: Ramp Exit Right Curved Right
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
            a-b-c
 | 
						|
               `f`d
 | 
						|
                 `g`e
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway       | oneway |
 | 
						|
            | abcde | motorway      |        |
 | 
						|
            | bfg   | motorway_link | yes    |
 | 
						|
 | 
						|
       When I route I should get
 | 
						|
            | waypoints | route         | turns                         |
 | 
						|
            | a,e       | abcde,abcde   | depart,arrive                 |
 | 
						|
            | a,g       | abcde,bfg,bfg | depart,off ramp right,arrive |
 | 
						|
 | 
						|
    Scenario: Ramp Exit Right Curved Left
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
                   ,e
 | 
						|
                 ,d,g
 | 
						|
            a-b-c-f
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway       | oneway |
 | 
						|
            | abcde | motorway      |        |
 | 
						|
            | cfg   | motorway_link | yes    |
 | 
						|
 | 
						|
       When I route I should get
 | 
						|
            | waypoints | route         | turns                                |
 | 
						|
            | a,e       | abcde,abcde   | depart,arrive                        |
 | 
						|
            | a,g       | abcde,cfg,cfg | depart,off ramp slight right,arrive |
 | 
						|
 | 
						|
 | 
						|
    Scenario: Ramp Exit Left
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
               /--f-g
 | 
						|
            a-b-c-d-e
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway       | oneway |
 | 
						|
            | abcde | motorway      |        |
 | 
						|
            | bfg   | motorway_link | yes    |
 | 
						|
 | 
						|
       When I route I should get
 | 
						|
            | waypoints | route         | turns                               |
 | 
						|
            | a,e       | abcde,abcde   | depart,arrive                       |
 | 
						|
            | a,g       | abcde,bfg,bfg | depart,off ramp slight left,arrive |
 | 
						|
 | 
						|
    Scenario: Ramp Exit Left Curved Left
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
                 ,g,e
 | 
						|
               ,f,d
 | 
						|
            a-b-c
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway       | oneway |
 | 
						|
            | abcde | motorway      |        |
 | 
						|
            | bfg   | motorway_link | yes    |
 | 
						|
 | 
						|
       When I route I should get
 | 
						|
            | waypoints | route         | turns                        |
 | 
						|
            | a,e       | abcde,abcde   | depart,arrive                |
 | 
						|
            | a,g       | abcde,bfg,bfg | depart,off ramp left,arrive |
 | 
						|
 | 
						|
    Scenario: Ramp Exit Left Curved Right
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
            a-b-c-f
 | 
						|
                 `d`g
 | 
						|
                   `e
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway       | oneway |
 | 
						|
            | abcde | motorway      |        |
 | 
						|
            | cfg   | motorway_link | yes    |
 | 
						|
 | 
						|
       When I route I should get
 | 
						|
            | waypoints | route         | turns                               |
 | 
						|
            | a,e       | abcde,abcde   | depart,arrive                       |
 | 
						|
            | a,g       | abcde,cfg,cfg | depart,off ramp slight left,arrive |
 | 
						|
 | 
						|
    Scenario: On Ramp Right
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
            a-b-c-d-e
 | 
						|
            f-g---'
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway       | oneway |
 | 
						|
            | abcde | motorway      |        |
 | 
						|
            | fgd   | motorway_link | yes    |
 | 
						|
 | 
						|
       When I route I should get
 | 
						|
            | waypoints | route           | turns                           |
 | 
						|
            | a,e       | abcde,abcde     | depart,arrive                   |
 | 
						|
            | f,e       | fgd,abcde,abcde | depart,merge slight left,arrive |
 | 
						|
 | 
						|
    Scenario: On Ramp Left
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
            f-g---,
 | 
						|
            a-b-c-d-e
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway       | oneway |
 | 
						|
            | abcde | motorway      |        |
 | 
						|
            | fgd   | motorway_link | yes    |
 | 
						|
 | 
						|
       When I route I should get
 | 
						|
            | waypoints | route           | turns                            |
 | 
						|
            | a,e       | abcde,abcde     | depart,arrive                    |
 | 
						|
            | f,e       | fgd,abcde,abcde | depart,merge slight right,arrive |
 | 
						|
 | 
						|
    Scenario: Highway Fork
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
                 /--d-e
 | 
						|
            a-b-c
 | 
						|
                 \--f-g
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes  | highway  |
 | 
						|
            | abcde  | motorway |
 | 
						|
            | cfg    | motorway |
 | 
						|
 | 
						|
       When I route I should get
 | 
						|
            | waypoints | route             | turns                           |
 | 
						|
            | a,e       | abcde,abcde,abcde | depart,fork slight left,arrive  |
 | 
						|
            | a,g       | abcde,cfg,cfg     | depart,fork slight right,arrive |
 | 
						|
 | 
						|
     Scenario: Fork After Ramp
 | 
						|
       Given the node map
 | 
						|
            """
 | 
						|
                 /--d-e
 | 
						|
            a-b-c
 | 
						|
                 \--f-g
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway       | oneway |
 | 
						|
            | abc   | motorway_link | yes    |
 | 
						|
            | cde   | motorway      |        |
 | 
						|
            | cfg   | motorway      |        |
 | 
						|
 | 
						|
       When I route I should get
 | 
						|
            | waypoints | route       | turns                           |
 | 
						|
            | a,e       | abc,cde,cde | depart,fork slight left,arrive  |
 | 
						|
            | a,g       | abc,cfg,cfg | depart,fork slight right,arrive |
 | 
						|
 | 
						|
     Scenario: On And Off Ramp Right
 | 
						|
       Given the node map
 | 
						|
            """
 | 
						|
            a-b---c---d-e
 | 
						|
            f-g--/ \--h i
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway       | oneway |
 | 
						|
            | abcde | motorway      |        |
 | 
						|
            | fgc   | motorway_link | yes    |
 | 
						|
            | chi   | motorway_link | yes    |
 | 
						|
 | 
						|
       When I route I should get
 | 
						|
            | waypoints | route           | turns                              |
 | 
						|
            | a,e       | abcde,abcde     | depart,arrive                      |
 | 
						|
            | f,e       | fgc,abcde,abcde | depart,merge slight left,arrive    |
 | 
						|
            | a,i       | abcde,chi,chi   | depart,off ramp slight right,arrive |
 | 
						|
            | f,i       | fgc,chi,chi     | depart,off ramp right,arrive       |
 | 
						|
 | 
						|
    Scenario: On And Off Ramp Left
 | 
						|
       Given the node map
 | 
						|
            """
 | 
						|
            f-g--\/---h-i
 | 
						|
            a-b---c---d-e
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway       | oneway |
 | 
						|
            | abcde | motorway      |        |
 | 
						|
            | fgc   | motorway_link | yes    |
 | 
						|
            | chi   | motorway_link | yes    |
 | 
						|
 | 
						|
       When I route I should get
 | 
						|
            | waypoints | route           | turns                             |
 | 
						|
            | a,e       | abcde,abcde     | depart,arrive                     |
 | 
						|
            | f,e       | fgc,abcde,abcde | depart,merge slight right,arrive  |
 | 
						|
            | a,i       | abcde,chi,chi   | depart,off ramp slight left,arrive |
 | 
						|
            | f,i       | fgc,chi,chi     | depart,off ramp left,arrive       |
 | 
						|
 | 
						|
    Scenario: Merging Motorways
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
            e\
 | 
						|
            a-b-c
 | 
						|
            d/
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway  |
 | 
						|
            | abc   | motorway |
 | 
						|
            | db    | motorway |
 | 
						|
            | eb    | motorway |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | waypoints | route      | turns                            |
 | 
						|
            | d,c       | db,abc,abc | depart,merge slight left,arrive  |
 | 
						|
            | e,c       | eb,abc,abc | depart,merge slight right,arrive |
 | 
						|
 | 
						|
    Scenario: Handle 90 degree off ramps correctly
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
            a\
 | 
						|
            x-b---c-y
 | 
						|
                  d
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | name | highway       | oneway |
 | 
						|
            | ab    | On   | motorway_link | yes    |
 | 
						|
            | xb    | Hwy  | motorway      |        |
 | 
						|
            | bc    | Hwy  | motorway      |        |
 | 
						|
            | cd    | Off  | motorway_link | yes    |
 | 
						|
            | cy    | Hwy  | motorway      |        |
 | 
						|
 | 
						|
       When I route I should get
 | 
						|
            | waypoints | route               | turns                                           |
 | 
						|
            | a,d       | On,Hwy,Off,Off      | depart,merge slight right,off ramp right,arrive |
 | 
						|
 | 
						|
    #http://0.0.0.0:9966/?z=18¢er=38.893323%2C-77.055117&loc=38.893551%2C-77.054833&loc=38.893112%2C-77.055536&hl=en&alt=0
 | 
						|
    Scenario: Merging with same name
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
            a - - -
 | 
						|
                    > c - d
 | 
						|
                 b
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | name | ref         | highway  | oneway |
 | 
						|
            | ac    |      | US 50       | motorway | yes    |
 | 
						|
            | bc    |      | I 66        | motorway | yes    |
 | 
						|
            | cd    |      | US 50; I 66 | motorway | yes    |
 | 
						|
 | 
						|
        When I route I should get
 | 
						|
            | waypoints | route | turns         |
 | 
						|
            | a,d       | ,     | depart,arrive |
 | 
						|
            | b,d       | ,     | depart,arrive |
 | 
						|
 | 
						|
 | 
						|
    Scenario: Ramp Exit with Lower Priority
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
            a-b-c-d-e
 | 
						|
               `--f-g
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway      | oneway |
 | 
						|
            | abcde | trunk        |        |
 | 
						|
            | bfg   | primary_link | yes    |
 | 
						|
 | 
						|
       When I route I should get
 | 
						|
            | waypoints | route         | turns                               |
 | 
						|
            | a,e       | abcde,abcde   | depart,arrive                       |
 | 
						|
            | a,g       | abcde,bfg,bfg | depart,off ramp slight right,arrive |
 | 
						|
 | 
						|
 | 
						|
    # https://www.openstreetmap.org/node/67366428#map=18/33.64613/-84.44425
 | 
						|
    Scenario: Ramp Bifurcations should not be suppressed
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
                 /-----------c      /-----------e
 | 
						|
            a---b------------------d------------f
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway       | name | destination                                         |
 | 
						|
            | ab    | motorway      |      |                                                     |
 | 
						|
            | bc    | motorway_link |      | City 17                                             |
 | 
						|
            | bd    | motorway_link |      |                                                     |
 | 
						|
            | de    | motorway_link |      | Domestic Terminal;Camp Creek Parkway;Riverdale Road |
 | 
						|
            | df    | motorway_link |      | Montgomery                                          |
 | 
						|
 | 
						|
 | 
						|
       When I route I should get
 | 
						|
            | waypoints | route | turns                                            |
 | 
						|
            | a,c       | ,,    | depart,fork slight left,arrive                   |
 | 
						|
            | a,e       | ,,,   | depart,fork slight right,fork slight left,arrive  |
 | 
						|
            | a,f       | ,,,   | depart,fork slight right,fork slight right,arrive |
 | 
						|
 | 
						|
 | 
						|
    # https://www.openstreetmap.org/#map=19/53.46186/-2.24509
 | 
						|
    Scenario: Highway Fork with a Link
 | 
						|
        Given the node map
 | 
						|
            """
 | 
						|
                 /-----------d
 | 
						|
            a-b-c------------e
 | 
						|
                 \-----------f
 | 
						|
            """
 | 
						|
 | 
						|
        And the ways
 | 
						|
            | nodes | highway       |
 | 
						|
            | abce  | motorway      |
 | 
						|
            | cf    | motorway      |
 | 
						|
            | cd    | motorway_link |
 | 
						|
 | 
						|
       When I route I should get
 | 
						|
            | waypoints | route      | turns                              |
 | 
						|
            | a,d       | abce,cd,cd | depart,off ramp slight left,arrive |
 | 
						|
            | a,e       | abce,abce  | depart,arrive                      |
 | 
						|
            | a,f       | abce,cf,cf | depart,turn slight right,arrive |
 |