first commit
This commit is contained in:
@@ -0,0 +1,80 @@
|
||||
import unittest
|
||||
from pathlib import Path
|
||||
|
||||
from cadpy.step_metadata import (
|
||||
TEXT_TO_CAD_GENERATOR,
|
||||
inject_text_to_cad_step_metadata,
|
||||
read_text_to_cad_step_metadata,
|
||||
)
|
||||
from tests.python.support.tmp_root import temporary_directory
|
||||
|
||||
|
||||
MINIMAL_STEP = """ISO-10303-21;
|
||||
HEADER;
|
||||
FILE_DESCRIPTION(('Open CASCADE Model'),'2;1');
|
||||
ENDSEC;
|
||||
DATA;
|
||||
#1=PRODUCT_DEFINITION('design','',#2,#3);
|
||||
#4=PRODUCT_DEFINITION_SHAPE('','',#1);
|
||||
#5=SHAPE_REPRESENTATION('',(#6),#7);
|
||||
#7=(GEOMETRIC_REPRESENTATION_CONTEXT(3) REPRESENTATION_CONTEXT('Context #1','3D'));
|
||||
ENDSEC;
|
||||
END-ISO-10303-21;
|
||||
"""
|
||||
|
||||
|
||||
class TextToCadStepMetadataTests(unittest.TestCase):
|
||||
def test_injects_and_reads_text_to_cad_metadata(self) -> None:
|
||||
with temporary_directory(prefix="cad-step-metadata-") as temp_dir:
|
||||
step_path = Path(temp_dir) / "fixture.step"
|
||||
step_path.write_text(MINIMAL_STEP, encoding="utf-8")
|
||||
|
||||
inject_text_to_cad_step_metadata(
|
||||
step_path,
|
||||
entry_kind="assembly",
|
||||
source_hash="source-hash-123",
|
||||
)
|
||||
|
||||
metadata = read_text_to_cad_step_metadata(step_path)
|
||||
self.assertEqual(TEXT_TO_CAD_GENERATOR, metadata.get("generator"))
|
||||
self.assertEqual("assembly", metadata.get("entryKind"))
|
||||
self.assertEqual("source-hash-123", metadata.get("sourceHash"))
|
||||
step_text = step_path.read_text(encoding="utf-8")
|
||||
self.assertIn("PROPERTY_DEFINITION('cadpy metadata','cadpy:entryKind'", step_text)
|
||||
|
||||
def test_reads_tail_metadata_without_full_file_scan(self) -> None:
|
||||
with temporary_directory(prefix="cad-step-metadata-tail-") as temp_dir:
|
||||
step_path = Path(temp_dir) / "large-fixture.step"
|
||||
metadata_block = "\n".join(
|
||||
[
|
||||
"#100=DESCRIPTIVE_REPRESENTATION_ITEM('cadpy:generator','cadpy');",
|
||||
"#101=REPRESENTATION('cadpy:generator',(#100),#7);",
|
||||
"#102=PROPERTY_DEFINITION('cadpy metadata','cadpy:generator',#1);",
|
||||
"#103=PROPERTY_DEFINITION_REPRESENTATION(#102,#101);",
|
||||
"#104=DESCRIPTIVE_REPRESENTATION_ITEM('cadpy:entryKind','assembly');",
|
||||
"#105=REPRESENTATION('cadpy:entryKind',(#104),#7);",
|
||||
"#106=PROPERTY_DEFINITION('cadpy metadata','cadpy:entryKind',#1);",
|
||||
"#107=PROPERTY_DEFINITION_REPRESENTATION(#106,#105);",
|
||||
"#112=DESCRIPTIVE_REPRESENTATION_ITEM('cadpy:sourceHash','source-hash-tail');",
|
||||
"#113=REPRESENTATION('cadpy:sourceHash',(#112),#7);",
|
||||
"#114=PROPERTY_DEFINITION('cadpy metadata','cadpy:sourceHash',#1);",
|
||||
"#115=PROPERTY_DEFINITION_REPRESENTATION(#114,#113);",
|
||||
]
|
||||
)
|
||||
step_path.write_text(
|
||||
"ISO-10303-21;\nDATA;\n"
|
||||
+ ("#9=PRODUCT('padding','padding','',(#7));\n" * 40000)
|
||||
+ metadata_block
|
||||
+ "\nENDSEC;\nEND-ISO-10303-21;\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
metadata = read_text_to_cad_step_metadata(step_path)
|
||||
|
||||
self.assertEqual(TEXT_TO_CAD_GENERATOR, metadata.get("generator"))
|
||||
self.assertEqual("assembly", metadata.get("entryKind"))
|
||||
self.assertEqual("source-hash-tail", metadata.get("sourceHash"))
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user