test maxspeed forward/backward
This commit is contained in:
		
							parent
							
								
									46d1a87b89
								
							
						
					
					
						commit
						384be58230
					
				| @ -32,26 +32,3 @@ Feature: Car - Max speed restrictions | ||||
| 		 | from | to | route | time      | | ||||
| 		 | a    | b  | ab    | 144s ~10% | | ||||
| 		 | b    | c  | bc    | 144s ~10% | | ||||
| 	 | ||||
| 	@oppposite @todo | ||||
| 	Scenario: Car - Forward/backward maxspeed | ||||
| 		Given the node map | ||||
| 		 | a | b | c | d | e | | ||||
| 
 | ||||
| 		And the ways | ||||
| 		 | nodes | highway | maxspeed:forward | maxspeed:backward | | ||||
| 		 | ab    | primary |                  |                   | | ||||
| 		 | bc    | primart | 18               | 9                 | | ||||
| 		 | cd    | primart |                  | 9                 | | ||||
| 		 | de    | primart | 9                |                   | | ||||
| 
 | ||||
| 		When I route I should get | ||||
| 		 | from | to | route | time | | ||||
| 		 | a    | b  | ab    | 10s  | | ||||
| 		 | b    | a  | ab    | 10s  | | ||||
| 		 | b    | c  | bc    | 20s  | | ||||
| 		 | c    | b  | bc    | 40s  | | ||||
| 		 | c    | d  | cd    | 10s  | | ||||
| 		 | d    | c  | cd    | 20s  | | ||||
| 		 | d    | e  | de    | 20s  | | ||||
| 		 | e    | d  | de    | 10s  | | ||||
|  | ||||
							
								
								
									
										70
									
								
								features/testbot/maxspeed.feature
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										70
									
								
								features/testbot/maxspeed.feature
									
									
									
									
									
										Normal file
									
								
							| @ -0,0 +1,70 @@ | ||||
| @routing @maxspeed @testbot | ||||
| Feature: Car - Max speed restrictions | ||||
| 
 | ||||
| 	Background: Use specific speeds | ||||
| 		Given the profile "testbot" | ||||
| 	 | ||||
| 	Scenario: Testbot - Respect maxspeeds when lower that way type speed | ||||
| 		Given the node map | ||||
| 		 | a | b | c | d | | ||||
| 
 | ||||
| 		And the ways | ||||
| 		 | nodes | maxspeed | | ||||
| 		 | ab    |          | | ||||
| 		 | bc    | 24       | | ||||
| 		 | cd    | 18       | | ||||
| 
 | ||||
| 		When I route I should get | ||||
| 		 | from | to | route | time    | | ||||
| 		 | a    | b  | ab    | 10s +-1 | | ||||
| 		 | b    | a  | ab    | 10s +-1 | | ||||
| 		 | b    | c  | bc    | 15s +-1 | | ||||
| 		 | c    | b  | bc    | 15s +-1 | | ||||
| 		 | c    | d  | cd    | 20s +-1 | | ||||
| 		 | d    | c  | cd    | 20s +-1 | | ||||
| 
 | ||||
| 	Scenario: Testbot - Ignore maxspeed when higher than way speed | ||||
| 		Given the node map | ||||
| 		 | a | b | c | | ||||
| 
 | ||||
| 		And the ways | ||||
| 		 | nodes | maxspeed | | ||||
| 		 | ab    |          | | ||||
| 		 | bc    | 200      | | ||||
| 
 | ||||
| 		When I route I should get | ||||
| 		 | from | to | route | time    | | ||||
| 		 | a    | b  | ab    | 20s +-1 | | ||||
| 		 | b    | c  | bc    | 20s +-1 | | ||||
| 
 | ||||
|     @opposite | ||||
|     Scenario: Testbot - Forward/backward maxspeed | ||||
|     	Given the node map | ||||
|     	 | a | b | c | d | e | f | g | h | | ||||
| 
 | ||||
|     	And the ways | ||||
|     	 | nodes | maxspeed | maxspeed:forward | maxspeed:backward | | ||||
|     	 | ab    |          |                  |                   | | ||||
|     	 | bc    | 18       |                  |                   | | ||||
|     	 | cd    |          | 18               |                   | | ||||
|     	 | de    |          |                  | 18                | | ||||
|     	 | ef    | 9        | 18               |                   | | ||||
|     	 | fg    | 9        |                  | 18                | | ||||
|     	 | gh    | 9        | 24               | 18                | | ||||
| 
 | ||||
|     	When I route I should get | ||||
|     	 | from | to | route | time    | | ||||
|     	 | a    | b  | ab    | 10s +-1 | | ||||
|     	 | b    | a  | ab    | 10s +-1 | | ||||
|     	 | b    | c  | bc    | 20s +-1 | | ||||
|     	 | c    | b  | bc    | 20s +-1 | | ||||
|     	 | c    | d  | cd    | 20s +-1 | | ||||
|     	 | d    | c  | cd    | 10s +-1 | | ||||
|     	 | d    | e  | de    | 10s +-1 | | ||||
|     	 | e    | d  | de    | 20s +-1 | | ||||
|     	 | e    | f  | ef    | 20s +-1 | | ||||
|     	 | f    | e  | ef    | 10s +-1 | | ||||
|     	 | f    | g  | fg    | 10s +-1 | | ||||
|     	 | g    | f  | fg    | 20s +-1 | | ||||
|     	 | g    | h  | gh    | 15s +-1 | | ||||
|     	 | h    | g  | gh    | 10s +-1 | | ||||
| @ -1,4 +1,4 @@ | ||||
| @routing @opposite | ||||
| @routing @testbot @opposite | ||||
| Feature: Separate settings for forward/backward direction | ||||
| 	 | ||||
| 	Background: | ||||
|  | ||||
| @ -23,6 +23,18 @@ ignore_areas 			= true	-- future feature | ||||
| traffic_signal_penalty 	= 7		-- seconds | ||||
| u_turn_penalty 			= 20 | ||||
| 
 | ||||
| function limit_speed(speed, limits) | ||||
|     -- don't use ipairs(), since it stops at the first nil value | ||||
|     for i=1, #limits do | ||||
|         limit = limits[i] | ||||
|         if limit ~= nil and limit > 0 then | ||||
|             if limit < speed then | ||||
|                 return limit        -- stop at first speedlimit that's smaller than speed | ||||
|             end | ||||
|         end | ||||
|     end | ||||
|     return speed | ||||
| end | ||||
| 
 | ||||
| function node_function (node) | ||||
| 	local traffic_signal = node.tags:Find("highway") | ||||
| @ -45,6 +57,15 @@ function way_function (way, numberOfNodesInWay) | ||||
| 	local oneway = way.tags:Find("oneway") | ||||
| 	local route = way.tags:Find("route") | ||||
| 	local duration = way.tags:Find("duration") | ||||
|     local maxspeed = tonumber(way.tags:Find ( "maxspeed")) | ||||
|     local maxspeed_forward = tonumber(way.tags:Find( "maxspeed:forward")) | ||||
|     local maxspeed_backward = tonumber(way.tags:Find( "maxspeed:backward")) | ||||
| 	 | ||||
| 	print('---') | ||||
| 	print(name) | ||||
| 	print(tostring(maxspeed)) | ||||
| 	print(tostring(maxspeed_forward)) | ||||
| 	print(tostring(maxspeed_backward)) | ||||
| 	 | ||||
| 	way.name = name | ||||
| 
 | ||||
| @ -54,12 +75,20 @@ function way_function (way, numberOfNodesInWay) | ||||
| 	 	way.is_duration_set = true | ||||
| 	else | ||||
| 		way.speed = speed_profile[highway] or speed_profile['default'] | ||||
| 	end | ||||
| 
 | ||||
| 	if(highway == "river") then | ||||
|     	if highway == "river" then | ||||
|     		local temp_speed = way.speed; | ||||
|     		way.speed = temp_speed*3/2 | ||||
|     		way.backward_speed = temp_speed*2/3 | ||||
|     	else | ||||
|     	    way.backward_speed = way.speed | ||||
|     	end | ||||
|          | ||||
|         way.speed = limit_speed( way.speed, {maxspeed_forward, maxspeed} ) | ||||
|         way.backward_speed = limit_speed( way.backward_speed, {maxspeed_backward, maxspeed} ) | ||||
| 
 | ||||
|     	-- print( 'limit forw: '  .. tostring(way.speed)) | ||||
|     	-- print( 'limit back: '  .. tostring(way.backward_speed)) | ||||
| 	end | ||||
| 	 | ||||
| 	if oneway == "no" or oneway == "0" or oneway == "false" then | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user