def test_number_vertices(self):
        g1 = parse_graph1("data/graph.csv")
        cache = fetch_thrones()
        thrones = parse_graph1(cache)

        self.assertEqual(number_vertices1(g1), 6)
        self.assertEqual(number_vertices1(thrones), 107)
    def test_path(self):
        G = parse_graph1("data/graph.csv")

        assert shortest_path1(G, 'a', 'f') == (23, ['a', 'c', 'f'])
        assert shortest_path1(G, 'a', 'e') == (20, ['a', 'd', 'e'])

        G2 = parse_graph1("data/graph2.csv")

        assert shortest_distance1(G2, 'v1', 'v6') == 5
        assert shortest_distance1(G2, 'v6', 'v1') is None
    def test_distance(self):
        G = parse_graph1("data/graph.csv")

        assert shortest_distance1(G, 'a', 'f') == 23
        assert shortest_distance1(G, 'a', 'e') == 20
        assert shortest_distance1(G, 'c', 'b') is None

        G2 = parse_graph1("data/graph2.csv")

        assert shortest_distance1(G2, 'v1', 'v6') == 5
        assert shortest_distance1(G2, 'v6', 'v1') is None
    def test_reachables(self):
        reach = parse_graph1("data/reach.csv")

        all = {'a', 'b', 'c', 'd', 'e', 'f'}
        cycle = {'e', 'f'}

        assert reachables1(reach, 'a') == all
        assert reachables1(reach, 'b') == all
        assert reachables1(reach, 'c') == all
        assert reachables1(reach, 'd') == all
        assert reachables1(reach, 'e') == cycle
        assert reachables1(reach, 'f') == cycle
    def test_thrones(self):
        cache = fetch_thrones()
        thrones = parse_graph1(cache)

        self.assertEqual(number_vertices1(thrones), 107)
        self.assertEqual(shortest_distance1(thrones, 'Daenerys', 'Karl'), 38)
 def test_parse(self):
     g1 = parse_graph1("data/graph.csv")
     g2 = parse_graph2("data/graph.csv")
     assert g1 == g2