Пример #1
0
    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]))
Пример #2
0
 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()
Пример #3
0
    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])
Пример #4
0
 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,
         ]))
Пример #5
0
 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,
         ]))
Пример #6
0
 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,
         ]))
Пример #7
0
 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]))
Пример #8
0
    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
Пример #9
0
 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
             ]
         )
     )
Пример #10
0
 def setUp(self):
     super(TestEntitySet, self).setUp()
     self.container = EntitySet([self.marko, self.josh, self.peter])