Spaces:
Sleeping
Sleeping
File size: 4,103 Bytes
b200bda |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 |
import networkx as nx
from .test_digraph import BaseDiGraphTester
from .test_digraph import TestDiGraph as _TestDiGraph
from .test_graph import BaseGraphTester
from .test_graph import TestGraph as _TestGraph
from .test_multidigraph import TestMultiDiGraph as _TestMultiDiGraph
from .test_multigraph import TestMultiGraph as _TestMultiGraph
def test_factories():
class mydict1(dict):
pass
class mydict2(dict):
pass
class mydict3(dict):
pass
class mydict4(dict):
pass
class mydict5(dict):
pass
for Graph in (nx.Graph, nx.DiGraph, nx.MultiGraph, nx.MultiDiGraph):
# print("testing class: ", Graph.__name__)
class MyGraph(Graph):
node_dict_factory = mydict1
adjlist_outer_dict_factory = mydict2
adjlist_inner_dict_factory = mydict3
edge_key_dict_factory = mydict4
edge_attr_dict_factory = mydict5
G = MyGraph()
assert isinstance(G._node, mydict1)
assert isinstance(G._adj, mydict2)
G.add_node(1)
assert isinstance(G._adj[1], mydict3)
if G.is_directed():
assert isinstance(G._pred, mydict2)
assert isinstance(G._succ, mydict2)
assert isinstance(G._pred[1], mydict3)
G.add_edge(1, 2)
if G.is_multigraph():
assert isinstance(G._adj[1][2], mydict4)
assert isinstance(G._adj[1][2][0], mydict5)
else:
assert isinstance(G._adj[1][2], mydict5)
class TestSpecialGraph(_TestGraph):
def setup_method(self):
_TestGraph.setup_method(self)
self.Graph = nx.Graph
class TestThinGraph(BaseGraphTester):
def setup_method(self):
all_edge_dict = {"weight": 1}
class MyGraph(nx.Graph):
def edge_attr_dict_factory(self):
return all_edge_dict
self.Graph = MyGraph
# build dict-of-dict-of-dict K3
ed1, ed2, ed3 = (all_edge_dict, all_edge_dict, all_edge_dict)
self.k3adj = {0: {1: ed1, 2: ed2}, 1: {0: ed1, 2: ed3}, 2: {0: ed2, 1: ed3}}
self.k3edges = [(0, 1), (0, 2), (1, 2)]
self.k3nodes = [0, 1, 2]
self.K3 = self.Graph()
self.K3._adj = self.k3adj
self.K3._node = {}
self.K3._node[0] = {}
self.K3._node[1] = {}
self.K3._node[2] = {}
class TestSpecialDiGraph(_TestDiGraph):
def setup_method(self):
_TestDiGraph.setup_method(self)
self.Graph = nx.DiGraph
class TestThinDiGraph(BaseDiGraphTester):
def setup_method(self):
all_edge_dict = {"weight": 1}
class MyGraph(nx.DiGraph):
def edge_attr_dict_factory(self):
return all_edge_dict
self.Graph = MyGraph
# build dict-of-dict-of-dict K3
ed1, ed2, ed3 = (all_edge_dict, all_edge_dict, all_edge_dict)
ed4, ed5, ed6 = (all_edge_dict, all_edge_dict, all_edge_dict)
self.k3adj = {0: {1: ed1, 2: ed2}, 1: {0: ed3, 2: ed4}, 2: {0: ed5, 1: ed6}}
self.k3edges = [(0, 1), (0, 2), (1, 2)]
self.k3nodes = [0, 1, 2]
self.K3 = self.Graph()
self.K3._succ = self.k3adj
# K3._adj is synced with K3._succ
self.K3._pred = {0: {1: ed3, 2: ed5}, 1: {0: ed1, 2: ed6}, 2: {0: ed2, 1: ed4}}
self.K3._node = {}
self.K3._node[0] = {}
self.K3._node[1] = {}
self.K3._node[2] = {}
ed1, ed2 = (all_edge_dict, all_edge_dict)
self.P3 = self.Graph()
self.P3._succ = {0: {1: ed1}, 1: {2: ed2}, 2: {}}
# P3._adj is synced with P3._succ
self.P3._pred = {0: {}, 1: {0: ed1}, 2: {1: ed2}}
self.P3._node = {}
self.P3._node[0] = {}
self.P3._node[1] = {}
self.P3._node[2] = {}
class TestSpecialMultiGraph(_TestMultiGraph):
def setup_method(self):
_TestMultiGraph.setup_method(self)
self.Graph = nx.MultiGraph
class TestSpecialMultiDiGraph(_TestMultiDiGraph):
def setup_method(self):
_TestMultiDiGraph.setup_method(self)
self.Graph = nx.MultiDiGraph
|