25 lines
1.3 KiB
Python
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()
|