- handle penalties within edges (not phantom nodes) - changes model from providing penalties on turns to using additional segments
192 lines
5.0 KiB
Gherkin
192 lines
5.0 KiB
Gherkin
@routing @penalty @signal @testbot
|
|
Feature: Penalties
|
|
# Testbot uses a signal penalty of 7s.
|
|
|
|
Background:
|
|
Given the profile "testbot"
|
|
|
|
Scenario: Traffic signals should incur a delay, without changing distance
|
|
Given the node map
|
|
"""
|
|
a b c
|
|
d e f
|
|
"""
|
|
|
|
And the nodes
|
|
| node | highway |
|
|
| e | traffic_signals |
|
|
|
|
And the ways
|
|
| nodes |
|
|
| abc |
|
|
| def |
|
|
|
|
When I route I should get
|
|
| from | to | route | time | distance |
|
|
| a | c | abc,abc | 20s +-1 | 200m +-1 |
|
|
| d | f | def,def | 27s +-1 | 200m +-1 |
|
|
|
|
# Penalties not on the phantom nodes
|
|
Scenario: Traffic signals should incur a delay, without changing distance
|
|
Given the node map
|
|
"""
|
|
a b c d e
|
|
f g h i j
|
|
"""
|
|
|
|
And the nodes
|
|
| node | highway |
|
|
| c | traffic_signals |
|
|
|
|
And the ways
|
|
| nodes |
|
|
| ab |
|
|
| bcd |
|
|
| de |
|
|
| fg |
|
|
| ghi |
|
|
| ij |
|
|
|
|
When I route I should get
|
|
| from | to | route | time | distance |
|
|
| a | e | ab,bcd,de | 47s +-1 | 400m +-1 |
|
|
| f | j | fg,ghi,ij | 40s +-1 | 400m +-1 |
|
|
|
|
|
|
Scenario: Signal penalty should not depend on way type
|
|
Given the node map
|
|
"""
|
|
a b c
|
|
d e f
|
|
g h i
|
|
"""
|
|
|
|
And the nodes
|
|
| node | highway |
|
|
| b | traffic_signals |
|
|
| e | traffic_signals |
|
|
| h | traffic_signals |
|
|
|
|
And the ways
|
|
| nodes | highway |
|
|
| abc | primary |
|
|
| def | secondary |
|
|
| ghi | tertiary |
|
|
|
|
When I route I should get
|
|
| from | to | route | time |
|
|
| a | c | abc,abc | 27s +-1 |
|
|
| d | f | def,def | 47s +-1 |
|
|
| g | i | ghi,ghi | 67s +-1 |
|
|
|
|
Scenario: Passing multiple traffic signals should incur a accumulated delay
|
|
Given the node map
|
|
"""
|
|
a b c d e
|
|
"""
|
|
|
|
And the nodes
|
|
| node | highway |
|
|
| b | traffic_signals |
|
|
| c | traffic_signals |
|
|
| d | traffic_signals |
|
|
|
|
And the ways
|
|
| nodes |
|
|
| abcde |
|
|
|
|
When I route I should get
|
|
| from | to | route | time |
|
|
| a | e | abcde,abcde | 61s +-1 |
|
|
|
|
@todo
|
|
Scenario: Signal penalty should not depend on way type
|
|
Given the node map
|
|
"""
|
|
a b c
|
|
d e f
|
|
g h i
|
|
"""
|
|
|
|
And the nodes
|
|
| node | highway |
|
|
| b | traffic_signals |
|
|
| e | traffic_signals |
|
|
| h | traffic_signals |
|
|
|
|
And the ways
|
|
| nodes | highway |
|
|
| abc | primary |
|
|
| def | secondary |
|
|
| ghi | tertiary |
|
|
|
|
When I route I should get
|
|
| from | to | route | time |
|
|
| a | b | abc,abc | 10s +-1 |
|
|
| a | c | abc,abc | 27s +-1 |
|
|
| d | e | def,def | 20s +-1 |
|
|
| d | f | def,def | 47s +-1 |
|
|
| g | h | ghi,ghi | 30s +-1 |
|
|
| g | i | ghi,ghi | 67s +-1 |
|
|
|
|
@todo
|
|
Scenario: Starting or ending at a traffic signal should not incur a delay
|
|
Given the node map
|
|
"""
|
|
a b c
|
|
"""
|
|
|
|
And the nodes
|
|
| node | highway |
|
|
| b | traffic_signals |
|
|
|
|
And the ways
|
|
| nodes |
|
|
| abc |
|
|
|
|
When I route I should get
|
|
| from | to | route | time |
|
|
| a | b | abc | 10s +-1 |
|
|
| b | a | abc | 10s +-1 |
|
|
|
|
Scenario: Routing between signals on the same way should not incur a delay
|
|
Given the node map
|
|
"""
|
|
a b c d
|
|
"""
|
|
|
|
And the nodes
|
|
| node | highway |
|
|
| a | traffic_signals |
|
|
| d | traffic_signals |
|
|
|
|
And the ways
|
|
| nodes | highway |
|
|
| abcd | primary |
|
|
|
|
When I route I should get
|
|
| from | to | route | time |
|
|
| b | c | abcd,abcd | 10s +-1 |
|
|
| c | b | abcd,abcd | 10s +-1 |
|
|
|
|
Scenario: Prefer faster route without traffic signals
|
|
Given a grid size of 50 meters
|
|
And the node map
|
|
"""
|
|
a b c
|
|
d
|
|
"""
|
|
|
|
And the nodes
|
|
| node | highway |
|
|
| b | traffic_signals |
|
|
|
|
And the ways
|
|
| nodes | highway |
|
|
| abc | primary |
|
|
| adc | primary |
|
|
|
|
When I route I should get
|
|
| from | to | route |
|
|
| a | c | adc,adc |
|