support testing of all relation types
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user