def test_relationship_api(self): relationship = Relationship(self.get_edge_value(b'Tom', b'Lily')) assert 'Tom' == relationship.start_vertex_id().as_string() assert 'Lily' == relationship.end_vertex_id().as_string() assert 100 == relationship.ranking() assert 100 == relationship.ranking() assert 'classmate' == relationship.edge_name() assert ['prop0', 'prop1', 'prop2', 'prop3', 'prop4'] == relationship.keys() expect_propertys = {} for key in relationship.properties().keys(): expect_propertys[key] = relationship.properties()[key].as_int() assert { 'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4 } == expect_propertys
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()
def test_relationship_api(self): relationship = Relationship(self.get_edge_value('Tom', 'Lily')) assert 'Tom' == relationship.start_vertex_id() assert 'Lily' == relationship.end_vertex_id() assert 100 == relationship.ranking() assert 100 == relationship.ranking() assert 'classmate' == relationship.edge_name() assert ['prop0', 'prop1', 'prop2', 'prop3', 'prop4'] == relationship.keys() assert { 'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4 } == relationship.propertys() assert str(relationship) == "Relationship(" \ "[Tom-[classmate(1)]->Lily@100]:" \ "{'prop0': 0, 'prop1': 1, 'prop2': 2, 'prop3': 3, 'prop4': 4})"
def as_relationship(self): """convert the edge data to structure Relationship :return: Relationship """ if len(self._row.values) < self.PROP_START_INDEX: raise RuntimeError('The row value is bad format, ' 'as relationship failed: len is {}' .format(len(self._row.values))) edge = Edge() edge.src = self._row.values[0] edge.type = self._row.values[1].get_iVal() edge.name = self._edge_name edge.ranking = self._row.values[2].get_iVal() edge.dst = self._row.values[3] edge.props = {} index = self.PROP_START_INDEX while index < len(self._col_names): edge.props[self._col_names[index]] = self._row.values[index] index = index + 1 return Relationship(edge).set_decode_type(self._decode_type)
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
def compare_edge(self, lhs: Relationship, rhs: Relationship): if not lhs == rhs: return False if not self._strict: return True return self.compare_map(lhs.propertys(), rhs.propertys())