diff --git a/cucumber.js b/cucumber.js index b01b3404a..c70b0c7a3 100644 --- a/cucumber.js +++ b/cucumber.js @@ -1,7 +1,7 @@ module.exports = { - default: '--strict --tags ~@stress --tags ~@todo --require features/support --require features/step_definitions', - verify: '--strict --tags ~@stress --tags ~@todo -f progress --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 ~@mld --tags ~@todo -f progress --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', mld: '--strict --tags ~@stress --tags ~@todo --tags ~@alternative --require features/support --require features/step_definitions -f progress' -} +}; diff --git a/features/testbot/avoid.feature b/features/testbot/avoid.feature new file mode 100644 index 000000000..ef7e9e210 --- /dev/null +++ b/features/testbot/avoid.feature @@ -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 | + + diff --git a/profiles/testbot.lua b/profiles/testbot.lua index d6aa09d85..36c11cf72 100644 --- a/profiles/testbot.lua +++ b/profiles/testbot.lua @@ -19,6 +19,12 @@ function setup() use_turn_restrictions = true }, + avoidable = { + [1] = {["motorway"] = true}, + [2] = {["toll"] = true}, + [3] = {["motorway"] = true, ["toll"] = true} + }, + default_speed = 24, speeds = { primary = 36, @@ -40,6 +46,7 @@ end function process_way (profile, way, result) 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 oneway = way:get_value_by_key("oneway") local route = way:get_value_by_key("route") @@ -103,6 +110,16 @@ function process_way (profile, way, result) result.backward_mode = mode.inaccessible 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 result.roundabout = true end