File: test_dynblkhelper.py

package info (click to toggle)
ezdxf 1.4.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 104,528 kB
  • sloc: python: 182,341; makefile: 116; lisp: 20; ansic: 4
file content (45 lines) | stat: -rw-r--r-- 1,254 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
#  Copyright (c) 2023, Manfred Moitzi
#  License: MIT License

import pytest
import pathlib
import ezdxf
from ezdxf.entities import Insert
from ezdxf import dynblkhelper

BASEDIR = pathlib.Path(__file__)
DYN_BLOCKS = BASEDIR.parent / "data" / "dynblks.zip"


def test_direct_dynamic_block_references():
    doc = ezdxf.readzip(DYN_BLOCKS, "dynblk0.dxf")
    msp = doc.modelspace()

    references = msp.query("INSERT")
    assert len(references) == 4

    insert: Insert
    for insert in references:
        assert not insert.dxf.name.startswith("*"), "expected regular block reference"
        block = dynblkhelper.get_dynamic_block_definition(insert)
        assert block is not None
        assert block.name == insert.dxf.name


def test_indirect_dynamic_block_references():
    doc = ezdxf.readzip(DYN_BLOCKS, "dynblk1.dxf")
    msp = doc.modelspace()

    references = msp.query("INSERT")
    assert len(references) == 2

    insert: Insert
    for insert in references:
        assert insert.dxf.name.startswith("*"), "expected anonymous block reference"
        block = dynblkhelper.get_dynamic_block_definition(insert)
        assert block is not None
        assert block.name == "XYZ"


if __name__ == "__main__":
    pytest.main([__file__])