Files
Pier_v1/pierzainer_ground/tests/test_dxf_metadata_repair.py
T

25 lines
1.3 KiB
Python

import tempfile
from pathlib import Path
import unittest
import ezdxf
from pierzainer_ground.dxf_terrain import read_source_document
class MetadataRepairTests(unittest.TestCase):
def test_invalid_xdata_is_removed_only_in_cache(self):
root=Path(__file__).resolve().parents[1]/'data/cache/test_metadata_repair'
root.mkdir(parents=True,exist_ok=True)
with tempfile.TemporaryDirectory(dir=root) as folder:
folder=Path(folder);source=folder/'source.dxf'
doc=ezdxf.new();doc.appids.new('SURVEY_APP')
point=doc.modelspace().add_point((214500,447200,45.125))
point.set_xdata('SURVEY_APP',[(1000,'AUDIT_PAYLOAD')]);doc.saveas(source)
original=source.read_bytes().replace(b'1000\nAUDIT_PAYLOAD',b'1002\nAUDIT_PAYLOAD').replace(b'1000\r\nAUDIT_PAYLOAD',b'1002\r\nAUDIT_PAYLOAD')
source.write_bytes(original)
repaired,_=read_source_document(source,folder/'cache')
self.assertEqual(tuple(repaired.modelspace().query('POINT')[0].dxf.location),(214500,447200,45.125))
self.assertEqual(source.read_bytes(),original)
self.assertFalse(repaired._ground_source_repair['geometry_tags_changed'])
self.assertGreater(repaired._ground_source_repair['removed_xdata_tag_pairs'],0)
if __name__=='__main__':unittest.main()