Initial commit (clean, ignores in place)

This commit is contained in:
2025-08-12 01:13:41 +01:00
commit c74790b014
26 changed files with 2331 additions and 0 deletions

View File

@@ -0,0 +1,42 @@
import os
import unittest
from mileage_logger.logic.detect_itinerary import SiteConfig, haversine_distance
from mileage_logger.distance.resolve import DistanceResolver
CONFIG_PATH = os.path.join(os.path.dirname(__file__), "..", "config", "sites.yml")
ROUTES_PATH = os.path.join(os.path.dirname(__file__), "data", "routes_golden.csv")
class TestDistanceResolver(unittest.TestCase):
@classmethod
def setUpClass(cls):
cls.site_config = SiteConfig.from_yaml(CONFIG_PATH)
cls.resolver = DistanceResolver(route_csv_path=ROUTES_PATH)
def test_route_lookup(self):
origin = "Home"
dest = "Lingwood Primary Academy"
origin_site = self.site_config.by_canonical[origin]
dest_site = self.site_config.by_canonical[dest]
dist = self.resolver.resolve(origin, dest, (origin_site.lat, origin_site.lon), (dest_site.lat, dest_site.lon))
self.assertAlmostEqual(dist, 13.0, places=1)
# Second call should hit cache and return same
dist2 = self.resolver.resolve(origin, dest, (origin_site.lat, origin_site.lon), (dest_site.lat, dest_site.lon))
self.assertEqual(dist2, dist)
def test_fallback_haversine(self):
# Choose a pair not in the route catalogue
origin = "Lingwood Primary Academy"
dest = "Unity SP"
origin_site = self.site_config.by_canonical[origin]
dest_site = self.site_config.by_canonical[dest]
dist = self.resolver.resolve(origin, dest, (origin_site.lat, origin_site.lon), (dest_site.lat, dest_site.lon))
# Compute haversine expected
expected = haversine_distance(origin_site.lat, origin_site.lon, dest_site.lat, dest_site.lon)
self.assertAlmostEqual(dist, expected, places=1)
if __name__ == '__main__':
unittest.main()