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 124 125 126 127 128 129 130 131 132 133
|
# Copyright (c) 2018-2020, Manfred Moitzi
# License: MIT License
import pytest
import ezdxf
from ezdxf import recover
import os
CP936_FILE = os.path.join(
ezdxf.EZDXF_TEST_FILES, "ChineseChars_cp936_R2004.dxf"
)
@pytest.mark.skipif(
not os.path.exists(CP936_FILE), reason=f"File {CP936_FILE} not found"
)
def test_read_plain_cp936_chinese():
doc = ezdxf.readfile(CP936_FILE)
assert doc.filename is not None
assert doc.dxfversion is not None
CP936_ZIP_FILE = os.path.join(
ezdxf.EZDXF_TEST_FILES, "ChineseChars_cp936_R2004.zip"
)
@pytest.mark.skipif(
not os.path.exists(CP936_ZIP_FILE),
reason=f"File {CP936_ZIP_FILE} not found",
)
def test_read_from_zip():
doc = ezdxf.readzip(CP936_ZIP_FILE)
assert doc.filename is not None
assert doc.dxfversion is not None
PROE_FILE = os.path.join(ezdxf.EZDXF_TEST_FILES, "ProE_AC1018.dxf")
@pytest.mark.skipif(
not os.path.exists(PROE_FILE), reason=f'File "{PROE_FILE}" not found'
)
class TestProE:
@pytest.fixture
def filename(self):
return PROE_FILE
def test_read_ProE_file(self, filename):
doc = ezdxf.readfile(filename)
assert doc.filename is not None
assert doc.dxfversion is not None
def test_recover_ProE_file(self, filename):
doc, auditor = recover.readfile(filename)
assert doc.filename == filename
assert doc.dxfversion is not None
assert len(auditor.errors) >= 2
assert len(auditor.fixes) >= 9
FILE_CIVIL_3D = os.path.join(
ezdxf.EZDXF_TEST_FILES, "AutodeskProducts/Civil3D_2018.dxf"
)
@pytest.mark.skipif(
not os.path.exists(FILE_CIVIL_3D),
reason=f'File "{FILE_CIVIL_3D}" not found',
)
class TestCorruptCivil3D:
"""The test file "AutodeskProducts/Civil3D_2018.dxf" contains binary data
in XRECORDS and is not valid for TrueView 2020!
"""
@pytest.fixture
def filename(self):
return FILE_CIVIL_3D
def test_readfile_and_preserve_errors_by_surrogate_escape(self, filename):
doc = ezdxf.readfile(filename, errors="surrogateescape")
assert doc.filename == filename
assert doc.dxfversion == "AC1032"
def test_readfile_and_ignore_errors(self, filename):
doc = ezdxf.readfile(filename, errors="ignore")
assert doc.filename == filename
assert doc.dxfversion == "AC1032"
def test_readfile_and_raise_exception(self, filename):
with pytest.raises(UnicodeDecodeError):
ezdxf.readfile(filename, errors="strict")
with pytest.raises(UnicodeDecodeError):
recover.readfile(filename, errors="strict")
def test_recover(self, filename):
doc, auditor = recover.readfile(filename, errors="ignore")
assert doc.filename == filename
assert doc.dxfversion == "AC1032"
assert auditor.has_errors is True
assert len(auditor.errors) == 238, "expected decoding errors"
assert len(auditor.fixes) == 536
FILE_MAP_3D = os.path.join(
ezdxf.EZDXF_TEST_FILES, "AutodeskProducts/Map3D_2017.dxf"
)
@pytest.mark.skipif(
not os.path.exists(FILE_MAP_3D), reason=f'File "{FILE_MAP_3D}" not found'
)
def test_read_map_3d():
doc = ezdxf.readfile(FILE_MAP_3D)
assert doc.filename == FILE_MAP_3D
assert doc.dxfversion == "AC1027"
GERBER_FILE = os.path.join(ezdxf.EZDXF_TEST_FILES, "Gerber.dxf")
@pytest.mark.skipif(
not os.path.exists(GERBER_FILE), reason=f'File "{GERBER_FILE}" not found'
)
def test_read_gerber_file():
from ezdxf.lldxf.validator import is_dxf_file
assert is_dxf_file(GERBER_FILE)
doc = ezdxf.readfile(GERBER_FILE)
assert doc.filename == GERBER_FILE
assert doc.dxfversion == "AC1009"
|