test maxspeed forward/backward
This commit is contained in:
parent
3595ac08f7
commit
4f9c422e2f
@ -32,26 +32,3 @@ Feature: Car - Max speed restrictions
|
|||||||
| from | to | route | time |
|
| from | to | route | time |
|
||||||
| a | b | ab | 144s ~10% |
|
| a | b | ab | 144s ~10% |
|
||||||
| b | c | bc | 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
|
Feature: Separate settings for forward/backward direction
|
||||||
|
|
||||||
Background:
|
Background:
|
||||||
|
@ -23,6 +23,18 @@ ignore_areas = true -- future feature
|
|||||||
traffic_signal_penalty = 7 -- seconds
|
traffic_signal_penalty = 7 -- seconds
|
||||||
u_turn_penalty = 20
|
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)
|
function node_function (node)
|
||||||
local traffic_signal = node.tags:Find("highway")
|
local traffic_signal = node.tags:Find("highway")
|
||||||
@ -45,6 +57,15 @@ function way_function (way, numberOfNodesInWay)
|
|||||||
local oneway = way.tags:Find("oneway")
|
local oneway = way.tags:Find("oneway")
|
||||||
local route = way.tags:Find("route")
|
local route = way.tags:Find("route")
|
||||||
local duration = way.tags:Find("duration")
|
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
|
way.name = name
|
||||||
|
|
||||||
@ -54,12 +75,20 @@ function way_function (way, numberOfNodesInWay)
|
|||||||
way.is_duration_set = true
|
way.is_duration_set = true
|
||||||
else
|
else
|
||||||
way.speed = speed_profile[highway] or speed_profile['default']
|
way.speed = speed_profile[highway] or speed_profile['default']
|
||||||
end
|
|
||||||
|
|
||||||
if(highway == "river") then
|
if highway == "river" then
|
||||||
local temp_speed = way.speed;
|
local temp_speed = way.speed;
|
||||||
way.speed = temp_speed*3/2
|
way.speed = temp_speed*3/2
|
||||||
way.backward_speed = temp_speed*2/3
|
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
|
end
|
||||||
|
|
||||||
if oneway == "no" or oneway == "0" or oneway == "false" then
|
if oneway == "no" or oneway == "0" or oneway == "false" then
|
||||||
|
Loading…
Reference in New Issue
Block a user