2015-11-06 21:34:19 +00:00
|
|
|
import unittest
|
2015-11-20 10:36:42 +00:00
|
|
|
|
2016-01-29 04:22:07 +00:00
|
|
|
from ogn.utils import get_ddb, get_trackable, get_country_code, haversine_distance
|
|
|
|
from ogn.model import AddressOrigin
|
2015-11-06 21:34:19 +00:00
|
|
|
|
|
|
|
|
|
|
|
class TestStringMethods(unittest.TestCase):
|
2015-11-11 07:03:42 +00:00
|
|
|
def test_get_devices(self):
|
|
|
|
devices = get_ddb()
|
2015-11-06 21:34:19 +00:00
|
|
|
self.assertGreater(len(devices), 1000)
|
|
|
|
|
2015-11-11 07:03:42 +00:00
|
|
|
def test_get_ddb_from_file(self):
|
|
|
|
devices = get_ddb('tests/custom_ddb.txt')
|
2015-12-01 18:11:31 +00:00
|
|
|
self.assertEqual(len(devices), 6)
|
2015-11-11 07:03:42 +00:00
|
|
|
device = devices[0]
|
|
|
|
|
|
|
|
self.assertEqual(device.address, 'DD4711')
|
|
|
|
self.assertEqual(device.aircraft, 'HK36 TTC')
|
|
|
|
self.assertEqual(device.registration, 'D-EULE')
|
2015-11-20 10:36:42 +00:00
|
|
|
self.assertEqual(device.competition, 'CU')
|
2015-11-11 07:03:42 +00:00
|
|
|
self.assertTrue(device.tracked)
|
|
|
|
self.assertTrue(device.identified)
|
|
|
|
|
2015-12-09 01:39:29 +00:00
|
|
|
self.assertEqual(device.address_origin, AddressOrigin.user_defined)
|
2015-11-11 07:03:42 +00:00
|
|
|
|
2015-12-01 18:11:31 +00:00
|
|
|
def test_get_trackable(self):
|
|
|
|
devices = get_ddb('tests/custom_ddb.txt')
|
|
|
|
trackable = get_trackable(devices)
|
|
|
|
self.assertEqual(len(trackable), 4)
|
|
|
|
self.assertIn('FLRDD4711', trackable)
|
|
|
|
self.assertIn('FLRDD0815', trackable)
|
|
|
|
self.assertIn('OGNDEADBE', trackable)
|
|
|
|
self.assertIn('ICA999999', trackable)
|
|
|
|
|
2015-11-06 21:34:19 +00:00
|
|
|
def test_get_country_code(self):
|
|
|
|
latitude = 48.0
|
|
|
|
longitude = 11.0
|
|
|
|
country_code = get_country_code(latitude, longitude)
|
|
|
|
self.assertEquals(country_code, 'de')
|
2015-11-12 07:38:43 +00:00
|
|
|
|
|
|
|
def test_get_country_code_bad(self):
|
|
|
|
latitude = 0.0002274
|
|
|
|
longitude = -0.0009119
|
|
|
|
country_code = get_country_code(latitude, longitude)
|
|
|
|
self.assertEqual(country_code, None)
|
2016-01-28 19:29:08 +00:00
|
|
|
|
2016-01-29 04:22:07 +00:00
|
|
|
def test_haversine_distance(self):
|
2016-01-28 19:29:08 +00:00
|
|
|
# delta: one latitude degree
|
2016-01-29 04:22:07 +00:00
|
|
|
location0 = (0, 0)
|
|
|
|
location1 = (-1, 0)
|
|
|
|
|
|
|
|
(distance, phi) = haversine_distance(location0, location1)
|
|
|
|
self.assertAlmostEqual(distance, 60 * 1852, -2)
|
2016-01-28 19:29:08 +00:00
|
|
|
self.assertEqual(phi, 180)
|
|
|
|
|
|
|
|
# delta: one longitude degree at the equator
|
2016-01-29 04:22:07 +00:00
|
|
|
location0 = (0, 0)
|
|
|
|
location1 = (0, -1)
|
2016-01-28 19:29:08 +00:00
|
|
|
|
2016-01-29 04:22:07 +00:00
|
|
|
(distance, phi) = haversine_distance(location0, location1)
|
|
|
|
self.assertAlmostEqual(distance, 60 * 1852, -2)
|
|
|
|
self.assertEqual(phi, 90)
|
2016-01-28 19:29:08 +00:00
|
|
|
|
2016-01-29 04:22:07 +00:00
|
|
|
# delta: 29000m
|
|
|
|
location0 = (48.865, 9.2225)
|
|
|
|
location1 = (48.74435, 9.578)
|
2016-01-28 19:29:08 +00:00
|
|
|
|
2016-01-29 04:22:07 +00:00
|
|
|
(distance, phi) = haversine_distance(location0, location1)
|
|
|
|
self.assertAlmostEqual(distance, 29265.6035812215, -1)
|
2016-01-28 19:29:08 +00:00
|
|
|
self.assertAlmostEqual(phi, -117.1275408121, 5)
|