def graph_filled_for_traversal_neg_edges_loop():
    g = Graph()
    g.graph = {
        'A': {
            'B': -5,
            'C': 15
        },
        'B': {
            'D': 15,
            'E': 5,
            'C': 2
        },
        'C': {
            'F': 50,
            'G': -20
        },
        'D': {},
        'E': {
            'C': -50
        },
        'F': {
            'E': 10
        },
        'G': {
            'F': 20
        }
    }
    return g
def graph_filled_for_traversal():
    g = Graph()
    g.graph = {
        'A': {
            'B': 10,
            'C': 15
        },
        'B': {
            'D': 15,
            'E': 5,
            'C': 2
        },
        'C': {
            'F': 50,
            'G': 25
        },
        'D': {},
        'E': {
            'C': 5
        },
        'F': {
            'E': 10
        },
        'G': {
            'F': 20
        }
    }
    return g
def graph_filled():
    g = Graph()
    g.graph = {
        'A': {
            'B': 10
        },
        'B': {
            'A': 5,
            'D': 15,
            'C': 20
        },
        'C': {},
        'D': {
            'A': 5
        },
        'E': {},
        'F': {}
    }
    return g
def graph_empty():
    g = Graph()
    return g
def test_invalid_constructor():
    with pytest.raises(TypeError):
        Graph(10)
def test_valid_constructor():
    g = Graph()
    assert isinstance(g, Graph)
    assert isinstance(g.graph, dict)
    assert len(g.graph) == 0 and len(g) == 0