Mercurial > repos > guerler > springsuite
view planemo/lib/python3.7/site-packages/networkx/testing/utils.py @ 1:56ad4e20f292 draft
"planemo upload commit 6eee67778febed82ddd413c3ca40b3183a3898f1"
author | guerler |
---|---|
date | Fri, 31 Jul 2020 00:32:28 -0400 |
parents | |
children |
line wrap: on
line source
__all__ = ['assert_nodes_equal', 'assert_edges_equal', 'assert_graphs_equal', 'almost_equal'] def almost_equal(x, y, places=7): return round(abs(x - y), places) == 0 def assert_nodes_equal(nodes1, nodes2): # Assumes iterables of nodes, or (node,datadict) tuples nlist1 = list(nodes1) nlist2 = list(nodes2) try: d1 = dict(nlist1) d2 = dict(nlist2) except (ValueError, TypeError): d1 = dict.fromkeys(nlist1) d2 = dict.fromkeys(nlist2) assert d1 == d2 def assert_edges_equal(edges1, edges2): # Assumes iterables with u,v nodes as # edge tuples (u,v), or # edge tuples with data dicts (u,v,d), or # edge tuples with keys and data dicts (u,v,k, d) from collections import defaultdict d1 = defaultdict(dict) d2 = defaultdict(dict) c1 = 0 for c1, e in enumerate(edges1): u, v = e[0], e[1] data = [e[2:]] if v in d1[u]: data = d1[u][v] + data d1[u][v] = data d1[v][u] = data c2 = 0 for c2, e in enumerate(edges2): u, v = e[0], e[1] data = [e[2:]] if v in d2[u]: data = d2[u][v] + data d2[u][v] = data d2[v][u] = data assert c1 == c2 # can check one direction because lengths are the same. for n, nbrdict in d1.items(): for nbr, datalist in nbrdict.items(): assert n in d2 assert nbr in d2[n] d2datalist = d2[n][nbr] for data in datalist: assert datalist.count(data) == d2datalist.count(data) def assert_graphs_equal(graph1, graph2): assert graph1.adj == graph2.adj assert graph1.nodes == graph2.nodes assert graph1.graph == graph2.graph