예제 #1
0
    def test_path_api(self):
        path = PathWrapper(self.get_path_value(b'Tom'))
        assert Node(self.get_vertex_value(b'Tom')) == path.start_node()

        assert 5 == path.length()

        assert path.contain_node(Node(self.get_vertex_value(b'vertex3')))

        assert path.contain_relationship(Relationship(self.get_edge_value(b'vertex3', b'vertex2')))

        nodes = list()
        nodes.append(path.start_node())
        for i in range(0, 5):
            nodes.append(Node(self.get_vertex_value(('vertex'.format(i)).encode('utf-8'))))

        relationships = list()
        relationships.append(Relationship(self.get_edge_value(b'Tom', b'vertex0')))
        for i in range(0, 4):
            if i % 2 == 0:
                relationships.append(Relationship(
                    self.get_edge_value(('vertex{}'.format(i + 1)).encode('utf-8'),
                                        ('vertex{}'.format(i)).encode('utf-8'))))
            else:
                relationships.append(Relationship(
                    self.get_edge_value(('vertex{}'.format(i)).encode('utf-8'),
                                        ('vertex{}'.format(i + 1)).encode('utf-8'))))

        assert relationships == path.relationships()
예제 #2
0
    def test_node_api(self):
        test_set = set()
        test_set.add(Value())
        node = Node(self.get_vertex_value(b'Tom'))
        assert 'Tom' == node.get_id().as_string()

        assert node.has_tag('tag2')

        assert ['prop0', 'prop1', 'prop2', 'prop3',
                'prop4'] == node.prop_names('tag2')

        assert [0, 1, 2, 3,
                4] == [(value.as_int()) for value in node.prop_values('tag2')]

        assert ['tag0', 'tag1', 'tag2'] == node.tags()

        expect_propertys = {}
        for key in node.properties('tag2').keys():
            expect_propertys[key] = node.properties('tag2')[key].as_int()
        assert {
            'prop0': 0,
            'prop1': 1,
            'prop2': 2,
            'prop3': 3,
            'prop4': 4
        } == expect_propertys
예제 #3
0
    def test_node_api(self):
        node = Node(self.get_vertex_value('Tom'))
        assert 'Tom' == node.get_id()

        assert node.has_tag('tag2')

        print(node.prop_names('tag2'))
        assert ['prop0', 'prop1', 'prop2', 'prop3',
                'prop4'] == node.prop_names('tag2')

        assert [0, 1, 2, 3, 4] == node.prop_values('tag2')

        assert ['tag0', 'tag1', 'tag2'] == node.tags()

        assert {
            'prop0': 0,
            'prop1': 1,
            'prop2': 2,
            'prop3': 3,
            'prop4': 4
        } == node.propertys('tag2')

        expect_str = "{Node}([Tom]:{" \
                     "{tag_name: tag0, props: {'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4}}," \
                     "{tag_name: tag1, props: {'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4}}," \
                     "{tag_name: tag2, props: {'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4}}})"
        assert str(node) == expect_str
예제 #4
0
 def compare_node(self, lhs: Node, rhs: Node):
     if lhs.get_id() != rhs.get_id():
         return False
     if not self._strict:
         return True
     if len(lhs.tags()) != len(rhs.tags()):
         return False
     for tag in lhs.tags():
         if not rhs.has_tag(tag):
             return False
         lprops = lhs.propertys(tag)
         rprops = rhs.propertys(tag)
         if not self.compare_map(lprops, rprops):
             return False
     return True
예제 #5
0
    def as_node(self):
        """convert the vertex data to structure Node

        :return: Node
        """
        if len(self._row.values) < self.PROP_START_INDEX:
            raise RuntimeError('The row value is bad format, '
                               'as node failed: len is {}'
                               .format(len(self._row.values)))

        vertex = Vertex()
        vertex.tags = []
        vertex.vid = self._row.values[0]
        tag = Tag()
        tag.name = self._tag_name
        tag.props = {}
        index = self.PROP_START_INDEX
        while index < len(self._col_names):
            tag.props[self._col_names[index]] = self._row.values[index]
            index = index + 1
        vertex.tags.append(tag)

        return Node(vertex).set_decode_type(self._decode_type)
예제 #6
0
    def test_path_api(self):
        path = Path(self.get_path_value('Tom'))
        assert Node(self.get_vertex_value('Tom')) == path.start_node()

        assert 5 == path.length()

        assert path.contain_node(Node(self.get_vertex_value('vertex3')))

        assert path.contain_relationship(
            Relationship(self.get_edge_value('vertex3', 'vertex2')))

        nodes = list()
        nodes.append(path.start_node())
        for i in range(0, 5):
            nodes.append(Node(self.get_vertex_value('vertex'.format(i))))

        relationships = list()
        relationships.append(
            Relationship(self.get_edge_value('Tom', 'vertex0')))
        for i in range(0, 4):
            if i % 2 == 0:
                relationships.append(
                    Relationship(
                        self.get_edge_value('vertex{}'.format(i + 1),
                                            'vertex{}'.format(i))))
            else:
                relationships.append(
                    Relationship(
                        self.get_edge_value('vertex{}'.format(i),
                                            'vertex{}'.format(i + 1))))

        assert relationships == path.relationships()

        expect_str = "Path(" \
                     "segments: [" \
                     "Segment(" \
                     "start_node: {Node}([Tom]:{" \
                     "{tag_name: tag0, props: {'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4}}," \
                     "{tag_name: tag1, props: {'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4}}," \
                     "{tag_name: tag2, props: {'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4}}}), " \
                     "relations: Relationship([" \
                     "Tom-[classmate(1)]->vertex0@100]:" \
                     "{'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4}), " \
                     "end_node: {Node}([vertex0]:{" \
                     "{tag_name: tag0, props: {'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4}}," \
                     "{tag_name: tag1, props: {'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4}}," \
                     "{tag_name: tag2, props: {'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4}}})), " \
                     "Segment(" \
                     "start_node: {Node}([vertex1]:{" \
                     "{tag_name: tag0, props: {'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4}}," \
                     "{tag_name: tag1, props: {'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4}}," \
                     "{tag_name: tag2, props: {'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4}}}), " \
                     "relations: Relationship([" \
                     "vertex1-[classmate(1)]->vertex0@100]:" \
                     "{'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4}), " \
                     "end_node: {Node}([vertex0]:{" \
                     "{tag_name: tag0, props: {'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4}}," \
                     "{tag_name: tag1, props: {'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4}}," \
                     "{tag_name: tag2, props: {'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4}}}))])"

        print(Path(self.get_path_value('Tom', 2)))
        assert str(Path(self.get_path_value('Tom', 2))) == expect_str