예제 #1
0
    def test_distances(self):

        # (1) test pythagorean triple
        vertex_a = Vertex('a')
        vertex_b = Vertex('b', 3, 4)

        subject = vertex_a.euclidean_distance(vertex_b)
        self.assertEqual(subject, 5)
        subject = vertex_b.euclidean_distance(vertex_a)
        self.assertEqual(subject, 5)
        subject = vertex_a.taxicab_distance(vertex_b)
        self.assertEqual(subject, 7)
        subject = vertex_b.taxicab_distance(vertex_a)
        self.assertEqual(subject, 7)

        # (2) test linear difference
        vertex_a = Vertex('a')
        vertex_b = Vertex('b', 0, 10)

        subject = vertex_a.euclidean_distance(vertex_b)
        self.assertEqual(subject, 10)
        subject = vertex_b.euclidean_distance(vertex_a)
        self.assertEqual(subject, 10)
        subject = vertex_a.taxicab_distance(vertex_b)
        self.assertEqual(subject, 10)
        subject = vertex_b.taxicab_distance(vertex_a)
        self.assertEqual(subject, 10)

        # (3) test zero distance
        vertex_a = Vertex('a')
        vertex_b = Vertex('b')

        subject = vertex_a.euclidean_distance(vertex_b)
        self.assertEqual(subject, 0)
        subject = vertex_b.euclidean_distance(vertex_a)
        self.assertEqual(subject, 0)
        subject = vertex_a.taxicab_distance(vertex_b)
        self.assertEqual(subject, 0)
        subject = vertex_b.taxicab_distance(vertex_a)
        self.assertEqual(subject, 0)

        # (4) test floating point distance
        vertex_a = Vertex('a')
        vertex_b = Vertex('b', -5, 5)

        subject = vertex_a.euclidean_distance(vertex_b)
        self.assertAlmostEqual(subject, 5 * math.sqrt(2))
        subject = vertex_b.euclidean_distance(vertex_a)
        self.assertAlmostEqual(subject, 5 * math.sqrt(2))
        subject = vertex_a.taxicab_distance(vertex_b)
        self.assertEqual(subject, 10)
        subject = vertex_b.taxicab_distance(vertex_a)
        self.assertEqual(subject, 10)