File: test_530_acis_sab.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 (74 lines) | stat: -rw-r--r-- 1,988 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
#  Copyright (c) 2022, Manfred Moitzi
#  License: MIT License

import pytest
from datetime import datetime
from ezdxf.acis import sab

T = sab.Tags


def test_decode_header(cube_sab):
    decoder = sab.Decoder(cube_sab)
    header = decoder.read_header()
    assert header.version == 21800
    assert header.n_records == 0
    assert header.n_entities == 2
    assert header.flags == 12
    assert header.product_id == "Open Design Alliance ACIS Builder"
    assert header.acis_version == "ACIS 218.00 NT"
    assert header.creation_date == datetime(2022, 5, 2, 5, 33, 25)
    assert header.units_in_mm == 1.0


def test_encode_header(cube_sab):
    decoder = sab.Decoder(cube_sab)
    header = decoder.read_header()
    data = header.dumpb()
    assert data == cube_sab[:len(data)]


def test_decode_first_record(cube_sab):
    decoder = sab.Decoder(cube_sab)
    _ = decoder.read_header()
    record = decoder.read_record()
    assert record == [
        (T.ENTITY_TYPE, "asmheader"),
        (T.POINTER, -1),
        (T.INT, -1),
        (T.STR, "208.0.4.7009"),
    ]


def test_decode_all_records(cube_sab):
    decoder = sab.Decoder(cube_sab)
    _ = decoder.read_header()
    records = list(decoder.read_records())
    assert len(records) == 116
    assert records[-1][0].value == "End-of-ASM-data"


def test_parse_sab(cube_sab):
    builder = sab.parse_sab(cube_sab)
    assert builder.header.version == 21800
    assert len(builder.entities) == 116
    assert builder.entities[0].name == "asmheader"
    assert builder.entities[-1].name == "End-of-ASM-data"


class TestSabEntity:
    @pytest.fixture(scope="class")
    def builder(self, cube_sab):
        return sab.parse_sab(cube_sab)

    @pytest.fixture(scope="class")
    def body(self, builder):
        return builder.bodies[0]

    def test_get_pointer_at_index(self, body):
        assert body.name == "body"
        assert body.attributes.is_null_ptr is False


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