79 lines
2.1 KiB
Python
79 lines
2.1 KiB
Python
import os
|
|
import tempfile
|
|
|
|
import networkx as nx
|
|
from networkx.testing.utils import (
|
|
assert_graphs_equal,
|
|
assert_edges_equal,
|
|
assert_nodes_equal,
|
|
)
|
|
|
|
|
|
class TestGpickle:
|
|
@classmethod
|
|
def setup_class(cls):
|
|
G = nx.Graph(name="test")
|
|
e = [("a", "b"), ("b", "c"), ("c", "d"), ("d", "e"), ("e", "f"), ("a", "f")]
|
|
G.add_edges_from(e, width=10)
|
|
G.add_node("g", color="green")
|
|
G.graph["number"] = 1
|
|
DG = nx.DiGraph(G)
|
|
MG = nx.MultiGraph(G)
|
|
MG.add_edge("a", "a")
|
|
MDG = nx.MultiDiGraph(G)
|
|
MDG.add_edge("a", "a")
|
|
fG = G.copy()
|
|
fDG = DG.copy()
|
|
fMG = MG.copy()
|
|
fMDG = MDG.copy()
|
|
nx.freeze(fG)
|
|
nx.freeze(fDG)
|
|
nx.freeze(fMG)
|
|
nx.freeze(fMDG)
|
|
cls.G = G
|
|
cls.DG = DG
|
|
cls.MG = MG
|
|
cls.MDG = MDG
|
|
cls.fG = fG
|
|
cls.fDG = fDG
|
|
cls.fMG = fMG
|
|
cls.fMDG = fMDG
|
|
|
|
def test_gpickle(self):
|
|
for G in [
|
|
self.G,
|
|
self.DG,
|
|
self.MG,
|
|
self.MDG,
|
|
self.fG,
|
|
self.fDG,
|
|
self.fMG,
|
|
self.fMDG,
|
|
]:
|
|
(fd, fname) = tempfile.mkstemp()
|
|
nx.write_gpickle(G, fname)
|
|
Gin = nx.read_gpickle(fname)
|
|
assert_nodes_equal(list(G.nodes(data=True)), list(Gin.nodes(data=True)))
|
|
assert_edges_equal(list(G.edges(data=True)), list(Gin.edges(data=True)))
|
|
assert_graphs_equal(G, Gin)
|
|
os.close(fd)
|
|
os.unlink(fname)
|
|
|
|
def test_protocol(self):
|
|
for G in [
|
|
self.G,
|
|
self.DG,
|
|
self.MG,
|
|
self.MDG,
|
|
self.fG,
|
|
self.fDG,
|
|
self.fMG,
|
|
self.fMDG,
|
|
]:
|
|
with tempfile.TemporaryFile() as f:
|
|
nx.write_gpickle(G, f, 0)
|
|
f.seek(0)
|
|
Gin = nx.read_gpickle(f)
|
|
assert_nodes_equal(list(G.nodes(data=True)), list(Gin.nodes(data=True)))
|
|
assert_edges_equal(list(G.edges(data=True)), list(Gin.edges(data=True)))
|
|
assert_graphs_equal(G, Gin)
|