def test_delete_cycle_different_graph(): initial_graph = create_multi_graph([[1, 2], [3, 1], [2, 3], [1, 4]]) delete_circuit([1, 2, 3], create_multi_graph([[1, 2], [3, 1], [2, 3], [1, 4]])) assert initial_graph == create_multi_graph([[1, 2], [3, 1], [2, 3], [1, 4]])
def test_multi_graph_several_edges(): assert create_multi_graph([[1, 2], [2, 3], [2, 1], [1, 2], [4, 4]]) == { 1: [2, 2], 2: [3, 1], 3: [], 4: [4] }
def test_copy_multi_graph(): graph = create_multi_graph([[1, 1]]) copy_graph = copy_multi_graph(graph) assert copy_graph == graph graph[1].append("?") assert copy_graph != graph
def test_copy_multi_graph(): edges = create_multi_graph(1, [[0, 0]]) copy_edges = copy_multi_graph(edges) assert copy_edges == edges edges[0].append("X") assert copy_edges != edges
def test_list_of_circuits_several_circuits(): circuits = list_of_circuits( create_multi_graph(3, [[0, 1], [1, 2], [2, 0], [0, 0]])) assert len(circuits) == 2 assert {frozenset(circuits[0]), frozenset(circuits[1])} == {frozenset({0, 1, 2}), frozenset({0})}
def test_list_of_circuits_several_circuits(): circuits = list_of_circuits( create_multi_graph([[1, 2], [2, 3], [3, 1], [1, 1]])) assert len(circuits) == 2 assert {frozenset(circuits[0]), frozenset(circuits[1])} == {frozenset({1, 2, 3}), frozenset({1})}
def test_delete_cycle(): assert delete_circuit([1, 2, 3], create_multi_graph([[1, 2], [3, 1], [2, 3], [1, 4]])) == { 1: [4], 2: [], 3: [], 4: [] }
def test_create_multi_graph_empty(): assert create_multi_graph(0, []) == []
def test_is_eulerian_no_eulerian(): edges = create_multi_graph(4, [[0, 1], [1, 2], [2, 0], [1, 3]]) assert is_eulerian(edges) is False
def test_is_eulerian_cycle(): assert is_eulerian(create_multi_graph(3, [[0, 1], [2, 0], [1, 2]]))
def test_circuit(): assert circuit_from_eulerian(create_multi_graph([[1, 2], [3, 1], [2, 3]])) in [[1, 2, 3], [2, 3, 1], [3, 1, 2]]
def test_list_of_circuits_one_circuit(): circuits = list_of_circuits(create_multi_graph(3, [[0, 1], [1, 2], [2, 0]])) assert len(circuits) == 1 assert set(circuits[0]) == {0, 1, 2}
def test_delete_cycle_different_graph(): initial_graph = create_multi_graph(4, [[0, 1], [2, 0], [1, 2], [0, 3]]) delete_circuit([0, 1, 2], initial_graph) assert initial_graph == create_multi_graph( 4, [[0, 1], [2, 0], [1, 2], [0, 3]])
def test_is_eulerian_loop(): assert is_eulerian(create_multi_graph([[1, 1]]))
def test_eulerian_circuit(): assert eulerian_circuit(create_multi_graph( 2, [[0, 1], [1, 0], [0, 0]])) in ([0, 1, 0], [0, 0, 1], [1, 0, 0])
def test_eulerian_circuit_one_loop(): assert eulerian_circuit(create_multi_graph(1, [[0, 0]])) == [0]
def test_list_of_circuits_one_circuit(): circuits = list_of_circuits(create_multi_graph([[1, 2], [2, 3], [3, 1]])) assert len(circuits) == 1 assert set(circuits[0]) == {1, 2, 3}
def test_is_eulerian_no_eulerian(): assert is_eulerian(create_multi_graph([[1, 2], [2, 3], [3, 1], [2, 4] ])) is False
def test_multi_graph_one_edge(): assert create_multi_graph([[1, 2]]) == {1: [2], 2: []}
def test_create_multi_graph_empty(): assert create_multi_graph([]) == dict()
def test_circuit_loop(): assert circuit_from_eulerian(create_multi_graph(1, [[0, 0]])) == [0]
def test_is_eulerian_cycle(): assert is_eulerian(create_multi_graph([[1, 2], [3, 1], [2, 3]]))
def test_circuit(): assert circuit_from_eulerian( create_multi_graph(3, [[0, 1], [2, 0], [1, 2]])) in [[0, 1, 2], [1, 2, 0], [2, 0, 1]]
def test_multi_graph_several_edges(): edges = [[0, 1], [1, 2], [1, 0], [0, 1], [3, 3]] assert create_multi_graph(4, edges) == [[1, 1], [2, 0], [], [3]]
def test_delete_cycle(): new_edges = delete_circuit([0, 1, 2], create_multi_graph( 4, [[0, 1], [2, 0], [1, 2], [0, 3]])) assert new_edges == [[3], [], [], []]
def test_is_eulerian_one_edge(): assert is_eulerian(create_multi_graph(2, [[0, 1]])) is False
def test_create_multi_graph_empty_three_vertices(): assert create_multi_graph(3, []) == [[], [], []]
def test_is_eulerian_loop(): assert is_eulerian(create_multi_graph(1, [[0, 0]]))
def test_multi_graph_one_edge(): assert create_multi_graph(2, [[0, 1]]) == [[1], []]
def test_circuit_loop(): assert circuit_from_eulerian(create_multi_graph([[1, 1]])) == [1]