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)
Exemple #4
0
    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)