import unittest import sys from unittest.mock import Mock sys.modules['lineMapLayer'] = Mock() sys.modules['config'] = Mock() from MapView.main import get_lat_lon, MapViewApp from MapView.datasource import Datasource as DataSourceClass # ----------------------- # get_lat_lon # ----------------------- class TestGetLatLon(unittest.TestCase): def test_dict(self): point = {"lat": 50.45, "lon": 30.52} self.assertEqual(get_lat_lon(point), (50.45, 30.52)) def test_tuple(self): point = (50.45, 30.52) self.assertEqual(get_lat_lon(point), (50.45, 30.52)) def test_list(self): point = [50.45, 30.52] self.assertEqual(get_lat_lon(point), (50.45, 30.52)) def test_invalid(self): point = {"lat": None, "lon": 30.52} self.assertIsNone(get_lat_lon(point)) # ----------------------- # map_lat_lon_to_marker # ----------------------- class TestMapLatLonToMarker(unittest.TestCase): def setUp(self): self.instance = MapViewApp() def test_marker_found(self): marker = Mock() marker.lat = 30.52 marker.lon = 50.45 self.instance.pothole_markers = [marker] self.instance.bump_markers = [] result = self.instance.map_lat_lon_to_marker(50.45, 30.52) self.assertEqual(result, marker) def test_marker_not_found(self): self.instance.pothole_markers = [] self.instance.bump_markers = [] result = self.instance.map_lat_lon_to_marker(50.45, 30.52) self.assertIsNone(result) # ----------------------- # map_lat_lon_to_processed_agent_data # ----------------------- class TestMapLatLonToProcessedAgentData(unittest.TestCase): def setUp(self): self.instance = DataSourceClass() def test_returns_marker(self): marker = Mock() marker.latitude = 30.52 marker.longitude = 50.45 self.instance._active_markers = [marker] result = self.instance.map_lat_lon_to_processed_agent_data(50.45, 30.52) self.assertIsNotNone(result) self.assertEqual(result, marker) def test_marker_is_close_enough(self): marker = Mock() marker.latitude = 30.521 marker.longitude = 50.452 self.instance._active_markers = [marker] result = self.instance.map_lat_lon_to_processed_agent_data(50.45, 30.52) self.assertIsNotNone(result) self.assertEqual(result, marker) def test_marker_is_too_far(self): marker = Mock() marker.latitude = 30.524 marker.longitude = 50.454 self.instance._active_markers = [marker] result = self.instance.map_lat_lon_to_processed_agent_data(50.45, 30.52) self.assertIsNone(result) def test_return_closer_marker(self): marker1 = Mock() marker1.latitude = 30.521 marker1.longitude = 50.451 marker2 = Mock() marker2.latitude = 30.524 marker2.longitude = 50.454 self.instance._active_markers = [marker1, marker2] result = self.instance.map_lat_lon_to_processed_agent_data(50.452, 30.522) self.assertIsNotNone(result) self.assertEqual(result, marker1) result = self.instance.map_lat_lon_to_processed_agent_data(50.453, 30.523) self.assertIsNotNone(result) self.assertEqual(result, marker2) result = self.instance.map_lat_lon_to_processed_agent_data(50.459, 30.529) self.assertIsNone(result) def test_empty_markers(self): self.instance._active_markers = [] result = self.instance.map_lat_lon_to_processed_agent_data(50.45, 30.52) self.assertIsNone(result) if __name__ == "__main__": unittest.main()