from org import fenfire as ff from org.fenfire.swamp import Nodes from org.fenfire.structure import StructLink def seteq(iterator, set): """Test that the given iterator and set contain the same elements. """ l = [] while iterator.hasNext(): l.append(iterator.next()) for i in l: assert (i in set), (l, set, i) for i in set: assert (i in l), ("2", l, set, i) def testAssocs(): graph = ff.swamp.impl.HashGraph() structLink = StructLink.create(graph) # 10 test uris uri = [Nodes.get("http://asdf.org/%d"%d) for d in range(0,10)] seteq(structLink.getLinks(uri[0], 1), []) seteq(structLink.getLinks(uri[0], -1), []) # Can't link to itself structLink.link(uri[0], uri[0]) seteq(structLink.getLinks(uri[0], 1), []) seteq(structLink.getLinks(uri[0], -1), []) structLink.link(uri[0], uri[1]) seteq(structLink.getLinks(uri[0], 1), [uri[1]]) seteq(structLink.getLinks(uri[0], -1), []) seteq(structLink.getLinks(uri[1], 1), []) seteq(structLink.getLinks(uri[1], -1), [uri[0]]) structLink.detach(uri[1], uri[0]) seteq(structLink.getLinks(uri[0], 1), [uri[1]]) seteq(structLink.getLinks(uri[0], -1), []) seteq(structLink.getLinks(uri[1], 1), []) seteq(structLink.getLinks(uri[1], -1), [uri[0]]) structLink.detach(uri[0], uri[1]) seteq(structLink.getLinks(uri[0], 1), []) seteq(structLink.getLinks(uri[0], -1), []) seteq(structLink.getLinks(uri[1], 1), []) seteq(structLink.getLinks(uri[1], -1), []) structLink.link(uri[0], uri[1]) structLink.link(uri[0], uri[2]) structLink.link(uri[3], uri[0]) structLink.link(uri[4], uri[0]) seteq(structLink.getLinks(uri[0], 1), [uri[1], uri[2]]) seteq(structLink.getLinks(uri[0], -1), [uri[3], uri[4]]) structLink.detach(uri[0]) seteq(structLink.getLinks(uri[0], 1), []) seteq(structLink.getLinks(uri[0], -1), [])