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_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
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
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
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)
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