1#  Copyright (c) 2020, Manfred Moitzi
2#  License: MIT License
3
4import pytest
5from ezdxf.render.linetypes import LineTypeRenderer
6
7
8def test_line_type_solid():
9    ltr = LineTypeRenderer(dashes=tuple())
10    assert ltr.is_solid is True
11    assert list(ltr.line_segment((0, 0), (5, 0))) == [((0, 0), (5, 0))]
12
13
14def test_line_start_is_end():
15    ltr = LineTypeRenderer(dashes=tuple())
16    assert list(ltr.line_segment((0, 0), (0, 0))) == [((0, 0), (0, 0))]
17
18
19def test_dashed_line_2():
20    ltr = LineTypeRenderer(dashes=(1, 1))
21    result = list(ltr.line_segment((0, 0), (2, 0)))
22    assert len(result) == 1
23    assert result[0] == ((0, 0), (1, 0))
24
25
26def test_dashed_line_4():
27    ltr = LineTypeRenderer(dashes=(1, 1))
28    result = list(ltr.line_segment((0, 0), (4, 0)))
29    assert len(result) == 2
30    assert result[0] == ((0, 0), (1, 0))
31    # 1,0 -> 2,0 is a gap
32    assert result[1] == ((2, 0), (3, 0))
33
34
35def test_dash_dot_2x_render_issue():
36    # DASHDOTX2 (0, 0) -> (20, 0)
37    ltr = LineTypeRenderer(dashes=(2.0, 0.2, 0.1, 0.2))
38    result = list(ltr.line_segment((0, 0), (20, 0)))
39    last_segment = result[-1]
40    # Last segment is very very short:
41    assert last_segment[0].isclose(last_segment[1])
42
43
44if __name__ == '__main__':
45    pytest.main([__file__])
46