text: import json
  import pytest
  import networkx as nx
  from networkx.readwrite.json_graph import adjacency_data, adjacency_graph
  
  
  class TestAdjacency:
      def test_graph(self):
          G = nx.path_graph(4)
          H = adjacency_graph(adjacency_data(G))
          nx.is_isomorphic(G, H)
  
      def test_graph_attributes(self):
          G = nx.path_graph(4)
          G.add_node(1, color="red")
          G.add_edge(1, 2, width=7)
          G.graph["foo"] = "bar"
          G.graph[1] = "one"
  
          H = adjacency_graph(adjacency_data(G))
          assert H.graph["foo"] == "bar"
          assert H.nodes[1]["color"] == "red"
          assert H[1][2]["width"] == 7
  
          d = json.dumps(adjacency_data(G))
          H = adjacency_graph(json.loads(d))
          assert H.graph["foo"] == "bar"
          assert H.graph[1] == "one"
          assert H.nodes[1]["color"] == "red"
          assert H[1][2]["width"] == 7
  
      def test_digraph(self):
          G = nx.DiGraph()
          nx.add_path(G, [1, 2, 3])
          H = adjacency_graph(adjacency_data(G))
          assert H.is_directed()
          nx.is_isomorphic(G, H)
  
      def test_multidigraph(self):
          G = nx.MultiDiGraph()
          nx.add_path(G, [1, 2, 3])
          H = adjacency_graph(adjacency_data(G))
          assert H.is_directed()
          assert H.is_multigraph()
  
      def test_multigraph(self):
          G = nx.MultiGraph()
          G.add_edge(1, 2, key="first")
          G.add_edge(1, 2, key="second", color="blue")
          H = adjacency_graph(adjacency_data(G))
          nx.is_isomorphic(G, H)
          assert H[1][2]["second"]["color"] == "blue"
  
      def test_exception(self):
          with pytest.raises(nx.NetworkXError):
              G = nx.MultiDiGraph()
              attrs = dict(id="node", key="node")
              adjacency_data(G, attrs)
  