class Graph_Test(unittest.TestCase):

    #Runs before each test
    def setUp(self):
        self.graph = Graph()

    def test_add_vertex(self):
        self.graph.add_vertex('A', {'B': 7, 'C': 8})
        self.assertEqual(self.graph.vertices, {'A': {'C': 8, 'B': 7}})

    def test_shortest_path(self, ):
        self.graph.add_vertex('A', {'B': 7, 'C': 8})
        self.graph.add_vertex('B', {'A': 7, 'F': 2})
        self.graph.add_vertex('C', {'A': 8, 'F': 6, 'G': 4})
        self.graph.add_vertex('D', {'F': 8})
        self.graph.add_vertex('E', {'H': 1})
        self.graph.add_vertex('F', {'B': 2, 'C': 6, 'D': 8, 'G': 9, 'H': 3})
        self.graph.add_vertex('G', {'C': 4, 'F': 9})
        self.graph.add_vertex('H', {'E': 1, 'F': 3})

        self.assertEqual(self.graph.shortest_path('A', 'H'), ['H', 'F', 'B'])
        self.assertEqual(self.graph.shortest_path('H', 'I'), {
            'A': 12,
            'B': 5,
            'C': 9,
            'D': 11,
            'E': 1,
            'F': 3,
            'G': 12,
            'H': 0
        })
class Graph_Test(unittest.TestCase):

    # Runs before each test
    def setUp(self):
        self.graph = Graph()

    def test_add_vertex(self):
        self.graph.add_vertex("A", {"B": 7, "C": 8})
        self.assertEqual(self.graph.vertices, {"A": {"C": 8, "B": 7}})

    def test_shortest_path(self,):
        self.graph.add_vertex("A", {"B": 7, "C": 8})
        self.graph.add_vertex("B", {"A": 7, "F": 2})
        self.graph.add_vertex("C", {"A": 8, "F": 6, "G": 4})
        self.graph.add_vertex("D", {"F": 8})
        self.graph.add_vertex("E", {"H": 1})
        self.graph.add_vertex("F", {"B": 2, "C": 6, "D": 8, "G": 9, "H": 3})
        self.graph.add_vertex("G", {"C": 4, "F": 9})
        self.graph.add_vertex("H", {"E": 1, "F": 3})

        self.assertEqual(self.graph.shortest_path("A", "H"), ["H", "F", "B"])
        self.assertEqual(
            self.graph.shortest_path("H", "I"), {"A": 12, "B": 5, "C": 9, "D": 11, "E": 1, "F": 3, "G": 12, "H": 0}
        )