File: test_405_classes.py

package info (click to toggle)
ezdxf 1.4.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 104,528 kB
  • sloc: python: 182,341; makefile: 116; lisp: 20; ansic: 4
file content (123 lines) | stat: -rw-r--r-- 2,327 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
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
# Copyright (c) 2019 Manfred Moitzi
# License: MIT License
import ezdxf
from ezdxf.sections.classes import ClassesSection
from ezdxf.entities.dxfclass import DXFClass
from ezdxf.lldxf.tagwriter import TagCollector
from ezdxf.tools.test import load_entities


def test_init():
    classes = ClassesSection()
    assert len(classes.classes) == 0


def test_add_known_class():
    classes = ClassesSection()
    classes.add_class("SUN")
    assert len(classes.classes) == 1


def test_add_required_classes():
    classes = ClassesSection()
    classes.add_required_classes(ezdxf.DXF2004)
    assert len(classes.classes) > 10  # may change


def test_double_keys():
    classes = ClassesSection()
    sun1 = DXFClass()
    sun1.update_dxf_attribs({"name": "SUN", "cpp_class_name": "AcDbSun1"})

    sun2 = DXFClass()
    sun2.update_dxf_attribs({"name": "SUN", "cpp_class_name": "AcDbSun2"})
    # same class 'name' but different 'cpp class name', example: 'CADKitSamples/AEC Plan Elev Sample.dxf'
    classes.register([sun1, sun2])
    assert len(classes.classes) == 2


def test_export_dxf():
    classes = ClassesSection()
    classes.add_class("SUN")
    collector = TagCollector(dxfversion=ezdxf.DXF2004)
    classes.export_dxf(collector)
    tags = collector.tags
    assert tags[0] == (0, "SECTION")
    assert tags[1] == (2, "CLASSES")
    assert tags[2] == (0, "CLASS")
    # writing classes is tested in 'test_113_dxfclass.py'
    assert tags[-1] == (0, "ENDSEC")


def test_load_section():
    doc = ezdxf.new()
    entities = load_entities(TEST_CLASSES, "CLASSES")
    classes = ClassesSection(doc, entities)
    assert len(classes.classes) == 3

    # this tests internals - use storage key is not exposed by API
    assert (
        "ACDBDICTIONARYWDFLT",
        "AcDbDictionaryWithDefault",
    ) in classes.classes
    assert ("DICTIONARYVAR", "AcDbDictionaryVar") in classes.classes
    assert ("TABLESTYLE", "AcDbTableStyle") in classes.classes


TEST_CLASSES = """  0
SECTION
  2
CLASSES
  0
CLASS
  1
ACDBDICTIONARYWDFLT
  2
AcDbDictionaryWithDefault
  3
ObjectDBX Classes
 90
0
 91
1
280
0
281
0
  0
CLASS
  1
DICTIONARYVAR
  2
AcDbDictionaryVar
  3
ObjectDBX Classes
 90
0
 91
13
280
0
281
0
  0
CLASS
  1
TABLESTYLE
  2
AcDbTableStyle
  3
ObjectDBX Classes
 90
4095
 91
1
280
0
281
0
  0
ENDSEC
  0
EOF
"""