Files
osm2pgsql/tests/lua/tests.lua
Jochen Topf 64e1202283 Add configuration for luacheck and run luacheck in Github actions
Also fixes some warnings generated by luacheck.
2023-07-30 16:21:04 +02:00

203 lines
5.0 KiB
Lua

-- fake "osm2pgsql" table for test, usually created by the main C++ program
osm2pgsql = { Geometry = {} }
-- load the init.lua script that is normally run by the main C++ program
package.path = '../src/?.lua'
require('init')
print("Running Lua tests...")
local o = osm2pgsql
-- ---------------------------------------------------------------------------
-- has_prefix()
assert(o.has_prefix('addr:city', 'addr:'))
assert(not o.has_prefix('addr:city', 'foo'))
assert(o.has_prefix('addr:city', ''))
assert(not o.has_prefix('name', 'addr:'))
assert(o.has_prefix('a', 'a'))
assert(not o.has_prefix('a', 'ab'))
assert(o.has_prefix(nil, 'a') == nil)
-- has_suffix()
assert(o.has_suffix('tiger:source', ':source'))
assert(not o.has_suffix('tiger:source', 'foo'))
assert(o.has_suffix('tiger:source', ''))
assert(not o.has_suffix('name', ':source'))
assert(o.has_suffix('a', 'a'))
assert(not o.has_suffix('a', 'ba'))
assert(o.has_suffix(nil, 'a') == nil)
-- ---------------------------------------------------------------------------
-- clamp
do
assert(o.clamp(1, 2, 3) == 2)
assert(o.clamp(3, 1, 4) == 3)
assert(o.clamp(3, -1, 1) == 1)
assert(o.clamp(-3, -1, 1) == -1)
assert(o.clamp(2.718, 0, 3.141) == 2.718)
assert(o.clamp(nil, -1, 1) == nil)
end
-- make_check_values_func without default
do
local if_known_highway_value = o.make_check_values_func{
'motorway', 'trunk', 'primary', 'secondary', 'tertiary'
}
assert(if_known_highway_value('motorway') == 'motorway')
assert(if_known_highway_value('primary') == 'primary')
assert(if_known_highway_value('residential') == nil)
end
-- make_check_values_func with default
do
local highway_value = o.make_check_values_func({
'motorway', 'trunk', 'primary', 'secondary', 'tertiary'
}, 'road')
assert(highway_value('motorway') == 'motorway')
assert(highway_value('primary') == 'primary')
assert(highway_value('residential') == 'road')
end
-- make_clean_tags_func
do
local clean_tags = o.make_clean_tags_func{'source',
'source:*',
'*:source',
'note'}
local tags = {
source = 'foo',
highway = 'residential',
['source:url'] = 'bar',
['tiger:source'] = 'value',
['source:vs:source'] = 'removeme',
['with:source:infix'] = 'keepme',
NOTE = 'x'
}
assert(clean_tags(tags) == false)
assert(tags.highway == 'residential')
assert(tags.NOTE == 'x')
assert(tags.source == nil)
assert(tags['source:url'] == nil)
assert(tags['tiger:source'] == nil)
assert(tags['source:vs:source'] == nil)
assert(tags['with:source:infix'] == 'keepme')
local num = 0
for k, v in pairs(tags) do
num = num + 1
end
assert(num == 3)
end
-- trim
assert(osm2pgsql.trim('') == '')
assert(osm2pgsql.trim(' ') == '')
assert(osm2pgsql.trim(' ') == '')
assert(osm2pgsql.trim('a') == 'a')
assert(osm2pgsql.trim(' a') == 'a')
assert(osm2pgsql.trim('a ') == 'a')
assert(osm2pgsql.trim(' a ') == 'a')
assert(osm2pgsql.trim(' a ') == 'a')
assert(osm2pgsql.trim(' ab cd ') == 'ab cd')
assert(osm2pgsql.trim(' \t\r\n\f\va\000b \r\t\n\f\v') == 'a\000b')
assert(osm2pgsql.trim(nil) == nil)
-- split_unit
local v, u = o.split_unit('20m', '')
assert(v == 20 and u == 'm')
v, u = o.split_unit('20 m')
assert(v == 20 and u == 'm')
v, u = o.split_unit('20ft', '')
assert(v == 20 and u == 'ft')
v, u = o.split_unit('23.4 ft', '')
assert(v == 23.4 and u == 'ft')
v, u = o.split_unit('20 ft', 'm')
assert(v == 20 and u == 'ft')
v, u = o.split_unit('20km', 'm')
assert(v == 20 and u == 'km')
v, u = o.split_unit('20')
assert(v == 20 and u == nil)
v, u = o.split_unit('20', 'm')
assert(v == 20 and u == 'm')
v, u = o.split_unit('0', 'm')
assert(v == 0 and u == 'm')
v, u = o.split_unit('-20000', 'leagues')
assert(v == -20000 and u == 'leagues')
v, u = o.split_unit('20xx20', '')
assert(v == nil and u == nil)
v, u = o.split_unit('20-20', '')
assert(v == nil and u == nil)
v, u = o.split_unit('20xx20', 'foo')
assert(v == nil and u == nil)
v, u = o.split_unit('abc', 'def')
assert(v == nil and u == nil)
v, u = o.split_unit(nil)
assert(v == nil and u == nil)
v, u = o.split_unit(nil, 'foo')
assert(v == nil and u == nil)
-- split_string
local r = o.split_string('ab c;d;e f;ghi')
assert(#r == 4)
assert(r[1] == 'ab c')
assert(r[2] == 'd')
assert(r[3] == 'e f')
assert(r[4] == 'ghi')
r = o.split_string('ab c;d ; e f; ghi')
assert(#r == 4)
assert(r[1] == 'ab c')
assert(r[2] == 'd')
assert(r[3] == 'e f')
assert(r[4] == 'ghi')
r = o.split_string('ab c ')
assert(#r == 1)
assert(r[1] == 'ab c')
r = o.split_string('')
assert(#r == 0)
r = o.split_string('ab c;d , e f, ghi', ',')
assert(#r == 3)
assert(r[1] == 'ab c;d')
assert(r[2] == 'e f')
assert(r[3] == 'ghi')
r = o.split_string(nil)
assert(#r == 0)
-- ---------------------------------------------------------------------------
print("All tests successful")