enable testing of way names, including ways with empty or missing name tags
This commit is contained in:
parent
15f2b21b62
commit
0984a669ce
41
features/names.feature
Normal file
41
features/names.feature
Normal file
@ -0,0 +1,41 @@
|
|||||||
|
@routing @names
|
||||||
|
Feature: Street names in instructions
|
||||||
|
|
||||||
|
Scenario: A named street
|
||||||
|
Given the nodes
|
||||||
|
| a | b |
|
||||||
|
| | c |
|
||||||
|
|
||||||
|
And the ways
|
||||||
|
| nodes | name |
|
||||||
|
| ab | My Way |
|
||||||
|
| bc | Your Way |
|
||||||
|
|
||||||
|
When I route I should get
|
||||||
|
| from | to | route |
|
||||||
|
| a | c | My Way,Your Way |
|
||||||
|
|
||||||
|
Scenario: Use way type to describe unnamed ways
|
||||||
|
Given the nodes
|
||||||
|
| a | b | c |
|
||||||
|
|
||||||
|
And the ways
|
||||||
|
| nodes | highway | name |
|
||||||
|
| ab | cycleway | |
|
||||||
|
| bc | track | |
|
||||||
|
|
||||||
|
When I route I should get
|
||||||
|
| from | to | route |
|
||||||
|
| a | c | cycleway,trac |
|
||||||
|
|
||||||
|
Scenario: Don't create instructions for every node of unnamed ways
|
||||||
|
Given the nodes
|
||||||
|
| a | b | c | d |
|
||||||
|
|
||||||
|
And the ways
|
||||||
|
| nodes | highway | name |
|
||||||
|
| abcd | cycleway | |
|
||||||
|
|
||||||
|
When I route I should get
|
||||||
|
| from | to | route |
|
||||||
|
| a | d | cycleway |
|
@ -31,21 +31,35 @@ end
|
|||||||
|
|
||||||
Given /^the ways$/ do |table|
|
Given /^the ways$/ do |table|
|
||||||
table.hashes.each do |row|
|
table.hashes.each do |row|
|
||||||
name = row.delete 'nodes'
|
|
||||||
raise "*** duplicate way '#{name}'" if name_way_hash[name]
|
|
||||||
way = OSM::Way.new make_osm_id, OSM_USER, OSM_TIMESTAMP
|
way = OSM::Way.new make_osm_id, OSM_USER, OSM_TIMESTAMP
|
||||||
defaults = { 'highway' => 'primary' }
|
|
||||||
way << defaults.merge( 'name' => name ).merge(row)
|
|
||||||
way.uid = OSM_UID
|
way.uid = OSM_UID
|
||||||
name.each_char do |c|
|
|
||||||
|
nodes = row.delete 'nodes'
|
||||||
|
raise "*** duplicate way '#{nodes}'" if name_way_hash[nodes]
|
||||||
|
nodes.each_char do |c|
|
||||||
raise "*** node invalid name '#{c}', must be single characters" unless c.size == 1
|
raise "*** node invalid name '#{c}', must be single characters" unless c.size == 1
|
||||||
raise "*** ways cannot use numbered nodes, '#{name}'" unless c.match /[a-z]/
|
raise "*** ways cannot use numbered nodes, '#{name}'" unless c.match /[a-z]/
|
||||||
node = find_node_by_name(c)
|
node = find_node_by_name(c)
|
||||||
raise "*** unknown node '#{c}'" unless node
|
raise "*** unknown node '#{c}'" unless node
|
||||||
way << node
|
way << node
|
||||||
end
|
end
|
||||||
|
|
||||||
|
defaults = { 'highway' => 'primary' }
|
||||||
|
tags = defaults.merge(row)
|
||||||
|
|
||||||
|
if row['name'] == nil
|
||||||
|
tags['name'] = nodes
|
||||||
|
elsif (row['name'] == '""') || (row['name'] == "''")
|
||||||
|
tags['name'] = ''
|
||||||
|
elsif row['name'] == ''
|
||||||
|
tags.delete 'name'
|
||||||
|
else
|
||||||
|
tags['name'] = row['name']
|
||||||
|
end
|
||||||
|
|
||||||
|
way << tags
|
||||||
osm_db << way
|
osm_db << way
|
||||||
name_way_hash[name] = way
|
name_way_hash[nodes] = way
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -62,7 +62,7 @@ end
|
|||||||
|
|
||||||
def way_list instructions
|
def way_list instructions
|
||||||
instructions.
|
instructions.
|
||||||
#reject { |i| i[2]<=1 }. #FIXME temporary hack to ignore instructions with length==0
|
|
||||||
map { |r| r[1] }.
|
map { |r| r[1] }.
|
||||||
reject(&:empty?).join(',')
|
map { |r| r=="" ? '""' : r }.
|
||||||
|
join(',')
|
||||||
end
|
end
|
||||||
|
18
features/utf.feature
Normal file
18
features/utf.feature
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
@routing @utf
|
||||||
|
Feature: Basic Routing
|
||||||
|
|
||||||
|
Scenario: Streetnames with UTF characters
|
||||||
|
Given the nodes
|
||||||
|
| a | b | c | d |
|
||||||
|
|
||||||
|
And the ways
|
||||||
|
| nodes | name |
|
||||||
|
| ab | Scandinavian København |
|
||||||
|
| bc | Japanese 東京 |
|
||||||
|
| cd | Cyrillic Москва |
|
||||||
|
|
||||||
|
When I route I should get
|
||||||
|
| from | to | route |
|
||||||
|
| a | b | Scandinavian København |
|
||||||
|
| b | c | Japanese 東京 |
|
||||||
|
| c | d | Cyrillic Москва |
|
Loading…
Reference in New Issue
Block a user