test_cytoscape.py 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. import copy
  2. import json
  3. import pytest
  4. import networkx as nx
  5. from networkx.readwrite.json_graph import cytoscape_data, cytoscape_graph
  6. def test_graph():
  7. G = nx.path_graph(4)
  8. H = cytoscape_graph(cytoscape_data(G))
  9. assert nx.is_isomorphic(G, H)
  10. def test_input_data_is_not_modified_when_building_graph():
  11. G = nx.path_graph(4)
  12. input_data = cytoscape_data(G)
  13. orig_data = copy.deepcopy(input_data)
  14. # Ensure input is unmodified by cytoscape_graph (gh-4173)
  15. cytoscape_graph(input_data)
  16. assert input_data == orig_data
  17. def test_graph_attributes():
  18. G = nx.path_graph(4)
  19. G.add_node(1, color="red")
  20. G.add_edge(1, 2, width=7)
  21. G.graph["foo"] = "bar"
  22. G.graph[1] = "one"
  23. G.add_node(3, name="node", id="123")
  24. H = cytoscape_graph(cytoscape_data(G))
  25. assert H.graph["foo"] == "bar"
  26. assert H.nodes[1]["color"] == "red"
  27. assert H[1][2]["width"] == 7
  28. assert H.nodes[3]["name"] == "node"
  29. assert H.nodes[3]["id"] == "123"
  30. d = json.dumps(cytoscape_data(G))
  31. H = cytoscape_graph(json.loads(d))
  32. assert H.graph["foo"] == "bar"
  33. assert H.graph[1] == "one"
  34. assert H.nodes[1]["color"] == "red"
  35. assert H[1][2]["width"] == 7
  36. assert H.nodes[3]["name"] == "node"
  37. assert H.nodes[3]["id"] == "123"
  38. def test_digraph():
  39. G = nx.DiGraph()
  40. nx.add_path(G, [1, 2, 3])
  41. H = cytoscape_graph(cytoscape_data(G))
  42. assert H.is_directed()
  43. assert nx.is_isomorphic(G, H)
  44. def test_multidigraph():
  45. G = nx.MultiDiGraph()
  46. nx.add_path(G, [1, 2, 3])
  47. H = cytoscape_graph(cytoscape_data(G))
  48. assert H.is_directed()
  49. assert H.is_multigraph()
  50. def test_multigraph():
  51. G = nx.MultiGraph()
  52. G.add_edge(1, 2, key="first")
  53. G.add_edge(1, 2, key="second", color="blue")
  54. H = cytoscape_graph(cytoscape_data(G))
  55. assert nx.is_isomorphic(G, H)
  56. assert H[1][2]["second"]["color"] == "blue"
  57. def test_exception():
  58. with pytest.raises(nx.NetworkXError):
  59. G = nx.MultiDiGraph()
  60. cytoscape_data(G, name="foo", ident="foo")