Esempio n. 1
0
 def basic_way_test(self):
     """Test basic Way creation and usage."""
     first = (0.0, 0.0, 0.0)
     second = (1.0, 1.0, 100.0)
     third = (2.0, 2.0, 200.0)
     lle_list = [first, second, third]
     way = Way(points=lle_list)
     self.assertListEqual(way.points_lle, lle_list)
     self.assertEqual(way.point_count, 3)
     # check getting points by index
     self.assertEqual(way.get_point_by_index(0).getLLE(), first)
     self.assertEqual(way.get_point_by_index(1).getLLE(), second)
     self.assertEqual(way.get_point_by_index(2).getLLE(), third)
     # negative indexing should work the same as in a list
     self.assertEqual(way.get_point_by_index(-1).getLLE(), third)
     self.assertEqual(way.get_point_by_index(-2).getLLE(), second)
     self.assertEqual(way.get_point_by_index(-3).getLLE(), first)
     # out of bounds access should throw an index error
     with self.assertRaises(IndexError):
         way.get_point_by_index(100)
     with self.assertRaises(IndexError):
         way.get_point_by_index(-100)
     # route length or duration has not been set
     self.assertIsNone(way.length)
     self.assertIsNone(way.duration)
     # there should be no message points
     self.assertListEqual(way.message_points, [])
     self.assertEqual(way.message_point_count, 0)
Esempio n. 2
0
 def clear_test(self):
     """Test if the clear() methods of the Way class works correctly."""
     # put some regular points to the way first
     first = (0.0, 0.0, 0.0)
     second = (1.0, 1.0, 100.0)
     third = (2.0, 2.0, 200.0)
     lle_list = [first, second, third]
     way = Way(points=lle_list)
     # add some message points
     point1 = Point(lat=50.0, lon=50.0, elevation=300.0, message="foo")
     point2 = Point(lat=75.0, lon=75.0, elevation=600.0, message="bar")
     way.add_message_point(point1)
     way.add_message_point(point2)
     # check there are points & message points
     self.assertEqual(way.point_count, 3)
     self.assertEqual(way.message_point_count, 2)
     self.assertTrue(len(way.points_lle) > 0)
     self.assertTrue(len(way.message_points) > 0)
     self.assertTrue(len(way.message_points_lle) > 0)
     # call the clear methods
     way.clear()
     way.clear_message_points()
     # check that the way is empty
     self.assertEqual(way.point_count, 0)
     self.assertEqual(way.message_point_count, 0)
     self.assertListEqual(way.points_lle, [])
     self.assertListEqual(way.message_points, [])
     self.assertListEqual(way.message_points_lle, [])
Esempio n. 3
0
 def basic_message_points_test(self):
     """Test using Way with message points."""
     # put some regular points to the way first
     first = (0.0, 0.0, 0.0)
     second = (1.0, 1.0, 100.0)
     third = (2.0, 2.0, 200.0)
     lle_list = [first, second, third]
     way = Way(points=lle_list)
     # add some message points
     point1 = Point(lat=50.0, lon=50.0, elevation=300.0, message="foo")
     point2 = Point(lat=75.0, lon=75.0, elevation=600.0, message="bar")
     point3 = Point(lat=100.0, lon=100.0, elevation=1200.0, message="baz")
     point4 = Point(lat=125.0, lon=125.0, elevation=2400.0, message="abc")
     point5 = Point(lat=150.0, lon=150.0, elevation=4800.0, message="def")
     way.add_message_point(point1)
     way.add_message_point(point2)
     self.assertEqual(way.message_point_count, 2)
     self.assertListEqual(way.message_points, [point1, point2])
     expected_list1 = [(50.0, 50.0, 300.0), (75.0, 75.0, 600.0)]
     self.assertListEqual(way.message_points_lle, expected_list1)
     way.add_message_points([point3, point4, point5])
     expected_list2 = expected_list1.copy()
     expected_list2.extend([(100.0, 100.0, 1200.0), (125.0, 125.0, 2400.0),
                            (150.0, 150.0, 4800.0)])
     self.assertEqual(way.message_point_count, 5)
     self.assertListEqual(way.message_points,
                          [point1, point2, point3, point4, point5])
     self.assertListEqual(way.message_points_lle, expected_list2)
     # check getters
     self.assertTrue(
         self._compare_points(way.get_message_point_by_index(2), point3))
     self.assertTrue(
         self._compare_points(way.get_message_point_by_index(-1), point5))
     # get message point index
     # - note that this takes into account the point instance,
     #   so two points with the same content will not be considered the same
     # - it's a question if this a correct behavior or not :)
     self.assertEqual(way.get_message_point_index(point1), 0)
     self.assertEqual(way.get_message_point_index(point3), 2)
     foo_point = Point(lat=50.0, lon=50.0, elevation=300, message="foo")
     # foo_point has the same content as point1 but will be considered different
     self.assertIsNone(way.get_message_point_index(foo_point))
     # same thing for stuff that's not points
     self.assertIsNone(way.get_message_point_index(None))
     self.assertIsNone(way.get_message_point_index(1))
     self.assertIsNone(way.get_message_point_index(True))
     self.assertIsNone(way.get_message_point_index("bar"))
     self.assertIsNone(way.get_message_point_index([]))
Esempio n. 4
0
 def add_point_test(self):
     """Test adding regular points to a Way."""
     first = (0.0, 0.0, 0.0)
     second = (1.0, 1.0, 100.0)
     third = (2.0, 2.0, 200.0)
     lle_list = [first, second, third]
     way = Way(points=lle_list)
     way.add_point(Point(lat=50.0, lon=50.0, elevation=300.0))
     self.assertEqual(way.point_count, 4)
     self.assertListEqual(way.points_lle,
                          [first, second, third, (50.0, 50.0, 300.0)])
     way.add_point_lle(100.0, 100.0, 600.0)
     self.assertEqual(way.point_count, 5)
     self.assertListEqual(
         way.points_lle,
         [first, second, third, (50.0, 50.0, 300.0), (100.0, 100.0, 600.0)])
     self.assertEqual(
         way.get_point_by_index(-1).getLLE(), (100.0, 100.0, 600.0))
Esempio n. 5
0
 def get_closest_point_test(self):
     """Test the get-closest-point functions of the Way class."""
     # put some regular points to the way first
     first = (0.0, 0.0, 0.0)
     second = (1.0, 0.0, 100.0)
     third = (2.0, 0.0, 200.0)
     lle_list = [first, second, third]
     way = Way(points=lle_list)
     # add some message points
     point1 = Point(lat=50.0, lon=0.0, elevation=300.0, message="foo")
     point2 = Point(lat=75.0, lon=0.0, elevation=600.0, message="bar")
     way.add_message_point(point1)
     way.add_message_point(point2)
     # get closest point
     result = way.get_closest_point(Point(lat=2.5, lon=0.0))
     self.assertEqual(result.getLLE(), third)
     # get closest message point
     result = way.get_closest_message_point(Point(lat=76.0, lon=0.0))
     self.assertEqual(result, point2)
Esempio n. 6
0
 def radians_test(self):
     """Test that radians values for Way points are correct."""
     # create way with some regular points
     first = (0.0, 0.0, 0.0)
     second = (1.0, 1.0, 100.0)
     lle_list = [first, second]
     way = Way(points=lle_list)
     # check the radian output
     radians_list = [(0.0, 0.0, 0.0),
                     (0.017453292519943295, 0.017453292519943295, 100.0)]
     self.assertListEqual(way.points_radians_lle, radians_list)
     self.assertListEqual(way.points_radians_ll,
                          list(map(lambda x: (x[0], x[1]), radians_list)))
     # add some more points
     way.add_point(Point(lat=3.0, lon=3.0, elevation=200.0))
     way.add_point_lle(5.0, 5.0, 300.0)
     radians_list.extend([(0.05235987755982989, 0.05235987755982989, 200.0),
                          (0.08726646259971647, 0.08726646259971647, 300.0)
                          ])
     # check again
     self.assertListEqual(way.points_radians_lle, radians_list)
     self.assertListEqual(way.points_radians_ll,
                          list(map(lambda x: (x[0], x[1]), radians_list)))
Esempio n. 7
0
    def empty_way_test(self):
        """Test if an empty Way can be created."""
        way = Way()
        # points
        self.assertListEqual(way.points_lle, [])
        self.assertListEqual(way.points_radians_ll, [])
        self.assertListEqual(way.points_radians_lle, [])
        self.assertListEqual(way.points_radians_lle, [])
        self.assertListEqual(way.get_points_lle_radians(drop_elevation=False),
                             [])
        self.assertListEqual(way.get_points_lle_radians(drop_elevation=True),
                             [])
        self.assertIsNone(way.get_closest_point(point=Point(lat=0, lon=0)))

        #message points
        self.assertListEqual(way.message_points, [])
        self.assertListEqual(way.message_points_lle, [])
        self.assertEqual(way.message_point_count, 0)
        self.assertIsNone(
            way.get_closest_message_point(point=Point(lat=0, lon=0)))

        # misc
        self.assertIsNone(way.length)
        self.assertIsNone(way.duration)

        # test getters and setters
        with self.assertRaises(IndexError):
            way.get_point_by_index(1)
        with self.assertRaises(IndexError):
            way.get_message_point_by_index(1)
        with self.assertRaises(IndexError):
            way.set_message_point_by_index(1, Point(lat=1, lon=1))
        self.assertIsNone(way.get_closest_message_point(Point(lat=1, lon=1)))

        # clearing should also work
        way.clear_message_points()
Esempio n. 8
0
    def set_message_point_test(self):
        """Test replacing message points already added to a Way."""
        way = Way()
        # add some message points
        point1 = Point(lat=50.0, lon=50.0, elevation=300.0, message="foo")
        point2 = Point(lat=75.0, lon=75.0, elevation=600.0, message="bar")
        point3 = Point(lat=100.0, lon=100.0, elevation=1200.0, message="baz")
        way.add_message_points([point1, point2, point3])
        self.assertEqual(way.get_message_point_by_index(0), point1)
        self.assertEqual(way.get_message_point_by_index(2), point3)

        # replace some of the points
        point11 = Point(lat=51.0, lon=51.0, elevation=301.0, message="foo1")
        point31 = Point(lat=101.0, lon=101.0, elevation=1201.0, message="baz1")
        way.set_message_point_by_index(0, point11)
        way.set_message_point_by_index(2, point31)

        # check the points have been replaced
        self.assertEqual(way.get_message_point_by_index(0), point11)
        self.assertEqual(way.get_message_point_by_index(2), point31)

        # some sanity checks
        self.assertEqual(way.message_point_count, 3)
        self.assertListEqual(way.message_points, [point11, point2, point31])
        self.assertListEqual(
            way.message_points_lle,
            [point11.getLLE(),
             point2.getLLE(),
             point31.getLLE()])
        lol_point = Point(lat=50.0, lon=50.0, elevation=300, message="lol")
        with self.assertRaises(IndexError):
            way.set_message_point_by_index(3, lol_point)
        with self.assertRaises(IndexError):
            way.set_message_point_by_index(-100, lol_point)
        with self.assertRaises(IndexError):
            way.set_message_point_by_index(100, lol_point)