1# Copyright (c) 2019 Manfred Moitzi
2# License: MIT License
3# created 2019-02-15
4import pytest
5import ezdxf
6from ezdxf.entities.helix import Helix
7from ezdxf.lldxf.tagwriter import TagCollector, basic_tags_from_text
8
9HELIX = """0
10HELIX
115
120
13330
140
15100
16AcDbEntity
178
180
19100
20AcDbSpline
2170
220
2371
243
2572
260
2773
280
2974
300
31100
32AcDbHelix
3390
3429
3591
3663
3710
380.0
3920
400.0
4130
420.0
4311
441.0
4521
460.0
4731
480.0
4912
500.0
5122
520.0
5332
541.0
5540
561.0
5741
581.0
5942
601.0
61290
621
63280
641
65"""
66
67
68@pytest.fixture
69def entity():
70    return Helix.from_text(HELIX)
71
72
73def test_registered():
74    from ezdxf.entities.factory import ENTITY_CLASSES
75    assert 'HELIX' in ENTITY_CLASSES
76
77
78def test_default_init():
79    entity = Helix()
80    assert entity.dxftype() == 'HELIX'
81    assert entity.dxf.handle is None
82    assert entity.dxf.owner is None
83
84
85def test_default_new():
86    entity = Helix.new(handle='ABBA', owner='0', dxfattribs={
87        'color': 7,
88        'axis_base_point': (1, 2, 3),
89        'start_point': (4, 5, 6),
90        'axis_vector': (7, 7, 7),
91        'radius': 20,
92        'turns': 5,
93        'handedness': 0,
94        'constrain': 2,
95    })
96    assert entity.dxf.layer == '0'
97    assert entity.dxf.color == 7
98    assert entity.dxf.major_release_number == 29
99    assert entity.dxf.maintenance_release_number == 63
100    assert entity.dxf.axis_base_point == (1, 2, 3)
101    assert entity.dxf.start_point == (4, 5, 6)
102    assert entity.dxf.axis_vector == (7, 7, 7)
103    assert entity.dxf.radius == 20
104    assert entity.dxf.turns == 5
105    assert entity.dxf.handedness == 0
106    assert entity.dxf.constrain == 2
107
108
109def test_load_from_text(entity):
110    assert entity.dxf.layer == '0'
111    assert entity.dxf.color == 256, 'default color is 256 (by layer)'
112    assert entity.dxf.major_release_number == 29
113    assert entity.dxf.maintenance_release_number == 63
114    assert entity.dxf.axis_base_point == (0, 0, 0)
115    assert entity.dxf.start_point == (1, 0, 0)
116    assert entity.dxf.axis_vector == (0, 0, 1)
117    assert entity.dxf.radius == 1
118    assert entity.dxf.turns == 1
119    assert entity.dxf.handedness == 1
120    assert entity.dxf.constrain == 1
121
122
123def test_write_dxf():
124    entity = Helix.from_text(HELIX)
125    result = TagCollector.dxftags(entity)
126    expected = basic_tags_from_text(HELIX)
127    assert result == expected
128
129
130def test_generic_helix():
131    doc = ezdxf.new()
132    msp = doc.modelspace()
133    helix = msp.new_entity('HELIX', {})
134    assert helix.dxftype() == 'HELIX'
135    assert helix.dxf.major_release_number == 29
136    assert helix.dxf.degree == 3
137