Add test for avoid flags

This commit is contained in:
Patrick Niklaus 2017-07-28 11:01:53 +00:00 committed by Patrick Niklaus
parent a3c94ef632
commit 960a595268
3 changed files with 86 additions and 3 deletions

View File

@ -1,7 +1,7 @@
module.exports = { module.exports = {
default: '--strict --tags ~@stress --tags ~@todo --require features/support --require features/step_definitions', default: '--strict --tags ~@stress --tags ~@mld --tags ~@todo --require features/support --require features/step_definitions',
verify: '--strict --tags ~@stress --tags ~@todo -f progress --require features/support --require features/step_definitions', verify: '--strict --tags ~@stress --tags ~@mld --tags ~@todo -f progress --require features/support --require features/step_definitions',
todo: '--strict --tags @todo --require features/support --require features/step_definitions', todo: '--strict --tags @todo --require features/support --require features/step_definitions',
all: '--strict --require features/support --require features/step_definitions', all: '--strict --require features/support --require features/step_definitions',
mld: '--strict --tags ~@stress --tags ~@todo --tags ~@alternative --require features/support --require features/step_definitions -f progress' mld: '--strict --tags ~@stress --tags ~@todo --tags ~@alternative --require features/support --require features/step_definitions -f progress'
} };

View File

@ -0,0 +1,66 @@
@routing @testbot @avoid @mld
Feature: Testbot - Avoid flags
Background:
Given the profile "testbot"
Given the node map
"""
a....b-----c-$-$-d
$ $ :
e.$.$.f.....g
"""
And the ways
| nodes | highway | toll | # |
| ab | primary | | always drivable |
| bc | motorway | | not drivable for avoid=motorway and avoid=motorway,toll |
| be | primary | yes | not drivable for avoid=toll and avoid=motorway,toll |
| ef | primary | yes | not drivable for avoid=toll and avoid=motorway,toll |
| fc | primary | yes | not drivable for avoid=toll and avoid=motorway,toll |
| cd | motorway | yes | not drivable for avoid=motorway avoid=toll and avoid=motorway,toll |
| fg | primary | | always drivable |
| gd | primary | | always drivable |
Scenario: Testbot - avoid nothing
When I route I should get
| from | to | route |
| a | d | ab,bc,cd,cd |
| a | g | ab,be,ef,fg,fg |
| a | c | ab,bc,bc |
| a | f | ab,be,ef,ef |
Scenario: Testbot - avoid motorway
Given the query options
| avoid | motorway |
When I route I should get
| from | to | route |
| a | d | ab,be,ef,fg,gd,gd |
| a | g | ab,be,ef,fg,fg |
| a | c | ab,be,ef,fc,fc |
| a | f | ab,be,ef,ef |
Scenario: Testbot - avoid toll
Given the query options
| avoid | toll |
When I route I should get
| from | to | route |
| a | d | |
| a | g | |
| a | c | ab,bc,bc |
| a | f | |
| f | d | fg,gd,gd |
Scenario: Testbot - avoid motorway and toll
Given the query options
| avoid | motorway,toll |
When I route I should get
| from | to | route |
| a | d | |
| a | g | |
| a | c | ab,bc,bc |
| a | f | |
| f | d | fg,gd,gd |

View File

@ -19,6 +19,12 @@ function setup()
use_turn_restrictions = true use_turn_restrictions = true
}, },
avoidable = {
[1] = {["motorway"] = true},
[2] = {["toll"] = true},
[3] = {["motorway"] = true, ["toll"] = true}
},
default_speed = 24, default_speed = 24,
speeds = { speeds = {
primary = 36, primary = 36,
@ -40,6 +46,7 @@ end
function process_way (profile, way, result) function process_way (profile, way, result)
local highway = way:get_value_by_key("highway") local highway = way:get_value_by_key("highway")
local toll = way:get_value_by_key("toll")
local name = way:get_value_by_key("name") local name = way:get_value_by_key("name")
local oneway = way:get_value_by_key("oneway") local oneway = way:get_value_by_key("oneway")
local route = way:get_value_by_key("route") local route = way:get_value_by_key("route")
@ -103,6 +110,16 @@ function process_way (profile, way, result)
result.backward_mode = mode.inaccessible result.backward_mode = mode.inaccessible
end end
if highway == 'motorway' then
result.forward_classes["motorway"] = true
result.backward_classes["motorway"] = true
end
if toll == "yes" then
result.forward_classes["toll"] = true
result.backward_classes["toll"] = true
end
if junction == 'roundabout' then if junction == 'roundabout' then
result.roundabout = true result.roundabout = true
end end