def test_add_virtual_polyline_to_layout(doc, layout): polyline = Polyline() polyline.append_vertex((0, 0)) layout.add_entity(polyline) assert factory.is_bound(polyline, doc) is True, \ 'POLYLINE must be bound to document' assert factory.is_bound(polyline.seqend, doc) is True, \ 'SEQEND must be bound to document' assert len(polyline) == 1 assert factory.is_bound(polyline.vertices[0], doc) is True, \ 'VERTEX must be bound to document'
def test_copy_sub_dictionary(self, source: Dictionary): doc = source.doc source = doc.entitydb.duplicate_entity(source) sub_dict = source.add_new_dict("SUBDICT", hard_owned=True) sub_dict.add_dict_var("SUBDICTVAR", "SubVarContent") copy = doc.entitydb.duplicate_entity(source) sub_dict_copy = copy["SUBDICT"] assert sub_dict is not sub_dict_copy assert sub_dict["SUBDICTVAR"] is not sub_dict_copy["SUBDICTVAR"] assert factory.is_bound(sub_dict_copy, doc) is True assert factory.is_bound(sub_dict_copy["SUBDICTVAR"], doc) is True
def test_add_virtual_insert_with_attribs_to_layout(doc): doc.blocks.new('TestAddVirtualInsert') msp = doc.modelspace() insert = Insert.new(dxfattribs={'name': 'TestAddVirtualInsert'}) insert.add_attrib('TAG', 'TEXT', (0, 0)) msp.add_entity(insert) assert factory.is_bound(insert, doc) is True assert factory.is_bound(insert.seqend, doc) is True, \ 'SEQEND must be bound to document' assert insert.attribs_follow is True assert factory.is_bound(insert.attribs[0], doc) is True, \ 'ATTRIB must be bound to document'
def test_add_virtual_insert_with_attribs_to_layout(doc): doc.blocks.new("TestAddVirtualInsert") msp = doc.modelspace() insert = Insert.new(dxfattribs={"name": "TestAddVirtualInsert"}) insert.add_attrib("TAG", "TEXT", (0, 0)) msp.add_entity(insert) assert factory.is_bound(insert, doc) is True assert (factory.is_bound(insert.seqend, doc) is True), "SEQEND must be bound to document" assert insert.attribs_follow is True assert (factory.is_bound(insert.attribs[0], doc) is True), "ATTRIB must be bound to document"
def test_copied_data_is_bound(self, source: Dictionary, key: str): doc = source.doc copy = doc.entitydb.duplicate_entity(source) source_handle = source[key].dxf.handle copied_handle = copy[key].dxf.handle assert copied_handle is not None assert source_handle != copied_handle assert copied_handle in doc.entitydb assert copy[key] in doc.objects assert factory.is_bound(copy[key], doc)
def test_fully_manual_dictionary_copy(self, source: Dictionary): doc = source.doc # manual copy procedure: copy = source.copy() factory.bind(copy, doc) doc.objects.add_object(copy) # this is all done automatically if you use: # doc.entitydb.duplicate_entity(source) assert copy in doc.objects assert factory.is_bound(copy, doc)
def audit(entity: 'DXFEntity', doc: 'Drawing') -> Auditor: """ Setup an :class:`Auditor` object, run the audit process for `entity` and return result as :class:`Auditor` object. Args: entity: DXF entity to validate doc: bounded DXF document of `entity` """ if not entity.is_alive: raise TypeError('Entity is destroyed.') # Validation of unbound entities is possible, but it is not useful # to validate entities against a different DXF document: if entity.dxf.handle is not None and not factory.is_bound(entity, doc): raise ValueError('Entity is bound to different DXF document.') auditor = Auditor(doc) entity.audit(auditor) return auditor
def test_is_bound_true(doc): e = factory.new('POINT') factory.bind(e, doc) assert factory.is_bound(e, doc) is True assert e.is_bound is True
def test_if_destroyed_entity_is_bound(doc): e = factory.new('POINT') factory.bind(e, doc) e.destroy() assert factory.is_bound(e, doc) is False assert e.is_bound is False
def test_is_bound_false(doc): e = factory.new('POINT') assert factory.is_bound(e, doc) is False assert e.is_bound is False
def test_copied_dictionary_is_bound(self, source: Dictionary): doc = source.doc copy = doc.entitydb.duplicate_entity(source) assert copy in doc.objects assert factory.is_bound(copy, doc)
def test_copied_objects_are_not_bound_to_document(self, source: Dictionary): copy = source.copy() assert factory.is_bound(copy["DICTVAR"], source.doc) is False assert factory.is_bound(copy["XRECORD"], source.doc) is False