import org.fenfire as ff from org.fenfire.util.lava import Traversals def testIsConnected(): fen = ff.test.fen.newFen() p = ff.swamp.Nodes.N() a = ff.swamp.Nodes.N() b = ff.swamp.Nodes.N() c = ff.swamp.Nodes.N() d = ff.swamp.Nodes.N() fake1a = ff.swamp.Nodes.N() fake2a = ff.swamp.Nodes.N() fake3a = ff.swamp.Nodes.N() fake1d = ff.swamp.Nodes.N() fake2d = ff.swamp.Nodes.N() fake3d = ff.swamp.Nodes.N() assert Traversals.isConnected(a, p, a, fen.constgraph) # Reflexive assert not Traversals.isConnected(a, p, b, fen.constgraph) fen.graph.add(a,p,b) assert Traversals.isConnected(a, p, b, fen.constgraph) assert Traversals.isConnected(b, p, a, fen.constgraph) # Symmetric fen.graph.add(c,p,d) assert not Traversals.isConnected(a, p, d, fen.constgraph) fen.graph.add(c,p,b) # different direction -> directed graph not connected assert Traversals.isConnected(a, p, d, fen.constgraph) # Transitive assert Traversals.isConnected(d, p, a, fen.constgraph) fen.graph.add(fake1a,p,a) fen.graph.add(a,p,fake2a) fen.graph.add(a,p,fake3a) assert Traversals.isConnected(a, p, d, fen.constgraph) assert Traversals.isConnected(d, p, a, fen.constgraph) fen.graph.add(fake1d,p,d) fen.graph.add(d,p,fake2d) fen.graph.add(d,p,fake3d) assert Traversals.isConnected(a, p, d, fen.constgraph) assert Traversals.isConnected(d, p, a, fen.constgraph)