When two consecutive nodes have identical coordinates, there is no valid bearing. For now, make equal nodes have bearing 0. Full fix still needs to be done via https://github.com/Project-OSRM/osrm-backend/issues/3470.
		
			
				
	
	
		
			1343 lines
		
	
	
		
			59 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
			
		
		
	
	
			1343 lines
		
	
	
		
			59 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
| @routing  @guidance @turn-angles
 | |
| Feature: Simple Turns
 | |
| 
 | |
|     Background:
 | |
|         Given the profile "car"
 | |
|         Given a grid size of 1 meters
 | |
| 
 | |
|     Scenario: Offset Turn
 | |
|         Given the node map
 | |
|             """
 | |
|             a - - - - - - - - b - - - - - - - - - c
 | |
|                               |
 | |
|                               |
 | |
|                               |
 | |
|                               |
 | |
|                               |
 | |
|                               |
 | |
|                               d
 | |
|                                  '
 | |
|                                     '
 | |
|                                        '
 | |
|                                           '
 | |
|                                              '
 | |
|                                                 e
 | |
|                                                    '
 | |
|                                                       '
 | |
|                                                          '
 | |
|                                                             '
 | |
|                                                               '
 | |
|                                                                  '
 | |
|                                                                     '
 | |
|                                                                        '
 | |
|                                                                           '
 | |
|                                                                             '
 | |
|                                                                               '
 | |
|                                                                                 '
 | |
|                                                                                   '
 | |
|                                                                                     '
 | |
|                                                                                       '
 | |
|                                                                                         '
 | |
|                                                                                           f
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes  | highway | name | lanes |
 | |
|             | abc    | primary | road | 4     |
 | |
|             | bdef   | primary | turn | 2     |
 | |
| 
 | |
|        When I route I should get
 | |
|             | waypoints | route          | turns                           |
 | |
|             | a,c       | road,road      | depart,arrive                   |
 | |
|             | a,e       | road,turn,turn | depart,turn slight right,arrive |
 | |
|             | e,a       | turn,road,road | depart,turn slight left,arrive  |
 | |
|             | e,c       | turn,road,road | depart,turn sharp right,arrive  |
 | |
| 
 | |
|     Scenario: Road Taking a Turn after Intersection
 | |
|         Given the node map
 | |
|             """
 | |
|             a - - - - - - - - b - - - - - - - - - c
 | |
|                               |
 | |
|                               |
 | |
|                               |
 | |
|                               |
 | |
|                               |
 | |
|                               |
 | |
|                               |
 | |
|                               |
 | |
|                               |
 | |
|                               |
 | |
|                               |
 | |
|                               |
 | |
|                               |
 | |
|                               |
 | |
|                               |
 | |
|                               |
 | |
|                               |
 | |
|                               d
 | |
|                                  '
 | |
|                                     '
 | |
|                                        '
 | |
|                                           '
 | |
|                                              '
 | |
|                                                 e
 | |
|                                                    '
 | |
|                                                       '
 | |
|                                                          '
 | |
|                                                             '
 | |
|                                                               '
 | |
|                                                                  '
 | |
|                                                                     '
 | |
|                                                                        '
 | |
|                                                                           '
 | |
|                                                                             '
 | |
|                                                                               '
 | |
|                                                                                 '
 | |
|                                                                                   '
 | |
|                                                                                     '
 | |
|                                                                                       '
 | |
|                                                                                         '
 | |
|                                                                                           f
 | |
|             """
 | |
| 
 | |
|        And the ways
 | |
|             | nodes  | highway | name | lanes |
 | |
|             | abc    | primary | road | 4     |
 | |
|             | bdef   | primary | turn | 2     |
 | |
| 
 | |
|        When I route I should get
 | |
|             | waypoints | route          | turns                    |
 | |
|             | a,c       | road,road      | depart,arrive            |
 | |
|             | a,e       | road,turn,turn | depart,turn right,arrive |
 | |
|             | e,a       | turn,road,road | depart,turn left,arrive  |
 | |
|             | e,c       | turn,road,road | depart,turn right,arrive |
 | |
| 
 | |
|     Scenario: U-Turn Lane
 | |
|         Given the node map
 | |
|             """
 | |
|                                                 j
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|             i - - - - - - - - - - - - - - - - - g - h
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 f
 | |
|                                                 |
 | |
|                                                /
 | |
|                                              /
 | |
|                         d - - - - - - - - e
 | |
|                       /
 | |
|                     c
 | |
|                   /
 | |
|                 |
 | |
|                 |
 | |
|                 |
 | |
|                 |
 | |
|                 |
 | |
|             a - k - - - - - - - - - - - - - - - - - b
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes   | highway      | name | lanes | oneway |
 | |
|             | akb     | primary      | road | 4     | yes    |
 | |
|             | hgi     | primary      | road | 4     | yes    |
 | |
|             | akcdefg | primary_link |      | 1     | yes    |
 | |
|             | gj      | tertiary     | turn | 1     |        |
 | |
| 
 | |
|        When I route I should get
 | |
|             | waypoints | route          | turns                        |
 | |
|             | a,b       | road,road      | depart,arrive                |
 | |
|             | a,i       | road,road,road | depart,continue uturn,arrive |
 | |
|             | a,j       | road,turn,turn | depart,turn left,arrive      |
 | |
| 
 | |
|     #http://www.openstreetmap.org/#map=19/52.50871/13.26127
 | |
|     Scenario: Curved Turn
 | |
|         Given the node map
 | |
|             """
 | |
| 
 | |
|             f - - - - - - - - - - - e - - - - - - - d
 | |
|                                       l
 | |
|                                         k
 | |
|                                           \
 | |
|                                            \
 | |
|                                             j
 | |
|                                              \
 | |
|                                               \
 | |
|                                               i
 | |
|                                                \
 | |
|                                                 \
 | |
|                                                 h
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|             a - - - - - - - - - - - - - - - - - b - c
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 g
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes   | highway      | name | lanes | oneway |
 | |
|             | abc     | primary      | road | 5     | no     |
 | |
|             | gb      | secondary    | turn | 3     | yes    |
 | |
|             | bhijkle | unclassified | turn | 2     | yes    |
 | |
|             | de      | residential  | road |       | yes    |
 | |
|             | ef      | residential  | road | 2     | yes    |
 | |
| 
 | |
|        When I route I should get
 | |
|             | waypoints | route          | turns                        | locations |
 | |
|             | a,c       | road,road      | depart,arrive                | a,c       |
 | |
|             | c,a       | road,road      | depart,arrive                | c,a       |
 | |
|             | g,a       | turn,road,road | depart,turn left,arrive      | g,b,a     |
 | |
|             | g,c       | turn,road,road | depart,turn right,arrive     | g,b,c     |
 | |
|             | g,f       | turn,road,road | depart,turn left,arrive      | g,e,f     |
 | |
|             | c,f       | road,road,road | depart,continue right,arrive | c,b,f     |
 | |
|             | a,f       | road,road,road | depart,continue uturn,arrive | a,b,f     |
 | |
| 
 | |
|     # http://www.openstreetmap.org/#map=19/52.48753/13.52838
 | |
|     Scenario: Traffic Circle
 | |
|         Given the node map
 | |
|             """
 | |
|                           .   l  .
 | |
|                       m             k
 | |
|                                        .
 | |
|                    .
 | |
|                                           j
 | |
| 
 | |
|                 n
 | |
|                                             .
 | |
| 
 | |
|                .
 | |
|                                             i - - - p
 | |
| 
 | |
|               o
 | |
| 
 | |
|                .                            h
 | |
| 
 | |
|             a - b
 | |
| 
 | |
|                                           g
 | |
|                   c
 | |
|                                         .
 | |
| 
 | |
|                       d               f
 | |
|                          .         .
 | |
|                               e
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes           | highway     | name | lanes | oneway | junction   |
 | |
|             | ab              | residential | road | 1     | yes    |            |
 | |
|             | ip              | residential | road | 1     | yes    |            |
 | |
|             | bcdefghijklmnob | residential | road | 1     | yes    | roundabout |
 | |
| 
 | |
|        When I route I should get
 | |
|             | waypoints | route               | turns                                         | intersections                                                            |
 | |
|             | a,p       | road,road,road      | depart,roundabout turn straight exit-1,arrive | true:90;true:165 false:270 false:345,true:90 false:180 true:345;true:270 |
 | |
| 
 | |
|     Scenario: Splitting Road with many lanes
 | |
|         Given the node map
 | |
|             """
 | |
|                               f - - - - - - - - - - - - - - - - - - - - e
 | |
|                              '
 | |
|                             '
 | |
|                            '
 | |
|                           '
 | |
|                          '
 | |
|             a - - - - - b
 | |
|                          '
 | |
|                           '
 | |
|                            '
 | |
|                             '
 | |
|                              '
 | |
|                               c - - - - - - - - - - - - - - - - - - - - d
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | highway | name | lanes | oneway |
 | |
|             | ab    | primary | road | 4     | no     |
 | |
|             | bcd   | primary | road | 2     | yes    |
 | |
|             | efb   | primary | road | 2     | yes    |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route     | turns         |
 | |
|             | a,d       | road,road | depart,arrive |
 | |
|             | e,a       | road,road | depart,arrive |
 | |
| 
 | |
|     @todo
 | |
|     # currently the intersections don't match up do to the `merging` process.
 | |
|     # The intermediate intersection is technically no-turn at all, since the road continues.
 | |
|     Scenario: Splitting Road with many lanes
 | |
|         Given the node map
 | |
|             """
 | |
|                               f - - - - - - - - - - - - - - - - - - - - e
 | |
|                              '
 | |
|                             '
 | |
|                            '
 | |
|                           '
 | |
|                          '
 | |
|             a - - - - - b
 | |
|                          '
 | |
|                           '
 | |
|                            '
 | |
|                             '
 | |
|                              '
 | |
|                               c - - - - - - - - - - - - - - - - - - - - d
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | highway | name | lanes | oneway |
 | |
|             | ab    | primary | road | 4     | no     |
 | |
|             | bcd   | primary | road | 2     | yes    |
 | |
|             | efb   | primary | road | 2     | yes    |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route     | turns         | intersections ;  |
 | |
|             | a,d       | road,road | depart,arrive | true:90;true:270 |
 | |
|             | e,a       | road,road | depart,arrive | true:270;rue:90  |
 | |
| 
 | |
| 
 | |
|     #http://www.openstreetmap.org/#map=19/52.54759/13.43929
 | |
|     Scenario: Curved Turn At Cross
 | |
|         Given the node map
 | |
|             """
 | |
|                                                           h
 | |
|                                                           |
 | |
|                                                           |
 | |
|                                                           |
 | |
|                                                           |
 | |
|                                                           |      . b - - - - - - - - - - - - - - - - - - - - - - - a
 | |
|                                                           |    .
 | |
|                                                           |  .
 | |
|                                                           | c
 | |
|                                                           |
 | |
|                                                           |
 | |
|                                                           |
 | |
|                                                           d
 | |
|                                                           |
 | |
|                                                           |
 | |
|                                                           |
 | |
|                                                         e |
 | |
|                                                        .  |
 | |
|                                                     .     |
 | |
|             g - - - - - - - - - - - - - - - - - - f       |
 | |
|                                                           |
 | |
|                                                           |
 | |
|                                                           |
 | |
|                                                           i
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | lanes | name  |
 | |
|             | abcd  | 3     | road  |
 | |
|             | defg  | 2     | road  |
 | |
|             | hdi   | 2     | cross |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route           | turns                    |
 | |
|             | a,g       | road,road       | depart,arrive            |
 | |
|             | i,a       | cross,road,road | depart,turn right,arrive |
 | |
|             | i,g       | cross,road,road | depart,turn left,arrive  |
 | |
|             | h,g       | cross,road,road | depart,turn right,arrive |
 | |
|             | h,a       | cross,road,road | depart,turn left,arrive  |
 | |
| 
 | |
|     #http://www.openstreetmap.org/#map=19/52.56243/13.32666
 | |
|     Scenario: Modelled Curve on Segregated Road
 | |
|         Given the node map
 | |
|             """
 | |
|               a                                       f
 | |
|               |                                   .   e - - - - g
 | |
|               |                           h  '        |
 | |
|               |                .    '                 |
 | |
|               |             i                         |
 | |
|               |         .                             |
 | |
|               |                                       |
 | |
|               |     .                                 |
 | |
|               |                                       |
 | |
|               |   j                                   |
 | |
|               |                                       |
 | |
|               | '                                     |
 | |
|               |.                                      |
 | |
|               |                                       |
 | |
|             m b - - - - - - - - - - - - - - - - - - - k - - - - l
 | |
|               |                                       |
 | |
|               c                                       d
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes  | name | oneway | lanes |
 | |
|             | abc    | road | yes    | 3     |
 | |
|             | dkef   | road | yes    | 3     |
 | |
|             | mbkl   | turn | yes    | 3     |
 | |
|             | gehijb | turn | yes    | 3     |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route          | turns                        |
 | |
|             | a,c       | road,road      | depart,arrive                |
 | |
|             | a,l       | road,turn,turn | depart,turn left,arrive      |
 | |
|             | a,f       | road,road,road | depart,continue uturn,arrive |
 | |
|             | d,f       | road,road      | depart,arrive                |
 | |
|             | d,l       | road,turn,turn | depart,turn right,arrive     |
 | |
|             | d,c       | road,road,road | depart,continue uturn,arrive |
 | |
|             | g,l       | turn,turn,turn | depart,continue uturn,arrive |
 | |
|             | g,c       | turn,road,road | depart,turn left,arrive      |
 | |
| 
 | |
|     #http://www.openstreetmap.org/#map=19/52.50878/13.26085
 | |
|     Scenario: Curved Turn
 | |
|         Given the node map
 | |
|             """
 | |
|             f - - - - - - - - - e - - - - - - - - - d
 | |
|                                       k
 | |
|                                         .
 | |
|                                           j
 | |
| 
 | |
|                                             .
 | |
| 
 | |
|                                               i
 | |
| 
 | |
|                                                .
 | |
| 
 | |
|                                                 h
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|             a - - - - - - - - - - - - - - - - - b - c
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 g
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes   | highway      | name | lanes | oneway |
 | |
|             | abc     | primary      | road | 5     | no     |
 | |
|             | gb      | secondary    | turn | 3     | yes    |
 | |
|             | bhijke  | unclassified | turn | 2     | yes    |
 | |
|             | de      | residential  | road |       | yes    |
 | |
|             | ef      | residential  | road | 2     | yes    |
 | |
| 
 | |
|        When I route I should get
 | |
|             | waypoints | route          | turns                        | locations | #                                                                                       |
 | |
|             | g,f       | turn,road      | depart,arrive                | g,f       | #could offer an additional turn at `e` if you don't detect the turn in between as curve |
 | |
|             | c,f       | road,road,road | depart,continue right,arrive | c,b,f     |                                                                                         |
 | |
| 
 | |
|     #http://www.openstreetmap.org/search?query=52.479264%2013.295617#map=19/52.47926/13.29562
 | |
|     Scenario: Splitting Roads with curved split
 | |
|         Given the node map
 | |
|             """
 | |
|                                     f - - - - - - - - - - - - - - - - - e
 | |
| 
 | |
|                                    .
 | |
| 
 | |
|                                  .
 | |
| 
 | |
|                               g
 | |
|                            .
 | |
|             a - - - - - b
 | |
|                            .
 | |
|                               c
 | |
| 
 | |
|                                  .
 | |
| 
 | |
|                                    .
 | |
| 
 | |
|                                     h - - - - - - - - - - - - - - - - - d
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | highway | name | lanes | oneway |
 | |
|             | ab    | primary | road | 4     | no     |
 | |
|             | bchd  | primary | road | 2     | yes    |
 | |
|             | efgb  | primary | road | 2     | yes    |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route     | turns         |
 | |
|             | a,d       | road,road | depart,arrive |
 | |
|             | e,a       | road,road | depart,arrive |
 | |
| 
 | |
|      #http://www.openstreetmap.org/#map=19/52.51710/13.35462
 | |
|      Scenario: Merge next to modelled turn
 | |
|         Given the node map
 | |
|             """
 | |
|                                         f - - - - - - - - - - - - - - - e
 | |
|                                       .
 | |
| 
 | |
|                                     .
 | |
| 
 | |
|                                  .
 | |
| 
 | |
|             a - - - - - - - - b
 | |
|                                .\
 | |
|                                 .\
 | |
|                                  .\
 | |
|                                   g \
 | |
|                                      \
 | |
|                                    .   \
 | |
|                                         c- - - - - - - - - - - - - - -  d
 | |
|                                     h
 | |
|                                     |
 | |
|                                     |
 | |
|                                     |
 | |
|                                     |
 | |
|                                     |
 | |
|                                     |
 | |
|                                     |
 | |
|                                     |
 | |
|                                     |
 | |
|                                     |
 | |
|                                     i
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | name  | oneway | lanes | highway  |
 | |
|             | ab    | spree | no     | 6     | tertiary |
 | |
|             | bcd   | spree | yes    | 3     | tertiary |
 | |
|             | efb   | spree | yes    | 3     | tertiary |
 | |
|             | bghi  |       | no     |       | service  |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route       | turns                    |
 | |
|             | a,d       | spree,spree | depart,arrive            |
 | |
|             | e,a       | spree,spree | depart,arrive            |
 | |
|             | a,i       | spree,,     | depart,turn right,arrive |
 | |
|             | e,i       | spree,,     | depart,turn left,arrive  |
 | |
| 
 | |
|     Scenario: Merge next to modelled turn
 | |
|         Given the node map
 | |
|             """
 | |
|                                         f - - - - - - - - - - - - - - - e
 | |
|                                       .
 | |
| 
 | |
|                                     .
 | |
| 
 | |
|                                  .
 | |
| 
 | |
|             a - - - - - - - - b
 | |
|                                .\
 | |
|                                 .\
 | |
|                                  .\
 | |
|                                   g \
 | |
|                                      \
 | |
|                                    .   \
 | |
|                                         c- - - - - - - - - - - - - - -  d
 | |
|                                     h
 | |
|                                     |
 | |
|                                     |
 | |
|                                     |
 | |
|                                     |
 | |
|                                     |
 | |
|                                     |
 | |
|                                     |
 | |
|                                     |
 | |
|                                     |
 | |
|                                     |
 | |
|                                     i
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | name  | oneway | lanes | highway       |
 | |
|             | ab    | spree | no     | 6     | tertiary      |
 | |
|             | bcd   | spree | yes    | 3     | tertiary      |
 | |
|             | efb   | spree | yes    | 3     | tertiary      |
 | |
|             | bghi  |       | no     |       | living_street |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route       | turns                    |
 | |
|             | a,d       | spree,spree | depart,arrive            |
 | |
|             | e,a       | spree,spree | depart,arrive            |
 | |
|             | a,i       | spree,,     | depart,turn right,arrive |
 | |
|             | e,i       | spree,,     | depart,turn left,arrive  |
 | |
| 
 | |
|     # http://www.openstreetmap.org/#map=18/52.52147/13.41779
 | |
|     Scenario: Parking Isle
 | |
|         Given the node map
 | |
|             """
 | |
|             c - - - - - - - - - - - - - - b - - - - - - - - - - - - - - a
 | |
|                                         .
 | |
|                                       .
 | |
|                                      .
 | |
|                                    .
 | |
|                                   .
 | |
|                                 .
 | |
|                                .
 | |
|                             1 .
 | |
|                              .
 | |
|                             .
 | |
|                            .
 | |
|                           .
 | |
|                           j - - - - - - - - - - - - - - - - - - - - - - i
 | |
|                          .
 | |
|                          .
 | |
|                          .
 | |
|                          .
 | |
|                         d
 | |
|                         .
 | |
|                         .
 | |
|                          .
 | |
|                           .
 | |
|                           e
 | |
|                            .
 | |
|                            .
 | |
|                             .
 | |
|                             k
 | |
|                               2
 | |
|                                .
 | |
|                                  .
 | |
| 
 | |
|             g - - - - - - - - - - f - - - - - - - - - - - - - - - - - - h
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes  | name  | oneway | lanes | highway       |
 | |
|             | gfh    | allee | yes    | 3     | primary       |
 | |
|             | bjdekf |       | yes    |       | service       |
 | |
|             | ij     |       | no     |       | parking aisle |
 | |
|             | abc    | allee | yes    | 3     | primary       |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route             | turns                        |
 | |
|             | a,c       | allee,allee       | depart,arrive                |
 | |
|             | a,h       | allee,allee,allee | depart,continue uturn,arrive |
 | |
|             | 1,h       | ,allee,allee      | depart,turn left,arrive      |
 | |
|             | 2,h       | ,allee,allee      | depart,turn left,arrive      |
 | |
| 
 | |
| 
 | |
|     #http://www.openstreetmap.org/#map=18/52.56251/13.32650
 | |
|     @todo
 | |
|     Scenario: Curved Turn on Separated Directions
 | |
|         Given the node map
 | |
|             """
 | |
|                 e                               d
 | |
|                 f                               c - - - - - - - - - - - j
 | |
|                 |                     l    '    |
 | |
|                 |                   '           |
 | |
|                 |               '               |
 | |
|                 |            '                  |
 | |
|                 |         '                     |
 | |
|                 |     n                         |
 | |
|                 |                               |
 | |
|                 |   '                           |
 | |
|                 |                               |
 | |
|                 | '                             |
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 |'                              |
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 g                               |
 | |
|                 h - - - - - - - - - - - - - - - b - - - - - - - - - - - o
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 i                               a
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes  | name   | oneway | lanes | highway       |
 | |
|             | jc     | Kapweg | yes    | 3     | primary       |
 | |
|             | clng   | Kapweg | yes    |       | primary_link  |
 | |
|             | hbo    | Kapweg | yes    | 2     | primary       |
 | |
|             | efg    | Kurt   | yes    | 4     | secondary     |
 | |
|             | gh     | Kurt   | yes    | 2     | primary       |
 | |
|             | hi     | Kurt   | yes    | 3     | primary       |
 | |
|             | ab     | Kurt   | yes    | 4     | primary       |
 | |
|             | cd     | Kurt   | yes    | 3     | secondary     |
 | |
|             | bc     | Kurt   | yes    | 2     | primary       |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route                | turns                        |
 | |
|             | j,i       | Kapweg,Kurt,Kurt     | depart,turn left,arrive      |
 | |
|             | j,o       | Kapweg,Kapweg,Kapweg | depart,continue uturn,arrive |
 | |
|             | a,i       | Kurt,Kurt,Kurt       | depart,continue uturn,arrive |
 | |
| 
 | |
|     #http://www.openstreetmap.org/#map=18/52.56251/13.32650
 | |
|     Scenario: Curved Turn on Separated Directions
 | |
|         Given the node map
 | |
|             """
 | |
|                 e                               d
 | |
|                 f                               c - - - - - - - - - - - j
 | |
|                 |                     l    '    |
 | |
|                 |                   '           |
 | |
|                 |               '               |
 | |
|                 |            '                  |
 | |
|                 |         '                     |
 | |
|                 |     n                         |
 | |
|                 |                               |
 | |
|                 |   '                           |
 | |
|                 |                               |
 | |
|                 | '                             |
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 |'                              |
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 g                               |
 | |
|                 h - - - - - - - - - - - - - - - b - - - - - - - - - - - o
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 |                               |
 | |
|                 i                               a
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes  | name   | oneway | lanes | highway       |
 | |
|             | jc     | Kapweg | yes    | 3     | primary       |
 | |
|             | clngh  | Kapweg | yes    |       | primary_link  |
 | |
|             | hbo    | Kapweg | yes    | 2     | primary       |
 | |
|             | efh    | Kurt   | yes    | 4     | secondary     |
 | |
|             | hi     | Kurt   | yes    | 3     | primary       |
 | |
|             | ab     | Kurt   | yes    | 4     | primary       |
 | |
|             | cd     | Kurt   | yes    | 3     | secondary     |
 | |
|             | bc     | Kurt   | yes    | 2     | primary       |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route                | turns                        |
 | |
|             | j,i       | Kapweg,Kurt,Kurt     | depart,turn left,arrive      |
 | |
|             | j,o       | Kapweg,Kapweg,Kapweg | depart,continue uturn,arrive |
 | |
|             | a,i       | Kurt,Kurt,Kurt       | depart,continue uturn,arrive |
 | |
| 
 | |
|     #http://www.openstreetmap.org/#map=19/52.53731/13.36033
 | |
|     Scenario: Splitting Road to Left
 | |
|         Given the node map
 | |
|             """
 | |
|                                 k
 | |
| 
 | |
|                                    .
 | |
| 
 | |
|                                      .
 | |
| 
 | |
|                                       j
 | |
| 
 | |
|                                        .
 | |
| 
 | |
|                                         .
 | |
| 
 | |
|                                          .
 | |
| 
 | |
|             a - - - - - - - b - - - - - - c - - - - - - - d - - - - - - e
 | |
|                                            .
 | |
|                                        '
 | |
|                                     f        .
 | |
|                                   .
 | |
|                                               i
 | |
|                                 .            .
 | |
| 
 | |
|                                .            .
 | |
| 
 | |
|                              .            .
 | |
| 
 | |
|                            .             .
 | |
| 
 | |
|                          .             .
 | |
| 
 | |
|                        .             .
 | |
| 
 | |
|                       .             .
 | |
| 
 | |
|                      .             .
 | |
| 
 | |
|                     .             .
 | |
| 
 | |
|                    .             .
 | |
| 
 | |
|                   .             .
 | |
| 
 | |
|                  .             .
 | |
| 
 | |
|                 .             .
 | |
| 
 | |
|                .             .
 | |
| 
 | |
|               .             .
 | |
| 
 | |
|              .             .
 | |
| 
 | |
|             .             .
 | |
| 
 | |
|             g             h
 | |
|             """
 | |
| 
 | |
|         And the nodes
 | |
|             | node | highway         |
 | |
|             | i    | traffic_signals |
 | |
| 
 | |
|         And the ways
 | |
|             | nodes  | name   | oneway | lanes | highway       |
 | |
|             | abc    | Perle  | no     | 4     | secondary     |
 | |
|             | cde    | Perle  | no     | 6     | secondary     |
 | |
|             | cfg    | Heide  | yes    | 2     | secondary     |
 | |
|             | hic    | Heide  | yes    | 3     | secondary     |
 | |
|             | cjk    | Friede | no     |       | tertiary      |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route               | turns                           | intersections |
 | |
|             | a,g       | Perle,Heide,Heide   | depart,turn right,arrive        | true:90;true:90 true:180 false:270 true:345;true:18   |
 | |
|             | a,k       | Perle,Friede,Friede | depart,turn left,arrive         | true:90;true:90 true:180 false:270 true:345;true:153  |
 | |
|             | a,e       | Perle,Perle         | depart,arrive                   | true:90,true:90 true:180 false:270 true:345;true:270  |
 | |
|             | e,k       | Perle,Friede,Friede | depart,turn right,arrive        | true:270;false:90 true:180 true:270 true:345;true:153 |
 | |
|             | e,g       | Perle,Heide,Heide   | depart,turn left,arrive         | true:270;false:90 true:180 true:270 true:345;true:18  |
 | |
|             | h,k       | Heide,Friede,Friede | depart,new name straight,arrive | true:16;true:90 true:180 true:270 true:345;true:153   |
 | |
|             | h,e       | Heide,Perle,Perle   | depart,turn right,arrive        | true:16;true:90 true:180 true:270 true:345;true:270   |
 | |
|             | h,a       | Heide,Perle,Perle   | depart,turn left,arrive         | true:16;true:90 true:180 true:270 true:345;true:90    |
 | |
| 
 | |
|     #http://www.openstreetmap.org/#map=19/52.53293/13.32956
 | |
|     Scenario: Curved Exit from Curved Road
 | |
|         Given the node map
 | |
|             """
 | |
|                                                                         g
 | |
|                                                                       .
 | |
|                                                                     .
 | |
|                                                                   f
 | |
|                                                                 .
 | |
|                                                              .
 | |
|                                                            .
 | |
|                                                         .
 | |
|                                                      .
 | |
|                                                   e
 | |
|                                                .
 | |
| 
 | |
|                                           d
 | |
|                                        '
 | |
|                                   c         \
 | |
|             a - - - - - - b    '
 | |
|                                               h  .
 | |
|                                                     i
 | |
|                                                          '     . .  .   j
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes  | name    | oneway | lanes | highway     |
 | |
|             | abcd   | Siemens | no     | 5     | secondary   |
 | |
|             | defg   | Erna    | no     | 3     | secondary   |
 | |
|             | dhij   | Siemens | no     |       | residential |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route                   | turns                               |
 | |
|             | a,j       | Siemens,Siemens,Siemens | depart,continue slight right,arrive |
 | |
|             | a,g       | Siemens,Erna,Erna       | depart,new name slight left,arrive  |
 | |
|             | g,j       | Erna,Siemens,Siemens    | depart,turn left,arrive             |
 | |
|             | g,a       | Erna,Siemens,Siemens    | depart,new name slight right,arrive |
 | |
| 
 | |
|      #http://www.openstreetmap.org/#map=19/52.51303/13.32170
 | |
|      Scenario: Ernst Reuter Platz
 | |
|         Given the node map
 | |
|             """
 | |
|                   j                                     g
 | |
|                     .                                   .
 | |
|                        .                               .
 | |
|                           .                          .
 | |
|                             i                     h
 | |
|                                .' e - - k - - d '.
 | |
|                            '                         .
 | |
|                         f                               c
 | |
|                                                            .
 | |
|                                                               .
 | |
|                                                                 .
 | |
|                                                                   b
 | |
|                                                                    .
 | |
|                                                                      .
 | |
|                                                                       .
 | |
|                                                                        .
 | |
|                                                                         a
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | name  | oneway | lanes | highway   |
 | |
|             | abcdk | ernst | yes    | 4     | primary   |
 | |
|             | ek    | ernst | yes    | 5     | primary   |
 | |
|             | kef   | ernst | yes    | 4     | primary   |
 | |
|             | ghd   | march | yes    | 3     | secondary |
 | |
|             | eij   | otto  | yes    | 2     | secondary |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route           | turns                           |
 | |
|             | a,j       | ernst,otto,otto | depart,turn slight right,arrive |
 | |
|             | a,f       | ernst,ernst     | depart,arrive                   |
 | |
| 
 | |
|     #http://www.openstreetmap.org/#map=19/52.52409/13.36829
 | |
|     Scenario: Tiny Curve at Turn
 | |
|         Given the node map
 | |
|             """
 | |
|                                                 h
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 |
 | |
|                                                 f - - - - - - - - i - - g
 | |
|                                                 e                 |
 | |
|                                            .  d                   |
 | |
|             a - - - - - - - - - - b - c  '                        j
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes  | name  | oneway | lanes | highway     |
 | |
|             | abcdef | ella  | no     |       | residential |
 | |
|             | fig    | ella  | no     |       | residential |
 | |
|             | hf     | ilse  | no     |       | residential |
 | |
|             | ij     | wash  | no     |       | residential |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route          | turns                    |
 | |
|             | a,g       | ella,ella      | depart,arrive            |
 | |
|             | g,a       | ella,ella      | depart,arrive            |
 | |
|             | g,h       | ella,ilse,ilse | depart,turn right,arrive |
 | |
|             | a,h       | ella,ilse,ilse | depart,turn left,arrive  |
 | |
|             | h,g       | ilse,ella,ella | depart,turn left,arrive  |
 | |
|             | h,a       | ilse,ella,ella | depart,turn right,arrive |
 | |
| 
 | |
|     #http://www.openstreetmap.org/#map=18/52.53738/13.36027
 | |
|     Scenario: Merging at Turn - Don't report u-turn
 | |
|         Given the node map
 | |
|             """
 | |
|                                                             g
 | |
|                                                           .
 | |
|                                                         .
 | |
|                                                       .
 | |
|                                                     .
 | |
|                                                   f
 | |
|                             h                   .
 | |
|                                .              .
 | |
|                                   .         j
 | |
|                                      .    .
 | |
|                                         c
 | |
|                                       . . .
 | |
|                                     .   .   .
 | |
|                                   .    .      .
 | |
|                                 .     .         .
 | |
|                               .      .            .
 | |
|                             .       .               .
 | |
|                           .         .               b
 | |
|                         .          .                 .
 | |
|                       .            .                 .
 | |
|                     .             .                  .
 | |
|                   .               d                  .
 | |
|                 .                 .                  .
 | |
|               .                    .                 .
 | |
|             i                      .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                    .                 .
 | |
|                                     e                 a
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes  | name   | oneway | lanes | highway   |
 | |
|             | abc    | Heide  | yes    | 3     | secondary |
 | |
|             | cde    | Heide  | yes    | 2     | secondary |
 | |
|             | cjf    | Perle  | yes    | 6     | secondary |
 | |
|             | cjf    | Perle  | no     | 6     | secondary |
 | |
|             | fg     | Fenn   | no     | 6     | secondary |
 | |
|             | ch     | Friede | no     |       | tertiary  |
 | |
|             | ic     | Perle  | no     | 4     | secondary |
 | |
| 
 | |
|         And the nodes
 | |
|             | node | highway         |
 | |
|             | j    | traffic_signals |
 | |
|             | b    | traffic_signals |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route               | turns                          |
 | |
|             | a,e       | Heide,Heide,Heide   | depart,continue uturn,arrive   |
 | |
|             | a,g       | Heide,Fenn,Fenn     | depart,turn right,arrive       |
 | |
|             | a,h       | Heide,Friede,Friede | depart,turn slight left,arrive |
 | |
|             | i,e       | Perle,Heide,Heide   | depart,turn right,arrive       |
 | |
|             | i,h       | Perle,Friede,Friede | depart,turn left,arrive        |
 | |
| 
 | |
|     #http://www.openstreetmap.org/#map=19/52.48630/13.36017
 | |
|     Scenario: Don't Break U-turns
 | |
|         Given the node map
 | |
|             """
 | |
|                                           .  . .  b - - - - - - - - - - a
 | |
|                                   c   '
 | |
|                            .  ' /
 | |
|                    .    '     i
 | |
|             d  '             /
 | |
|                             /
 | |
|                             j
 | |
|                             |
 | |
|                             |
 | |
|                             |
 | |
|                             |
 | |
|                             |
 | |
|                             |
 | |
|             e - - - - - - - k
 | |
|                             |   .
 | |
|                             f        .
 | |
|                             l             '  -  g - - - - - - - - - - - h
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes  | name    | oneway | lanes | highway     |
 | |
|             | ab     | julius  | yes    | 2     | secondary   |
 | |
|             | gh     | julius  | yes    | 2     | secondary   |
 | |
|             | bcd    | kolonne | yes    | 2     | secondary   |
 | |
|             | ekg    | kolonne | yes    | 2     | secondary   |
 | |
|             | cijkf  | feurig  | yes    |       | residential |
 | |
|             | fl     | feurig  | no     |       | residential |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route                   | turns                        |
 | |
|             | b,g       | kolonne,kolonne,kolonne | depart,continue uturn,arrive |
 | |
| 
 | |
|     #http://www.openstreetmap.org/#map=19/52.51633/13.42077
 | |
|     Scenario: Service Road at the end with slight offset
 | |
|         Given the node map
 | |
|             """
 | |
|                                           d - - - - - - - - - - - - - - e
 | |
|                                           |
 | |
|             c - - - - - - - - - - - - - - b
 | |
|                                           |
 | |
|                                           |
 | |
|                                           |
 | |
|                                           |
 | |
|                                           |
 | |
|                                           |
 | |
|                                           |
 | |
|                                           |
 | |
|                                           |
 | |
|                                           a
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes  | name | highway     |
 | |
|             | ab     | holz | residential |
 | |
|             | bc     |      | service     |
 | |
|             | bde    |      | service     |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route      | turns                    |
 | |
|             | e,c       | ,          | depart,arrive            |
 | |
|             | e,a       | ,holz,holz | depart,turn left,arrive  |
 | |
|             | c,e       | ,          | depart,arrive            |
 | |
|             | c,a       | ,holz,holz | depart,turn right,arrive |
 | |
|             | a,c       | holz,,     | depart,turn left,arrive  |
 | |
|             | a,e       | holz,,     | depart,turn right,arrive |
 | |
| 
 | |
|     #http://www.openstreetmap.org/#map=19/52.45037/13.51923
 | |
|     Scenario: Special Turn Road
 | |
|         Given the node map
 | |
|             """
 | |
|             h - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - g - - - - f
 | |
|                                                                                                       |
 | |
|                                                                                                       |
 | |
|                                                                                                       |
 | |
|                                                                                                       |
 | |
|                                                                                                       |
 | |
|                                     d - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - e
 | |
|                                  .
 | |
|                               .
 | |
|                            .
 | |
|                         .
 | |
|                      .
 | |
|             a - - - b - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - c
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | name | ref | lanes | highway      | oneway |
 | |
|             | abc   | mich | b9  | 3     | primary      | yes    |
 | |
|             | fgh   | mich | b9  | 3     | primary      | yes    |
 | |
|             | bdeg  | mich |     |       | primary_link | yes    |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route          | ref      | turns                        |
 | |
|             | a,h       | mich,mich,mich | b9,b9,b9 | depart,continue uturn,arrive |
 | |
| 
 | |
|     #http://www.openstreetmap.org/#map=19/52.49449/13.18116
 | |
|     Scenario: Curved Parking Lot Road
 | |
|         Given the node map
 | |
|             """
 | |
|                                           m
 | |
|                                           |
 | |
|                                           |
 | |
|                                           |
 | |
|                                           |
 | |
|             f - - - - - - - - - - - - - - e - - - - - - - - - - - - - - d
 | |
|                                               l
 | |
|                                                 k
 | |
|                                                  \
 | |
|                                                   j
 | |
|                                                   i
 | |
|                                                  /
 | |
|                                                 h
 | |
|                                               g
 | |
|             a - - - - - - - - - - - - - - b - - - - - - - - - - - - - - c
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes    | name | oneway | highway     |
 | |
|             | abc      | gato | yes    | residential |
 | |
|             | def      | gato | yes    | residential |
 | |
|             | bghijkle |      | yes    | service     |
 | |
|             | em       | hain | no     | service     |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route          | turns                        |
 | |
|             | a,f       | gato,gato,gato | depart,continue uturn,arrive |
 | |
|             | d,m       | gato,hain,hain | depart,turn right,arrive     |
 | |
|             | a,m       | gato,hain,hain | depart,turn left,arrive      |
 | |
|             | d,f       | gato,gato      | depart,arrive                |
 | |
| 
 | |
|     #http://www.openstreetmap.org/#map=19/52.60831/13.42990
 | |
|     Scenario: Double Curve Turn
 | |
|         Given the node map
 | |
|             """
 | |
| 
 | |
|                                                               _   .   d
 | |
|             f - - - - - - - - - - - - - - - - - - - -_- e  '
 | |
|                                                   .
 | |
|                                               g
 | |
|                                              .
 | |
|                                            .
 | |
|                                           .
 | |
|                                          .
 | |
|                                         h
 | |
|                                         .                            _  c
 | |
|                                         .                        .
 | |
|                                         .                  .
 | |
|                                         i             .
 | |
|                                          .       .
 | |
|                                           .  .
 | |
|             a - - - - - - - - - - - - - - b
 | |
|                                              .
 | |
|                                                  .
 | |
|                                                       .
 | |
|                                                           j
 | |
|                                                                .
 | |
|                                                                     .
 | |
|                                                                         k
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes  | name  | oneway | highway   | lanes |
 | |
|             | ab     | rose  | yes    | secondary | 2     |
 | |
|             | ef     | rose  | yes    | secondary | 2     |
 | |
|             | de     | trift | yes    | secondary | 2     |
 | |
|             | bc     | trift | yes    | secondary | 2     |
 | |
|             | eghibj | muhle | yes    | tertiary  | 1     |
 | |
| 
 | |
|         And the nodes
 | |
|             | node | highway         |
 | |
|             | h    | traffic_signals |
 | |
|             | j    | traffic_signals |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route             | turns                              |
 | |
|             | a,c       | rose,trift,trift  | depart,new name slight left,arrive |
 | |
|             | a,k       | rose,muhle,muhle  | depart,turn slight right,arrive    |
 | |
|             | d,f       | trift,rose,rose   | depart,new name straight,arrive    |
 | |
|             | d,k       | trift,muhle,muhle | depart,turn sharp left,arrive      |
 | |
|             | d,c       | trift,trift,trift | depart,continue uturn,arrive       |
 | |
| 
 | |
|     #http://www.openstreetmap.org/#map=19/52.50740/13.44824
 | |
|     Scenario: Turning Loop at the end of the road
 | |
|         Given the node map
 | |
|             """
 | |
|                                                       l - - k  _
 | |
|                                                     .             j
 | |
|                                                   m                 '
 | |
|                                                  .                    i
 | |
|                                                 .                      .
 | |
|                                                 .                       .
 | |
|                                                 .                       h
 | |
|                                                 .                       .
 | |
|                                                 n                       .
 | |
|                                                 .                       .
 | |
|                                                 .                       g
 | |
|                                                 o                       .
 | |
|                                                .                       .
 | |
|                                               p                       f
 | |
|                                            .                         .
 | |
|                                        .                            .
 | |
|                                    .                            . e
 | |
|             a - - - - b - - - - c - - - - - - - - - - - - - d '
 | |
|             """
 | |
| 
 | |
|      And the ways
 | |
|             | nodes           | name    | highway     | lanes | oneway |
 | |
|             | abc             | circled | residential | 1     | no     |
 | |
|             | cdefghijklmnopc | circled | residential | 1     | yes    |
 | |
| 
 | |
|      When I route I should get
 | |
|             | waypoints | bearings     | route           | turns         |
 | |
|             | b,a       | 90,2 180,180 | circled,circled | depart,arrive |
 | |
| 
 | |
|     Scenario: Curved Parking Lot Road
 | |
|         Given the node map
 | |
|             """
 | |
|                                           m
 | |
|                                           |
 | |
|                                           |
 | |
|                                           |
 | |
|                                           |
 | |
|             f - - - - - - - - - - - - - - e - - - - - - - - - - - - - - d
 | |
|                                               l
 | |
|                                                 k
 | |
| 
 | |
|                                                   j
 | |
|                                                   i
 | |
| 
 | |
|                                                 h
 | |
|                                               g
 | |
|             a - - - - - - - - - - - - - - b - - - - - - - - - - - - - - c
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes    | name | oneway | highway     |
 | |
|             | abc      | gato | yes    | residential |
 | |
|             | def      | gato | yes    | residential |
 | |
|             | bghijkle |      | yes    | service     |
 | |
|             | em       | hain | no     | service     |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route          | turns                        |
 | |
|             | a,m       | gato,hain,hain | depart,turn left,arrive      |
 | |
| 
 | |
|     Scenario: Segfaulting Regression
 | |
|         Given the node map
 | |
|             """
 | |
|             a - - - - - - - - - - - - - - b c
 | |
|                                             |
 | |
|                                             |
 | |
|                                             |
 | |
|                                             d--------------e
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | lanes:forward |
 | |
|             | ab    |               |
 | |
|             | bcde  | 6             |
 | |
| 
 | |
|         When I route I should get
 | |
|             | waypoints | route        |
 | |
|             | a,e       | ab,bcde,bcde |
 | |
| 
 | |
| 
 | |
|     @3401
 | |
|     Scenario: Curve With Duplicated Coordinates
 | |
|         Given the node locations
 | |
|             | node | lat                | lon                | #          |
 | |
|             | a    | 0.9999280745650984 | 1.0                |            |
 | |
|             | b    | 0.9999280745650984 | 1.0000179813587253 |            |
 | |
|             | c    | 0.9999280745650984 | 1.0000359627174509 |            |
 | |
|             | d    | 0.9999460559238238 | 1.0000674300952204 |            |
 | |
|             | e    | 0.9999640372825492 | 1.0000809161142643 |            |
 | |
|             | f    | 0.9999820186412746 | 1.0000854114539457 |            |
 | |
|             | g    | 1.0                | 1.0000854114539457 |            |
 | |
|             | h    | 1.0                | 1.0000854114539457 | #same as g |
 | |
|             | z    | 0.9999100932063729 | 1.0000179813587253 |            |
 | |
|            #                   g
 | |
|            #                   |
 | |
|            #                   f
 | |
|            #                   '
 | |
|            #                  e
 | |
|            #                 '
 | |
|            #               d
 | |
|            #           '
 | |
|            #a - b - c
 | |
|            #    |
 | |
|            #    z
 | |
| 
 | |
|         And the ways
 | |
|             | nodes   | oneway | lanes | #                        |
 | |
|             | ab      | yes    | 1     |                          |
 | |
|             | zb      | yes    | 1     |                          |
 | |
|             | bcdefgh | yes    | 1     | #intentional duplication |
 | |
| 
 | |
|         # we don't care for turn instructions, this is a coordinate extraction bug check
 | |
|         When I route I should get
 | |
|             | waypoints | route              | intersections                                |
 | |
|             | a,g       | ab,bcdefgh,bcdefgh | true:90;true:45 false:180 false:270;true:180 |
 | |
| 
 | |
|     #https://github.com/Project-OSRM/osrm-backend/pull/3469#issuecomment-270806580
 | |
|     Scenario: Oszillating Lower Priority Road
 | |
| 		#Given the node map
 | |
| 	#		"""
 | |
| 	#		a -db    c
 | |
|     #           f
 | |
|     #   	"""
 | |
|         Given the node locations
 | |
|             | node | lat                | lon                | #          |
 | |
|             | a    | 1.0                | 1.0                |            |
 | |
|             | b    | 1.0000179813587253 | 1.0                |            |
 | |
|             | c    | 1.0000204580571323 | 1.0                |            |
 | |
|             | d    | 1.0000179813587253 | 1.0                | same as b  |
 | |
|             | f    | 1.0000179813587253 | 1.0000179813587253 |            |
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | oneway | lanes | highway |
 | |
|             | ab    | yes    | 1     | primary |
 | |
|             | bf    | yes    | 1     | primary |
 | |
|             | bcd   | yes    | 1     | service |
 | |
| 
 | |
|         # we don't care for turn instructions, this is a coordinate extraction bug check
 | |
|         When I route I should get
 | |
|             | waypoints | route |
 | |
|             | a,d       | ab,ab |
 |