1# Copyright (c) 2019 Manfred Moitzi 2# License: MIT License 3from typing import cast 4import pytest 5import ezdxf 6from ezdxf.entities.idbuffer import IDBuffer 7from ezdxf.lldxf.tagwriter import TagCollector, basic_tags_from_text 8 9IDBUFFER = """0 10IDBUFFER 115 120 13102 14{ACAD_REACTORS 15330 160 17102 18} 19330 200 21100 22AcDbIdBuffer 23""" 24 25 26@pytest.fixture 27def entity(): 28 return IDBuffer.from_text(IDBUFFER) 29 30 31def test_registered(): 32 from ezdxf.entities.factory import ENTITY_CLASSES 33 assert 'IDBUFFER' in ENTITY_CLASSES 34 35 36def test_default_init(): 37 entity = IDBuffer() 38 assert entity.dxftype() == 'IDBUFFER' 39 assert entity.dxf.handle is None 40 assert entity.dxf.owner is None 41 42 43def test_default_new(): 44 entity = IDBuffer.new(handle='ABBA', owner='0', dxfattribs={ 45 }) 46 assert len(entity.handles) == 0 47 48 49def test_load_from_text(entity): 50 assert len(entity.handles) == 0 51 52 53def test_write_dxf(): 54 entity = IDBuffer.from_text(IDBUFFER) 55 result = TagCollector.dxftags(entity) 56 expected = basic_tags_from_text(IDBUFFER) 57 assert result == expected 58 59 60@pytest.fixture(scope='module') 61def doc(): 62 return ezdxf.new('R2007') 63 64 65def test_generic_id_buffer(doc): 66 id_buffer = doc.objects.new_entity('IDBUFFER', {}) 67 assert id_buffer.dxftype() == 'IDBUFFER' 68 assert len(id_buffer.handles) == 0 69 70 71def test_set_get_id_buffer(doc): 72 id_buffer = doc.objects.new_entity('IDBUFFER', {}) 73 assert id_buffer.dxftype() == 'IDBUFFER' 74 id_buffer.handles = ['FF', 'EE', 'DD'] 75 handles = id_buffer.handles 76 assert len(handles) == 3 77 assert handles == ['FF', 'EE', 'DD'] 78 79 handles.append('FFFF') 80 assert handles[-1] == 'FFFF' 81 82 handles.clear() 83 assert len(handles) == 0 84 85 86def test_dxf_tags(doc): 87 id_buffer = cast(IDBuffer, doc.objects.new_entity('IDBUFFER', {})) 88 id_buffer.handles = ['FF', 'EE', 'DD', 'CC'] 89 tags = TagCollector.dxftags(id_buffer)[-4:] 90 91 assert len(tags) == 4 92 assert tags[0] == (330, 'FF') 93 assert tags[-1] == (330, 'CC') 94 95 96def test_clone(doc): 97 id_buffer = cast(IDBuffer, doc.objects.new_entity('IDBUFFER', {})) 98 id_buffer.handles = ['FF', 'EE', 'DD', 'CC'] 99 buffer2 = cast(IDBuffer, id_buffer.copy()) 100 buffer2.handles[-1] = 'ABCD' 101 assert id_buffer.handles[:-1] == buffer2.handles[:-1] 102 assert id_buffer.handles[-1] != buffer2.handles[-1] 103