248 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
			
		
		
	
	
			248 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			Gherkin
		
	
	
	
	
	
| @routing @distance @testbot
 | |
| Feature: Distance calculation
 | |
| 
 | |
|     Background:
 | |
|         Given the profile "testbot"
 | |
| 
 | |
|     Scenario: 100m distance
 | |
|         Given a grid size of 100 meters
 | |
|         Given the node map
 | |
|             """
 | |
|             a b
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes |
 | |
|             | ab    |
 | |
| 
 | |
|         When I route I should get
 | |
|             | from | to | route | distance |
 | |
|             | a    | b  | ab,ab | 100m     |
 | |
| 
 | |
|     Scenario: Distance should equal sum of segments, leftwinded
 | |
|         Given the node map
 | |
|             """
 | |
|             e
 | |
|             d c
 | |
|             a b
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes |
 | |
|             | abcde |
 | |
| 
 | |
|         When I route I should get
 | |
|             | from | to | route       | distance |
 | |
|             | a    | d  | abcde,abcde | 300m +-1 |
 | |
| 
 | |
|     Scenario: Distance should equal sum of segments, rightwinded
 | |
|         Given the node map
 | |
|             """
 | |
|               e
 | |
|             c d
 | |
|             b a
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes |
 | |
|             | abcde |
 | |
| 
 | |
|         When I route I should get
 | |
|             | from | to | route       | distance |
 | |
|             | a    | d  | abcde,abcde | 300m +-1 |
 | |
| 
 | |
|     Scenario: 10m distances
 | |
|         Given a grid size of 10 meters
 | |
|         Given the node map
 | |
|             """
 | |
|             a b
 | |
|               c
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes |
 | |
|             | abc   |
 | |
| 
 | |
|         When I route I should get
 | |
|             | from | to | route   | distance |
 | |
|             | a    | b  | abc,abc | 10m      |
 | |
|             | b    | a  | abc,abc | 10m      |
 | |
|             | b    | c  | abc,abc | 10m      |
 | |
|             | c    | b  | abc,abc | 10m      |
 | |
|             | a    | c  | abc,abc | 20m      |
 | |
|             | c    | a  | abc,abc | 20m      |
 | |
| 
 | |
|     Scenario: 100m distances
 | |
|         Given a grid size of 100 meters
 | |
|         Given the node map
 | |
|             """
 | |
|             a b
 | |
|               c
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes |
 | |
|             | abc   |
 | |
| 
 | |
|         When I route I should get
 | |
|             | from | to | route   | distance |
 | |
|             | a    | b  | abc,abc | 100m     |
 | |
|             | b    | a  | abc,abc | 100m     |
 | |
|             | b    | c  | abc,abc | 100m     |
 | |
|             | c    | b  | abc,abc | 100m     |
 | |
|             | a    | c  | abc,abc | 200m     |
 | |
|             | c    | a  | abc,abc | 200m     |
 | |
| 
 | |
|     Scenario: 1km distance
 | |
|         Given a grid size of 1000 meters
 | |
|         Given the node map
 | |
|             """
 | |
|             a b
 | |
|               c
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes |
 | |
|             | abc   |
 | |
| 
 | |
|         When I route I should get
 | |
|             | from | to | route   | distance  |
 | |
|             | a    | b  | abc,abc | 1000m +-1 |
 | |
|             | b    | a  | abc,abc | 1000m +-1 |
 | |
|             | b    | c  | abc,abc | 1000m +-1 |
 | |
|             | c    | b  | abc,abc | 1000m +-1 |
 | |
|             | a    | c  | abc,abc | 2000m +-1 |
 | |
|             | c    | a  | abc,abc | 2000m +-1 |
 | |
| 
 | |
|     Scenario: Distance of a winding south-north path
 | |
|         Given a grid size of 10 meters
 | |
|         Given the node map
 | |
|             """
 | |
|             a b
 | |
|             d c
 | |
|             e f
 | |
|             h g
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes    |
 | |
|             | abcdefgh |
 | |
| 
 | |
|         When I route I should get
 | |
|             | from | to | route             | distance |
 | |
|             | a    | b  | abcdefgh,abcdefgh | 10m      |
 | |
|             | a    | c  | abcdefgh,abcdefgh | 20m      |
 | |
|             | a    | d  | abcdefgh,abcdefgh | 30m      |
 | |
|             | a    | e  | abcdefgh,abcdefgh | 40m      |
 | |
|             | a    | f  | abcdefgh,abcdefgh | 50m      |
 | |
|             | a    | g  | abcdefgh,abcdefgh | 60m +-1  |
 | |
|             | a    | h  | abcdefgh,abcdefgh | 70m +-1  |
 | |
| 
 | |
|     Scenario: Distance of a winding east-west path
 | |
|         Given a grid size of 10 meters
 | |
|         Given the node map
 | |
|             """
 | |
|             a d e h
 | |
|             b c f g
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes    |
 | |
|             | abcdefgh |
 | |
| 
 | |
|         When I route I should get
 | |
|             | from | to | route             | distance |
 | |
|             | a    | b  | abcdefgh,abcdefgh | 10m      |
 | |
|             | a    | c  | abcdefgh,abcdefgh | 20m      |
 | |
|             | a    | d  | abcdefgh,abcdefgh | 30m      |
 | |
|             | a    | e  | abcdefgh,abcdefgh | 40m      |
 | |
|             | a    | f  | abcdefgh,abcdefgh | 50m      |
 | |
|             | a    | g  | abcdefgh,abcdefgh | 60m +-1  |
 | |
|             | a    | h  | abcdefgh,abcdefgh | 70m +-1  |
 | |
| 
 | |
|     Scenario: Geometric distances
 | |
|         Given a grid size of 100 meters
 | |
|         Given the node map
 | |
|             """
 | |
|             v w y a b c d
 | |
|             u           e
 | |
|             t           f
 | |
|             s     x     g
 | |
|             r           h
 | |
|             q           i
 | |
|             p o n m l k j
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes |
 | |
|             | xa    |
 | |
|             | xb    |
 | |
|             | xc    |
 | |
|             | xd    |
 | |
|             | xe    |
 | |
|             | xf    |
 | |
|             | xg    |
 | |
|             | xh    |
 | |
|             | xi    |
 | |
|             | xj    |
 | |
|             | xk    |
 | |
|             | xl    |
 | |
|             | xm    |
 | |
|             | xn    |
 | |
|             | xo    |
 | |
|             | xp    |
 | |
|             | xq    |
 | |
|             | xr    |
 | |
|             | xs    |
 | |
|             | xt    |
 | |
|             | xu    |
 | |
|             | xv    |
 | |
|             | xw    |
 | |
|             | xy    |
 | |
| 
 | |
|         When I route I should get
 | |
|             | from | to | route | distance |
 | |
|             | x    | a  | xa,xa | 300m +-1 |
 | |
|             | x    | b  | xb,xb | 316m +-1 |
 | |
|             | x    | c  | xc,xc | 360m +-1 |
 | |
|             | x    | d  | xd,xd | 424m +-1 |
 | |
|             | x    | e  | xe,xe | 360m +-1 |
 | |
|             | x    | f  | xf,xf | 316m +-1 |
 | |
|             | x    | g  | xg,xg | 300m +-1 |
 | |
|             | x    | h  | xh,xh | 316m +-1 |
 | |
|             | x    | i  | xi,xi | 360m +-1 |
 | |
|             | x    | j  | xj,xj | 424m +-1 |
 | |
|             | x    | k  | xk,xk | 360m +-1 |
 | |
|             | x    | l  | xl,xl | 316m +-1 |
 | |
|             | x    | m  | xm,xm | 300m +-1 |
 | |
|             | x    | n  | xn,xn | 316m +-1 |
 | |
|             | x    | o  | xo,xo | 360m +-1 |
 | |
|             | x    | p  | xp,xp | 424m +-1 |
 | |
|             | x    | q  | xq,xq | 360m +-1 |
 | |
|             | x    | r  | xr,xr | 316m +-1 |
 | |
|             | x    | s  | xs,xs | 300m +-1 |
 | |
|             | x    | t  | xt,xt | 316m +-1 |
 | |
|             | x    | u  | xu,xu | 360m +-1 |
 | |
|             | x    | v  | xv,xv | 424m +-1 |
 | |
|             | x    | w  | xw,xw | 360m +-1 |
 | |
|             | x    | y  | xy,xy | 316m +-1 |
 | |
| 
 | |
| 
 | |
|     # Check rounding errors
 | |
|     Scenario: Distances Long distances
 | |
|         Given a grid size of 1000 meters
 | |
|         Given the node map
 | |
|             """
 | |
|             a b c d
 | |
|             """
 | |
| 
 | |
|         And the ways
 | |
|             | nodes    |
 | |
|             | abcd |
 | |
| 
 | |
|         When I route I should get
 | |
|             | from | to | distance  |
 | |
|             | a    | b  | 1000m +-3 |
 | |
|             | a    | c  | 2000m +-3 |
 | |
|             | a    | d  | 3000m +-3 |
 |