def test_way_relation_speed_limit_maxspeed(self): # Reset all tags before teting mockOSMWay_01_02_Loop.tags = {} wayRelation = WayRelation(mockOSMWay_01_02_Loop) # No Value self.assertEqual(wayRelation.speed_limit, 0.) # Value on both directions wayRelation._speed_limit = None wayRelation.way.tags["maxspeed"] = "100" self.assertEqual(wayRelation.speed_limit, 100. * CV.KPH_TO_MS) # Value on forward wayRelation.way.tags.pop("maxspeed") wayRelation._speed_limit = None wayRelation.direction = DIRECTION.FORWARD self.assertEqual(wayRelation.speed_limit, 0.) wayRelation._speed_limit = None wayRelation.way.tags["maxspeed:forward"] = "100" self.assertEqual(wayRelation.speed_limit, 100. * CV.KPH_TO_MS) # Value on backward wayRelation._speed_limit = None wayRelation.direction = DIRECTION.BACKWARD self.assertEqual(wayRelation.speed_limit, 0.) wayRelation._speed_limit = None wayRelation.way.tags["maxspeed:backward"] = "100" self.assertEqual(wayRelation.speed_limit, 100. * CV.KPH_TO_MS)
def test_way_relation_last_node(self): wayRelation = WayRelation(mockOSMWay_01_01_LongCurvy) # direction is NONE on init self.assertIsNone(wayRelation.last_node) # forward wayRelation.direction = DIRECTION.FORWARD self.assertEqual(wayRelation.last_node, wayRelation.way.nodes[-1]) # backward wayRelation.direction = DIRECTION.BACKWARD self.assertEqual(wayRelation.last_node, wayRelation.way.nodes[0])
def test_way_relation_last_node_coordinates(self): wayRelation = WayRelation(mockOSMWay_01_01_LongCurvy) # direction is NONE on init self.assertIsNone(wayRelation.last_node_coordinates) # forward wayRelation.direction = DIRECTION.FORWARD coords = np.radians( np.array( [wayRelation.way.nodes[-1].lat, wayRelation.way.nodes[-1].lon], dtype=float)) assert_array_almost_equal(wayRelation.last_node_coordinates, coords) # backward wayRelation.direction = DIRECTION.BACKWARD coords = np.radians( np.array( [wayRelation.way.nodes[0].lat, wayRelation.way.nodes[0].lon], dtype=float)) assert_array_almost_equal(wayRelation.last_node_coordinates, coords)
def test_nodes_raw_data_array_for_wr_flips_when_backwards(self): wr = WayRelation(mockOSMWay_01_01_LongCurvy) wr.direction = DIRECTION.BACKWARD data_e = np.array([(n.id, n.lat, n.lon, wr.speed_limit) for n in wr.way.nodes], dtype=float) data_e = np.flip(data_e, axis=0) data = nodes_raw_data_array_for_wr(wr) assert_array_almost_equal(data, data_e)
def test_way_relation_speed_limit_conditional(self, mock_dt): tz = timezone(timedelta(hours=1), 'berlin') wed_10_10_am = dt(2021, 9, 1, 10, 10, 0) mock_dt.now.return_value = wed_10_10_am mock_dt.tzinfo = tz mock_dt.combine = dt.combine mock_dt.strptime = dt.strptime # Reset all tags before teting mockOSMWay_01_02_Loop.tags = {} wayRelation = WayRelation(mockOSMWay_01_02_Loop) # No Value self.assertEqual(wayRelation.speed_limit, 0.) # Value on both directions wayRelation._speed_limit = None wayRelation.way.tags["maxspeed:conditional"] = "100 @ (We 10:00-10:30)" self.assertEqual(wayRelation.speed_limit, 100. * CV.KPH_TO_MS) # Value on forward wayRelation.way.tags.pop("maxspeed:conditional") wayRelation._speed_limit = None wayRelation.direction = DIRECTION.FORWARD self.assertEqual(wayRelation.speed_limit, 0.) wayRelation._speed_limit = None wayRelation.way.tags[ "maxspeed:forward:conditional"] = "100 @ (We 10:00-10:30)" self.assertEqual(wayRelation.speed_limit, 100. * CV.KPH_TO_MS) # Value on backward wayRelation._speed_limit = None wayRelation.direction = DIRECTION.BACKWARD self.assertEqual(wayRelation.speed_limit, 0.) wayRelation._speed_limit = None wayRelation.way.tags[ "maxspeed:backward:conditional"] = "100 @ (We 10:00-10:30)" self.assertEqual(wayRelation.speed_limit, 100. * CV.KPH_TO_MS)
def test_way_relation_is_prohibited(self): # Setup initial tags mockOSMWay_01_02_Loop.tags = {'oneway': 'yes'} wayRelation = WayRelation(mockOSMWay_01_02_Loop) # Direction undefined wayRelation.direction = DIRECTION.NONE self.assertTrue(wayRelation.is_prohibited) # oneway = yes wayRelation.direction = DIRECTION.BACKWARD self.assertTrue(wayRelation.is_prohibited) wayRelation.direction = DIRECTION.FORWARD self.assertFalse(wayRelation.is_prohibited) # oneway non existing wayRelation._one_way = None self.assertFalse(wayRelation.is_one_way) wayRelation.direction = DIRECTION.BACKWARD self.assertFalse(wayRelation.is_prohibited)