def test_assert_vertice_exists_two_not_in_range():
    try:
        graph = GraphAdjacencyList(3)
        graph.add_edge(-1, 3)
        assert False
    except ValueError:
        assert True
def test_assert_vertice_exists_bigger_range():
    try:
        graph = GraphAdjacencyList(3)
        graph.neighbourhood(3)
        assert False
    except ValueError:
        assert True
def test_number_of_edges(input, expected):
    graph = GraphAdjacencyList(10)
    for i in range(input):
        edge1 = random.randint(0, 9)
        edge2 = random.randint(0, 9)
        graph.add_edge(edge1, edge2)
    assert graph.number_of_edges() == expected
def test_path(edges, size, begin, end, expected):
    graph = GraphAdjacencyList(size)
    for edge in edges:
        graph.add_edge(edge[0], edge[1])
    print(graph)
    print(begin)
    print(end)
    assert graph.has_path(begin, end) == expected
def test_number_of_vertice_one():
    assert GraphAdjacencyList(1).number_of_vertices() == 1
def test_assert_positive_vertice_raises_exception():
    with pytest.raises(ValueError) as e:
        graph = GraphAdjacencyList(-1)
def test_edges_acessible(edges, size, expected):
    graph = GraphAdjacencyList(size)
    for edge in edges:
        graph.add_edge(edge[0], edge[1])
    assert graph.has_acessible_edges() == expected
def test_euler_path(edges, size, expected):
    graph = GraphAdjacencyList(size)
    for edge in edges:
        graph.add_edge(edge[0], edge[1])
    assert graph.has_open_euler_path() == expected
def test_assert_positive_vertice_one():
    try:
        graph = GraphAdjacencyList(1)
    except ValueError:
        assert False
def test_num_loops_graph(edges, expected):
    graph = GraphAdjacencyList(3)
    for edge in edges:
        graph.add_edge(edge[0], edge[1])
    assert graph.number_of_loops_graph() == expected
def test_max_degree(edges, expected):
    graph = GraphAdjacencyList(3)
    for edge in edges:
        graph.add_edge(edge[0], edge[1])
    assert graph.max_degree() == expected
def test_degree(edges, vertice, expected):
    graph = GraphAdjacencyList(3)
    for edge in edges:
        graph.add_edge(edge[0], edge[1])
    assert graph.degree(vertice) == expected
def test_neighbourhood(edges, vertice, expected):
    graph = GraphAdjacencyList(3)
    for edge in edges:
        graph.add_edge(edge[0], edge[1])
    assert graph.neighbourhood(vertice) == expected
def test_number_of_vertice_zero():
    assert GraphAdjacencyList(0).number_of_vertices() == 0
def test_vertices_with_edges(edges, size, expected):
    graph = GraphAdjacencyList(size)
    for edge in edges:
        graph.add_edge(edge[0], edge[1])
    assert graph.vertices_with_edges() == expected
def test_number_of_vertice_four():
    assert GraphAdjacencyList(4).number_of_vertices() == 4
def test_asser_positive_vertice_zero():
    try:
        graph = GraphAdjacencyList(0)
    except ValueError:
        assert False