- handle penalties within edges (not phantom nodes) - changes model from providing penalties on turns to using additional segments
		
			
				
	
	
		
			192 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
			
		
		
	
	
			192 lines
		
	
	
		
			5.0 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
| @routing @penalty @signal @testbot
 | |
| Feature: Penalties
 | |
| # Testbot uses a signal penalty of 7s.
 | |
| 
 | |
|     Background:
 | |
|         Given the profile "testbot"
 | |
| 
 | |
|     Scenario: Traffic signals should incur a delay, without changing distance
 | |
|         Given the node map
 | |
|             """
 | |
|             a b c
 | |
|             d e f
 | |
|             """
 | |
| 
 | |
|         And the nodes
 | |
|             | node | highway         |
 | |
|             | e    | traffic_signals |
 | |
| 
 | |
|         And the ways
 | |
|             | nodes |
 | |
|             | abc   |
 | |
|             | def   |
 | |
| 
 | |
|         When I route I should get
 | |
|             | from | to | route   | time    | distance |
 | |
|             | a    | c  | abc,abc | 20s +-1 | 200m +-1 |
 | |
|             | d    | f  | def,def | 27s +-1 | 200m +-1 |
 | |
| 
 | |
|     # Penalties not on the phantom nodes
 | |
|     Scenario: Traffic signals should incur a delay, without changing distance
 | |
|         Given the node map
 | |
|             """
 | |
|             a b c d e
 | |
|             f g h i j
 | |
|             """
 | |
| 
 | |
|         And the nodes
 | |
|             | node | highway         |
 | |
|             | c    | traffic_signals |
 | |
| 
 | |
|         And the ways
 | |
|             | nodes |
 | |
|             | ab    |
 | |
|             | bcd   |
 | |
|             | de    |
 | |
|             | fg    |
 | |
|             | ghi   |
 | |
|             | ij    |
 | |
| 
 | |
|         When I route I should get
 | |
|             | from | to | route     | time    | distance |
 | |
|             | a    | e  | ab,bcd,de | 47s +-1 | 400m +-1 |
 | |
|             | f    | j  | fg,ghi,ij | 40s +-1 | 400m +-1 |
 | |
| 
 | |
| 
 | |
|     Scenario: Signal penalty should not depend on way type
 | |
|         Given the node map
 | |
|             """
 | |
|             a b c
 | |
|             d e f
 | |
|             g h i
 | |
|             """
 | |
| 
 | |
|         And the nodes
 | |
|             | node | highway         |
 | |
|             | b    | traffic_signals |
 | |
|             | e    | traffic_signals |
 | |
|             | h    | traffic_signals |
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | highway   |
 | |
|             | abc   | primary   |
 | |
|             | def   | secondary |
 | |
|             | ghi   | tertiary  |
 | |
| 
 | |
|         When I route I should get
 | |
|             | from | to | route   | time    |
 | |
|             | a    | c  | abc,abc | 27s +-1 |
 | |
|             | d    | f  | def,def | 47s +-1 |
 | |
|             | g    | i  | ghi,ghi | 67s +-1 |
 | |
| 
 | |
|     Scenario: Passing multiple traffic signals should incur a accumulated delay
 | |
|         Given the node map
 | |
|             """
 | |
|             a b c d e
 | |
|             """
 | |
| 
 | |
|         And the nodes
 | |
|             | node | highway         |
 | |
|             | b    | traffic_signals |
 | |
|             | c    | traffic_signals |
 | |
|             | d    | traffic_signals |
 | |
| 
 | |
|         And the ways
 | |
|             | nodes |
 | |
|             | abcde |
 | |
| 
 | |
|         When I route I should get
 | |
|             | from | to | route       | time    |
 | |
|             | a    | e  | abcde,abcde | 61s +-1 |
 | |
| 
 | |
|     @todo
 | |
|     Scenario: Signal penalty should not depend on way type
 | |
|         Given the node map
 | |
|             """
 | |
|             a b c
 | |
|             d e f
 | |
|             g h i
 | |
|             """
 | |
| 
 | |
|         And the nodes
 | |
|             | node | highway         |
 | |
|             | b    | traffic_signals |
 | |
|             | e    | traffic_signals |
 | |
|             | h    | traffic_signals |
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | highway   |
 | |
|             | abc   | primary   |
 | |
|             | def   | secondary |
 | |
|             | ghi   | tertiary  |
 | |
| 
 | |
|         When I route I should get
 | |
|             | from | to | route   | time    |
 | |
|             | a    | b  | abc,abc | 10s +-1 |
 | |
|             | a    | c  | abc,abc | 27s +-1 |
 | |
|             | d    | e  | def,def | 20s +-1 |
 | |
|             | d    | f  | def,def | 47s +-1 |
 | |
|             | g    | h  | ghi,ghi | 30s +-1 |
 | |
|             | g    | i  | ghi,ghi | 67s +-1 |
 | |
| 
 | |
|     @todo
 | |
|     Scenario: Starting or ending at a traffic signal should not incur a delay
 | |
|         Given the node map
 | |
|             """
 | |
|             a b c
 | |
|             """
 | |
| 
 | |
|         And the nodes
 | |
|             | node | highway         |
 | |
|             | b    | traffic_signals |
 | |
| 
 | |
|         And the ways
 | |
|             | nodes |
 | |
|             | abc   |
 | |
| 
 | |
|         When I route I should get
 | |
|             | from | to | route | time    |
 | |
|             | a    | b  | abc   | 10s +-1 |
 | |
|             | b    | a  | abc   | 10s +-1 |
 | |
| 
 | |
|     Scenario: Routing between signals on the same way should not incur a delay
 | |
|         Given the node map
 | |
|             """
 | |
|             a b c d
 | |
|             """
 | |
| 
 | |
|         And the nodes
 | |
|             | node | highway         |
 | |
|             | a    | traffic_signals |
 | |
|             | d    | traffic_signals |
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | highway |
 | |
|             | abcd  | primary |
 | |
| 
 | |
|         When I route I should get
 | |
|             | from | to | route     | time    |
 | |
|             | b    | c  | abcd,abcd | 10s +-1 |
 | |
|             | c    | b  | abcd,abcd | 10s +-1 |
 | |
| 
 | |
|     Scenario: Prefer faster route without traffic signals
 | |
|         Given a grid size of 50 meters
 | |
|         And the node map
 | |
|             """
 | |
|             a   b   c
 | |
|                 d
 | |
|             """
 | |
| 
 | |
|         And the nodes
 | |
|             | node | highway         |
 | |
|             | b    | traffic_signals |
 | |
| 
 | |
|         And the ways
 | |
|             | nodes | highway |
 | |
|             | abc   | primary |
 | |
|             | adc   | primary |
 | |
| 
 | |
|         When I route I should get
 | |
|             | from | to | route   |
 | |
|             | a    | c  | adc,adc |
 |