38 lines
1.2 KiB
Python
38 lines
1.2 KiB
Python
import unittest
|
|
|
|
from utils import format_coord, parse_coord
|
|
|
|
|
|
class TestCoordinateFormatting(unittest.TestCase):
|
|
|
|
def test_round_trip(self):
|
|
cases = [
|
|
(52.25, 4.0, "N5225E0400"),
|
|
(-13.5, -122.0, "S1350W12200"),
|
|
(0.0, 0.0, "N0000E0000"),
|
|
(51.75, 6.5, "N5175E0650"),
|
|
(-0.25, 0.25, "S0025E0025"),
|
|
]
|
|
for lat, lon, expected in cases:
|
|
with self.subTest(lat=lat, lon=lon):
|
|
self.assertEqual(format_coord(lat, lon), expected)
|
|
parsed_lat, parsed_lon = parse_coord(expected)
|
|
print(f"Parsed: {parsed_lat}, {parsed_lon} from {expected}")
|
|
self.assertAlmostEqual(parsed_lat, lat, places=6)
|
|
self.assertAlmostEqual(parsed_lon, lon, places=6)
|
|
|
|
def test_invalid_length(self):
|
|
with self.assertRaises(ValueError):
|
|
parse_coord("N52E4") # too short, malformed
|
|
|
|
def test_negative_coordinates(self):
|
|
coord = format_coord(-52.25, -4.0)
|
|
self.assertEqual(coord, "S5225W0400")
|
|
lat, lon = parse_coord(coord)
|
|
self.assertAlmostEqual(lat, -52.25, places=6)
|
|
self.assertAlmostEqual(lon, -4.0, places=6)
|
|
|
|
|
|
if __name__ == "__main__":
|
|
unittest.main()
|