예제 #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)
예제 #2
0
    def test_01_vertex_methods(self):

        ### degree ###

        vertex = Vertex('a')
        vertex.adj['b'] = 1
        assert vertex.degree() == 1
        vertex.adj['c'] = 3
        assert vertex.degree() == 2

        ### visit/reset ###

        assert not vertex.visited
        vertex.visit()
        assert vertex.visited
        vertex.reset()
        assert not vertex.visited

        ### get_edges ###

        vertex = Vertex('a')
        solution = [('b', 1), ('c', 2)]

        vertex.adj['b'] = 1
        vertex.adj['c'] = 2

        subject = vertex.get_edges()
        assert subject == solution

        ### euclidean_distance ###

        vertex_a = Vertex('a')
        vertex_b = Vertex('b', 3, 4)

        subject = vertex_a.euclidean_distance(vertex_b)
        assert subject == 5
        subject = vertex_b.euclidean_distance(vertex_a)
        assert subject == 5