File: test_821_hpgl2_polygon_encoded.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 (47 lines) | stat: -rw-r--r-- 1,329 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
46
47
#  Copyright (c) 2023, Manfred Moitzi
#  License: MIT License

import pytest
from ezdxf.addons.hpgl2.tokenizer import pe_encode, pe_decode, fractional_bits


class TestPolylineEncoding:
    def test_8_bit(self):
        s = pe_encode(10525)
        assert s[0] == 121
        assert s[1] == 71
        assert s[2] == 196

    def test_7_bit(self):
        s = pe_encode(10525, base=32)
        assert s[0] == 89
        assert s[1] == 80
        assert s[2] == 115


class TestPolylineDecoding:
    def test_8_bit(self):
        s = pe_encode(10525) + pe_encode(-10525)
        values, index = list(pe_decode(s))
        assert values[0] == 10525
        assert values[1] == -10525
        assert index == len(s)

    def test_7_bit(self):
        s = pe_encode(10525, base=32) + pe_encode(-10525, base=32)
        values, index = pe_decode(s, base=32)
        assert values[0] == 10525
        assert values[1] == -10525
        assert index == len(s)

    def test_8_bit_float(self):
        n = fractional_bits(3)
        s = pe_encode(10.525, frac_bits=n) + pe_encode(-10.525, frac_bits=n)
        values, index = list(pe_decode(s, frac_bits=n))
        assert round(values[0], 3) == 10.525
        assert round(values[1], 3) == -10.525
        assert index == len(s)


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