def test_union_filter_for_labels_with_no_props(self): id_generator = IDGenerator() marko = Vertex( "person", name="Marko", ) josh = Vertex( "person", name="Marko", ) edge = Edge(marko, "father", josh) edge2 = Edge(josh, "son", marko) # attach ID's to the vertices and edges. marko.ident = id_generator.get_vertex_id() josh.ident = id_generator.get_vertex_id() edge.ident = id_generator.get_edge_id() edge2.ident = id_generator.get_edge_id() container1 = EntitySet() container2 = EntitySet() container1.add(edge) container2.add(edge2) container3 = container1 | container2 self.assertEqual(container3.filter("father").sorted(), sorted([edge])) self.assertEqual(container3.filter("son").sorted(), sorted([edge2]))
def __init__(self): self._vclass = Vertex self._eclass = Edge self._id_tracker = IDGenerator() self._vconstraints = defaultdict(dict) self._econstraints = defaultdict() self.vertices = EntitySet() self.edges = EntitySet()
def setUp(self): id_generator = IDGenerator() self.marko = Vertex( "Father", name="Marko", surname="Jones", age=30, ) self.john = Vertex( "Brother", name="John", surname="Jones", age=30 ) self.peter = Vertex( "Uncle", name="Peter", surname="Doe", age=20 ) # add id's to the unbound vertices self.marko.ident = id_generator.get_vertex_id() self.john.ident = id_generator.get_vertex_id() self.peter.ident = id_generator.get_vertex_id() self.container = EntitySet([self.marko, self.john, self.peter])
def test_intersection(self): sue = Vertex("Sister", name="Sue") intersection = self.container & EntitySet([self.marko, sue]) self.assertEqual( intersection.sorted(), # pylint: disable=no-member sorted([ self.marko, ]))
def test_difference(self): sue = Vertex("Sister", name="Sue") diff = self.container - EntitySet([self.marko, sue]) self.assertEqual( diff.sorted(), # pylint: disable=no-member sorted([ self.john, self.peter, ]))
def test_union_with_duplicate_id(self): union = self.container | EntitySet([self.marko]) self.assertEqual( union.sorted(), # pylint: disable=no-member sorted([ self.marko, self.john, self.peter, ]))
def test_filter_for_labels_with_no_props(self): marko = Vertex( "person", name="Marko", ) josh = Vertex( "person", name="Marko", ) edge = Edge(marko, "father", josh) container = EntitySet() container.add(edge) self.assertEqual(container.filter("father").sorted(), sorted([edge]))
def get_edges(self, head=None, label=None, tail=None, **kwargs): if head is None and tail is None: return self.edges.filter(label, **kwargs) container = EntitySet() for edge in self.edges.filter(label, **kwargs): if head and tail is None: if edge.head == head: container.add(edge) elif tail and head is None: if edge.tail == tail: container.add(edge) else: if edge.head == head and edge.tail == tail: container.add(edge) return container
def test_union(self): sue = Vertex( "Sister", name="Sue" ) union = self.container | EntitySet([sue, self.marko]) self.assertEqual( union.sorted(), # pylint: disable=no-member sorted( [ self.marko, self.john, self.peter, sue ] ) )
def setUp(self): super(TestEntitySet, self).setUp() self.container = EntitySet([self.marko, self.josh, self.peter])