330 lines
12 KiB
Gherkin
330 lines
12 KiB
Gherkin
@routing @car @relations
|
|
Feature: Car - route relations
|
|
Background:
|
|
Given the profile "car"
|
|
|
|
Scenario: Assignment using relation membership roles
|
|
Given the profile file "car" initialized with
|
|
"""
|
|
profile.cardinal_directions = true
|
|
"""
|
|
|
|
Given the node map
|
|
"""
|
|
a----------------b
|
|
c----------------d
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | highway | ref |
|
|
| ba | westbound | motorway | I 80 |
|
|
| cd | eastbound | motorway | I 80;CO 93 |
|
|
|
|
And the relations
|
|
| type | way:east | way:west | route | ref | network |
|
|
| route | cd | ba | road | 80 | US:I |
|
|
| route | cd | ba | road | 93 | US:CO |
|
|
|
|
|
|
When I route I should get
|
|
| waypoints | route | ref |
|
|
| b,a | westbound,westbound | I 80 $west,I 80 $west |
|
|
| c,d | eastbound,eastbound | I 80 $east; CO 93 $east,I 80 $east; CO 93 $east |
|
|
|
|
Scenario: No cardinal directions by default
|
|
Given the profile file "car" initialized with
|
|
"""
|
|
profile.cardinal_directions = false
|
|
"""
|
|
Given the node map
|
|
"""
|
|
a----------------b
|
|
c----------------d
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | highway | ref |
|
|
| ba | westbound | motorway | I 80 |
|
|
| cd | eastbound | motorway | I 80;CO 93 |
|
|
|
|
And the relations
|
|
| type | way:east | way:west | route | ref | network |
|
|
| route | cd | ba | road | 80 | US:I |
|
|
| route | cd | ba | road | 93 | US:CO |
|
|
|
|
|
|
When I route I should get
|
|
| waypoints | route | ref |
|
|
| b,a | westbound,westbound | I 80,I 80 |
|
|
| c,d | eastbound,eastbound | I 80; CO 93,I 80; CO 93 |
|
|
|
|
Scenario: No cardinal directions by default
|
|
Given the node map
|
|
"""
|
|
a----------------b
|
|
c----------------d
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | highway | ref |
|
|
| ba | westbound | motorway | I 80 |
|
|
| cd | eastbound | motorway | I 80;CO 93 |
|
|
|
|
And the relations
|
|
| type | way:east | way:west | route | ref | network |
|
|
| route | cd | ba | road | 80 | US:I |
|
|
| route | cd | ba | road | 93 | US:CO |
|
|
|
|
|
|
When I route I should get
|
|
| waypoints | route | ref |
|
|
| b,a | westbound,westbound | I 80,I 80 |
|
|
| c,d | eastbound,eastbound | I 80; CO 93,I 80; CO 93 |
|
|
|
|
|
|
Scenario: Assignment using relation direction property (no role on members)
|
|
Given the profile file "car" initialized with
|
|
"""
|
|
profile.cardinal_directions = true
|
|
"""
|
|
|
|
Given the node map
|
|
"""
|
|
a----------------b
|
|
c----------------d
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | highway | ref |
|
|
| ba | westbound | motorway | I 80 |
|
|
| cd | eastbound | motorway | I 80;CO 93 |
|
|
|
|
And the relations
|
|
| type | direction | way | route | ref | network |
|
|
| route | west | ba | road | 80 | US:I |
|
|
| route | east | cd | road | 80 | US:I |
|
|
| route | east | cd | road | 93 | US:CO |
|
|
|
|
When I route I should get
|
|
| waypoints | route | ref |
|
|
| b,a | westbound,westbound | I 80 $west,I 80 $west |
|
|
| c,d | eastbound,eastbound | I 80 $east; CO 93 $east,I 80 $east; CO 93 $east |
|
|
|
|
|
|
Scenario: Forward assignment on one-way roads using relation direction property
|
|
Given the profile file "car" initialized with
|
|
"""
|
|
profile.cardinal_directions = true
|
|
"""
|
|
|
|
Given the node map
|
|
"""
|
|
a----------------b
|
|
c----------------d
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | highway | ref |
|
|
| ba | westbound | motorway | I 80 |
|
|
| cd | eastbound | motorway | I 80;CO 93 |
|
|
|
|
And the relations
|
|
| type | direction | way:forward | route | ref | network |
|
|
| route | west | ba | road | 80 | US:I |
|
|
| route | east | cd | road | 80 | US:I |
|
|
| route | east | cd | road | 93 | US:CO |
|
|
|
|
When I route I should get
|
|
| waypoints | route | ref |
|
|
| b,a | westbound,westbound | I 80 $west,I 80 $west |
|
|
| c,d | eastbound,eastbound | I 80 $east; CO 93 $east,I 80 $east; CO 93 $east |
|
|
|
|
|
|
Scenario: Forward/backward assignment on non-divided roads with role direction tag
|
|
Given the profile file "car" initialized with
|
|
"""
|
|
profile.cardinal_directions = true
|
|
"""
|
|
|
|
Given the node map
|
|
"""
|
|
a----------------b
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | highway | ref | oneway |
|
|
| ab | mainroad | motorway | I 80 | no |
|
|
|
|
And the relations
|
|
| type | direction | way:forward | route | ref | network |
|
|
| route | west | ab | road | 80 | US:I |
|
|
|
|
And the relations
|
|
| type | direction | way:backward | route | ref | network |
|
|
| route | east | ab | road | 80 | US:I |
|
|
|
|
When I route I should get
|
|
| waypoints | route | ref |
|
|
| a,b | mainroad,mainroad | I 80 $west,I 80 $west |
|
|
| b,a | mainroad,mainroad | I 80 $east,I 80 $east |
|
|
|
|
|
|
Scenario: Conflict between role and direction
|
|
Given the profile file "car" initialized with
|
|
"""
|
|
profile.cardinal_directions = true
|
|
"""
|
|
|
|
Given the node map
|
|
"""
|
|
a----------------b
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | highway | ref |
|
|
| ab | eastbound | motorway | I 80 |
|
|
|
|
And the relations
|
|
| type | direction | way:east | route | ref | network |
|
|
| route | west | ab | road | 80 | US:I |
|
|
|
|
When I route I should get
|
|
| waypoints | route | ref |
|
|
| a,b | eastbound,eastbound | I 80,I 80 |
|
|
|
|
|
|
Scenario: Conflict between role and superrelation direction
|
|
Given the profile file "car" initialized with
|
|
"""
|
|
profile.cardinal_directions = true
|
|
"""
|
|
|
|
Given the node map
|
|
"""
|
|
a----------------b
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | highway | ref |
|
|
| ab | eastbound | motorway | I 80 |
|
|
|
|
And the relations
|
|
| type | way:east | route | ref | network | name |
|
|
| route | ab | road | 80 | US:I | baserelation |
|
|
|
|
And the relations
|
|
| type | direction | relation | route | ref | network | name |
|
|
| route | west | baserelation | road | 80 | US:I | superrelation |
|
|
|
|
When I route I should get
|
|
| waypoints | route | ref |
|
|
| a,b | eastbound,eastbound | I 80,I 80 |
|
|
|
|
Scenario: Conflict between role and superrelation role
|
|
Given the profile file "car" initialized with
|
|
"""
|
|
profile.cardinal_directions = true
|
|
"""
|
|
|
|
Given the node map
|
|
"""
|
|
a----------------b
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | highway | ref |
|
|
| ab | eastbound | motorway | I 80 |
|
|
|
|
And the relations
|
|
| type | way:east | route | ref | network | name |
|
|
| route | ab | road | 80 | US:I | baserelation |
|
|
|
|
And the relations
|
|
| type | relation:west | route | ref | network | name |
|
|
| route | baserelation | road | 80 | US:I | superrelation |
|
|
|
|
When I route I should get
|
|
| waypoints | route | ref |
|
|
| a,b | eastbound,eastbound | I 80,I 80 |
|
|
|
|
Scenario: Direction only available via superrelation role
|
|
Given the profile file "car" initialized with
|
|
"""
|
|
profile.cardinal_directions = true
|
|
"""
|
|
|
|
Given the node map
|
|
"""
|
|
a----------------b
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | highway | ref |
|
|
| ab | eastbound | motorway | I 80 |
|
|
|
|
And the relations
|
|
| type | way:forward | route | ref | network | name |
|
|
| route | ab | road | 80 | US:I | baserelation |
|
|
|
|
And the relations
|
|
| type | relation:east | route | ref | network | name |
|
|
| route | baserelation | road | 80 | US:I | superrelation |
|
|
|
|
When I route I should get
|
|
| waypoints | route | ref |
|
|
| a,b | eastbound,eastbound | I 80 $east,I 80 $east |
|
|
|
|
Scenario: Direction only available via superrelation direction
|
|
Given the profile file "car" initialized with
|
|
"""
|
|
profile.cardinal_directions = true
|
|
"""
|
|
|
|
Given the node map
|
|
"""
|
|
a----------------b
|
|
"""
|
|
|
|
And the ways
|
|
| nodes | name | highway | ref |
|
|
| ab | eastbound | motorway | I 80 |
|
|
|
|
And the relations
|
|
| type | way:forward | route | ref | network | name |
|
|
| route | ab | road | 80 | US:I | baserelation |
|
|
|
|
And the relations
|
|
| type | direction | relation | route | ref | network | name |
|
|
| route | east | baserelation | road | 80 | US:I | superrelation |
|
|
|
|
When I route I should get
|
|
| waypoints | route | ref |
|
|
| a,b | eastbound,eastbound | I 80 $east,I 80 $east |
|
|
|
|
|
|
# Scenario: Three levels of indirection
|
|
# Given the node map
|
|
# """
|
|
# a----------------b
|
|
# """
|
|
#
|
|
# And the ways
|
|
# | nodes | name | highway | ref |
|
|
# | ab | eastbound | motorway | I 80 |
|
|
#
|
|
# And the relations
|
|
# | type | way:forward | route | ref | network | name |
|
|
# | route | ab | road | 80 | US:I | baserelation |
|
|
#
|
|
# And the relations
|
|
# | type | relation | route | ref | network | name |
|
|
# | route | baserelation | road | 80 | US:I | superrelation1 |
|
|
#
|
|
# And the relations
|
|
# | type | direction | relation | route | ref | network | name |
|
|
# | route | east | superrelation1 | road | 80 | US:I | superrelation2 |
|
|
#
|
|
# When I route I should get
|
|
# | waypoints | route | ref |
|
|
# | a,b | eastbound,eastbound | I 80 $east,I 80 $east |
|