Skip to content

Commit 694db77

Browse files
authored
Merge pull request #1239 from joto/cleanup-flex-tests
Cleanup flex tests
2 parents f44b870 + 8911739 commit 694db77

25 files changed

+560
-564
lines changed

tests/CMakeLists.txt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,12 @@ if (HAVE_LUA)
7575
set_test(test-output-flex-area)
7676
set_test(test-output-flex-attr)
7777
set_test(test-output-flex-bbox)
78-
set_test(test-output-flex-extra)
7978
set_test(test-output-flex-invalid-geom)
79+
set_test(test-output-flex-line)
8080
set_test(test-output-flex-lua-fail)
8181
set_test(test-output-flex-nogeom)
8282
set_test(test-output-flex-uni)
83+
set_test(test-output-flex-stage2)
8384
set_test(test-output-flex-tablespace LABELS Tablespace)
8485
set_test(test-output-flex-types)
8586
set_test(test-output-flex-update)

tests/data/test_output_flex.lua

Lines changed: 25 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -36,18 +36,6 @@ tables.route = osm2pgsql.define_table{
3636
}
3737
}
3838

39-
function is_empty(some_table)
40-
return next(some_table) == nil
41-
end
42-
43-
function clean_tags(tags)
44-
tags.odbl = nil
45-
tags.created_by = nil
46-
tags.source = nil
47-
tags['source:ref'] = nil
48-
tags['source:name'] = nil
49-
end
50-
5139
function is_polygon(tags)
5240
if tags.aeroway
5341
or tags.amenity
@@ -83,55 +71,60 @@ function is_polygon(tags)
8371
end
8472
end
8573

86-
function osm2pgsql.process_node(data)
87-
clean_tags(data.tags)
88-
if is_empty(data.tags) then
74+
local delete_keys = {
75+
'odbl',
76+
'created_by',
77+
'source'
78+
}
79+
80+
local clean_tags = osm2pgsql.make_clean_tags_func(delete_keys)
81+
82+
function osm2pgsql.process_node(object)
83+
if clean_tags(object.tags) then
8984
return
9085
end
9186

9287
tables.point:add_row({
93-
tags = data.tags
88+
tags = object.tags
9489
})
9590
end
9691

97-
function osm2pgsql.process_way(data)
98-
clean_tags(data.tags)
99-
if is_empty(data.tags) then
92+
function osm2pgsql.process_way(object)
93+
if clean_tags(object.tags) then
10094
return
10195
end
10296

103-
if is_polygon(data.tags) then
97+
if is_polygon(object.tags) then
10498
tables.polygon:add_row({
105-
tags = data.tags,
106-
name = data.tags.name,
99+
tags = object.tags,
100+
name = object.tags.name,
107101
geom = { create = 'area' }
108102
})
109103
else
110104
tables.line:add_row({
111-
tags = data.tags,
112-
name = data.tags.name
105+
tags = object.tags,
106+
name = object.tags.name
113107
})
114108
end
115109
end
116110

117-
function osm2pgsql.process_relation(data)
118-
clean_tags(data.tags)
119-
if is_empty(data.tags) then
111+
function osm2pgsql.process_relation(object)
112+
if clean_tags(object.tags) then
120113
return
121114
end
122115

123-
if data.tags.type == 'multipolygon' or data.tags.type == 'boundary' then
116+
if object.tags.type == 'multipolygon' or object.tags.type == 'boundary' then
124117
tables.polygon:add_row({
125-
tags = data.tags,
126-
name = data.tags.name,
118+
tags = object.tags,
119+
name = object.tags.name,
127120
geom = { create = 'area', multi = false }
128121
})
129122
return
130123
end
131124

132-
if data.tags.type == 'route' then
125+
if object.tags.type == 'route' then
133126
tables.route:add_row({
134-
tags = data.tags,
127+
tags = object.tags,
135128
geom = { create = 'line' }
136129
})
137130
end
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
2+
local polygons = osm2pgsql.define_table{
3+
name = 'osm2pgsql_test_polygon',
4+
ids = { type = 'area', id_column = 'osm_id' },
5+
columns = {
6+
{ column = 'name', type = 'text' },
7+
{ column = 'geom', type = 'geometry' },
8+
{ column = 'area', type = 'area' },
9+
}
10+
}
11+
12+
function is_empty(some_table)
13+
return next(some_table) == nil
14+
end
15+
16+
function osm2pgsql.process_way(object)
17+
if is_empty(object.tags) then
18+
return
19+
end
20+
21+
polygons:add_row({
22+
name = object.tags.name,
23+
geom = { create = 'area' }
24+
})
25+
end
26+
27+
function osm2pgsql.process_relation(object)
28+
polygons:add_row({
29+
name = object.tags.name,
30+
geom = { create = 'area', multi = false }
31+
})
32+
end
33+
Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

2-
table = osm2pgsql.define_table{
3-
name = 'osm2pgsql_test_ways_attr',
2+
local attr_table = osm2pgsql.define_table{
3+
name = 'osm2pgsql_test_attr',
44
ids = { type = 'way', id_column = 'way_id' },
55
columns = {
66
{ column = 'tags', type = 'hstore' },
@@ -13,8 +13,8 @@ table = osm2pgsql.define_table{
1313
}
1414
}
1515

16-
function osm2pgsql.process_way(data)
17-
data.geom = { create = 'line' }
18-
table:add_row(data)
16+
function osm2pgsql.process_way(object)
17+
object.geom = { create = 'line' }
18+
attr_table:add_row(object)
1919
end
2020

tests/data/test_output_flex_fail.lua

Lines changed: 0 additions & 36 deletions
This file was deleted.
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
2+
local tables = {}
3+
4+
tables.line = osm2pgsql.define_table{
5+
name = 'osm2pgsql_test_line',
6+
ids = { type = 'way', id_column = 'osm_id' },
7+
columns = {
8+
{ column = 'tags', type = 'hstore' },
9+
{ column = 'geom', type = 'linestring' },
10+
}
11+
}
12+
13+
tables.polygon = osm2pgsql.define_table{
14+
name = 'osm2pgsql_test_polygon',
15+
ids = { type = 'area', id_column = 'osm_id' },
16+
columns = {
17+
{ column = 'tags', type = 'hstore' },
18+
{ column = 'geom', type = 'geometry' }
19+
}
20+
}
21+
22+
function osm2pgsql.process_way(object)
23+
if not next(object.tags) then
24+
return
25+
end
26+
27+
if object.tags.natural then
28+
tables.polygon:add_row({
29+
tags = object.tags,
30+
geom = { create = 'area' }
31+
})
32+
else
33+
tables.line:add_row({
34+
tags = object.tags
35+
})
36+
end
37+
end
38+
39+
function osm2pgsql.process_relation(object)
40+
tables.polygon:add_row({
41+
tags = object.tags,
42+
geom = { create = 'area', multi = false }
43+
})
44+
end
45+
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
2+
local tables = {}
3+
4+
tables.line = osm2pgsql.define_way_table('osm2pgsql_test_line', {
5+
{ column = 'tags', type = 'hstore' },
6+
{ column = 'geom', type = 'linestring' }
7+
})
8+
9+
tables.split = osm2pgsql.define_way_table('osm2pgsql_test_split', {
10+
{ column = 'tags', type = 'hstore' },
11+
{ column = 'geom', type = 'linestring' }
12+
})
13+
14+
function osm2pgsql.process_way(object)
15+
tables.line:add_row({
16+
tags= object.tags,
17+
geom = { create = 'line' }
18+
})
19+
tables.split:add_row({
20+
tags = object.tags,
21+
geom = { create = 'line', split_at = 1.0 }
22+
})
23+
end
24+
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
2+
local test_table = osm2pgsql.define_table{
3+
name = 'osm2pgsql_test_polygon',
4+
ids = { type = 'area', id_column = 'osm_id' },
5+
columns = {
6+
{ column = 'tags', type = 'hstore' },
7+
{ column = 'geom', type = 'geometry' },
8+
{ column = 'area', type = 'area' },
9+
}
10+
}
11+
12+
function osm2pgsql.process_way(object)
13+
test_table:add_row({
14+
tags = object.tags
15+
-- missing geom transform here should lead to an error
16+
})
17+
end
18+

0 commit comments

Comments
 (0)