2 --[[###########################################################################
4 # libloc - A library to determine the location of someone on the Internet #
6 # Copyright (C) 2024 IPFire Development Team <info@ipfire.org> #
8 # This library is free software; you can redistribute it and/or #
9 # modify it under the terms of the GNU Lesser General Public #
10 # License as published by the Free Software Foundation; either #
11 # version 2.1 of the License, or (at your option) any later version. #
13 # This library is distributed in the hope that it will be useful, #
14 # but WITHOUT ANY WARRANTY; without even the implied warranty of #
15 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU #
16 # Lesser General Public License for more details. #
18 ############################################################################--]]
20 luaunit = require("luaunit")
22 ENV_TEST_DATABASE = os.getenv("TEST_DATABASE")
25 -- Try loading the module
26 location = require("location")
29 print(location.version())
32 function test_open_database()
33 location = require("location")
36 db = location.Database.open(ENV_TEST_DATABASE)
39 function test_lookup()
40 location = require("location")
43 db = location.Database.open(ENV_TEST_DATABASE)
46 network = db:lookup("81.3.27.32")
48 luaunit.assertEquals(network:get_family(), 2) -- AF_INET
49 luaunit.assertEquals(network:get_country_code(), "DE")
50 luaunit.assertEquals(network:get_asn(), 24679)
53 function test_network()
54 location = require("location")
56 n1 = location.Network.new("10.0.0.0/8")
58 -- The ASN should be nul
59 luaunit.assertNil(n1:get_asn())
61 -- The family should be IPv4
62 luaunit.assertEquals(n1:get_family(), 2) -- AF_INET
64 -- The country code should be empty
65 luaunit.assertNil(n1:get_country_code())
68 function test_country()
69 location = require("location")
71 c1 = location.Country.new("DE")
72 luaunit.assertEquals(c1:get_code(), "DE")
74 c2 = location.Country.new("GB")
75 luaunit.assertNotEquals(c1, c2)
81 -- This test is not very deterministic but should help to test the GC methods
83 print("GC: " .. collectgarbage("collect"))
86 os.exit(luaunit.LuaUnit.run())