]> git.ipfire.org Git - location/libloc.git/blob - tests/lua/main.lua
lua: Force testing garbage collection for countries
[location/libloc.git] / tests / lua / main.lua
1 #!/usr/bin/lua
2 --[[###########################################################################
3 # #
4 # libloc - A library to determine the location of someone on the Internet #
5 # #
6 # Copyright (C) 2024 IPFire Development Team <info@ipfire.org> #
7 # #
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. #
12 # #
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. #
17 # #
18 ############################################################################--]]
19
20 luaunit = require("luaunit")
21
22 ENV_TEST_DATABASE = os.getenv("TEST_DATABASE")
23
24 function test_load()
25 -- Try loading the module
26 location = require("location")
27
28 -- Print the version
29 print(location.version())
30 end
31
32 function test_open_database()
33 location = require("location")
34
35 -- Open the database
36 db = location.Database.open(ENV_TEST_DATABASE)
37 end
38
39 function test_lookup()
40 location = require("location")
41
42 -- Open the database
43 db = location.Database.open(ENV_TEST_DATABASE)
44
45 -- Perform a lookup
46 network = db:lookup("81.3.27.32")
47
48 luaunit.assertEquals(network:get_family(), 2) -- AF_INET
49 luaunit.assertEquals(network:get_country_code(), "DE")
50 luaunit.assertEquals(network:get_asn(), 24679)
51 end
52
53 function test_network()
54 location = require("location")
55
56 n1 = location.Network.new("10.0.0.0/8")
57
58 -- The ASN should be nul
59 luaunit.assertNil(n1:get_asn())
60
61 -- The family should be IPv4
62 luaunit.assertEquals(n1:get_family(), 2) -- AF_INET
63
64 -- The country code should be empty
65 luaunit.assertNil(n1:get_country_code())
66 end
67
68 function test_country()
69 location = require("location")
70
71 c1 = location.Country.new("DE")
72 luaunit.assertEquals(c1:get_code(), "DE")
73
74 c2 = location.Country.new("GB")
75 luaunit.assertNotEquals(c1, c2)
76
77 c1 = nil
78 c2 = nil
79 end
80
81 -- This test is not very deterministic but should help to test the GC methods
82 function test_gc()
83 print("GC: " .. collectgarbage("collect"))
84 end
85
86 os.exit(luaunit.LuaUnit.run())