File: test_mtext_columns.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 (71 lines) | stat: -rw-r--r-- 2,159 bytes parent folder | download | duplicates (2)
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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
#  Copyright (c) 2021, Manfred Moitzi
#  License: MIT License
from typing import Iterable, cast
from pathlib import Path
import pytest
import ezdxf
from ezdxf import recover
from ezdxf.entities import MText

DATA = Path(__file__).parent / "data"
COLUMNS_R2007 = "mtext_columns_R2007.dxf"
COLUMNS_R2018 = "mtext_columns_R2018.dxf"


def load_mtext_entities(name: str) -> Iterable[MText]:
    doc = ezdxf.readfile(DATA / name)
    msp = doc.modelspace()
    entities = msp.query("MTEXT")
    return entities


def recover_mtext_entities(name: str) -> Iterable[MText]:
    doc, auditor = recover.readfile(DATA / name)
    msp = doc.modelspace()
    entities = msp.query("MTEXT")
    return entities


@pytest.fixture(scope="module", params=["load", "recover"])
def r2007(request):
    if request.param == "load":
        return load_mtext_entities(COLUMNS_R2007)
    elif request.param == "recover":
        return recover_mtext_entities(COLUMNS_R2007)


@pytest.fixture(scope="module", params=["load", "recover"])
def r2018(request):
    if request.param == "load":
        return load_mtext_entities(COLUMNS_R2018)
    elif request.param == "recover":
        return recover_mtext_entities(COLUMNS_R2018)


def test_load_mtext_columns_from_dxf_r2007(r2007):
    for mtext in r2007:
        assert mtext.has_columns is True
        columns = mtext.columns
        assert columns.count == 3
        assert len(columns.linked_columns) == 2
        db = mtext.doc.entitydb
        for column in columns.linked_columns:
            column = cast(MText, column)
            assert column.is_alive is True
            assert column.has_columns is False, "should not have columns"
            assert (
                column.dxf.handle in db
            ), "should be stored in the entity database"
            assert column.dxf.owner is None, "should not be stored in a layout"


def test_load_mtext_columns_from_dxf_r2018(r2018):
    for mtext in r2018:
        assert mtext.has_columns is True
        columns = mtext.columns
        assert columns.count == 3
        assert len(columns.linked_columns) == 0


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