support testing of all relation types

This commit is contained in:
Emil Tin
2012-11-30 13:40:21 +01:00
parent 9a865384a1
commit f1d47328e9
3 changed files with 104 additions and 103 deletions
+15 -14
View File
@@ -88,20 +88,21 @@ end
Given /^the relations$/ do |table|
table.hashes.each do |row|
relation = OSM::Relation.new make_osm_id, OSM_USER, OSM_TIMESTAMP
relation << { :type => :restriction, :restriction => row['restriction'] }
from_way = find_way_by_name(row['from'])
raise "*** unknown way '#{row['from']}'" unless from_way
to_way = find_way_by_name(row['to'])
raise "*** unknown way '#{row['to']}'" unless to_way
relation << OSM::Member.new( 'way', from_way.id, 'from' )
relation << OSM::Member.new( 'way', to_way.id, 'to' )
c = row['via']
unless c.empty?
raise "*** node invalid name '#{c}', must be single characters" unless c.size == 1
raise "*** via node cannot use numbered nodes, '#{c}'" unless c.match /[a-z]/
via_node = find_node_by_name(c)
raise "*** unknown node '#{row['via']}'" unless via_node
relation << OSM::Member.new( 'node', via_node.id, 'via' )
row.each_pair do |key,value|
if key =~ /^node:(.*)/
raise "***invalid relation node member '#{value}', must be single character" unless value.size == 1
node = find_node_by_name(value)
raise "*** unknown relation node member '#{value}'" unless node
relation << OSM::Member.new( 'node', node.id, $1 )
elsif key =~ /^way:(.*)/
way = find_way_by_name(value)
raise "*** unknown relation way member '#{value}'" unless way
relation << OSM::Member.new( 'way', way.id, $1 )
elsif key =~ /^(.*):(.*)/
raise "*** unknown relation member type '#{$1}', must be either 'node' or 'way'"
else
relation << { key => value }
end
end
relation.uid = OSM_UID
osm_db << relation