mirror of
https://github.com/IfcOpenShell/IfcOpenShell.git
synced 2026-08-09 09:21:46 +00:00
IfcHeaderExtractor tests
This commit is contained in:
@@ -0,0 +1,66 @@
|
||||
# IfcOpenShell - IFC toolkit and geometry engine
|
||||
# Copyright (C) 2021 Dion Moult <dion@thinkmoult.com>
|
||||
#
|
||||
# This file is part of IfcOpenShell.
|
||||
#
|
||||
# IfcOpenShell is free software: you can redistribute it and/or modify
|
||||
# it under the terms of the GNU Lesser General Public License as published by
|
||||
# the Free Software Foundation, either version 3 of the License, or
|
||||
# (at your option) any later version.
|
||||
#
|
||||
# IfcOpenShell is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
# GNU Lesser General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Lesser General Public License
|
||||
# along with IfcOpenShell. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
import pytest
|
||||
import test.bootstrap
|
||||
import ifcopenshell.util.file as subject
|
||||
import tempfile
|
||||
import zipfile
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
HEADER_EXTRACTOR_TEST_FILE_STR = """
|
||||
ISO-10303-21;
|
||||
HEADER;
|
||||
FILE_DESCRIPTION(('ViewDefinition[DesignTransferView]'),'2;1');
|
||||
FILE_NAME('file.ifc','2024-06-25T15:48:10+05:00',(),(),'IfcOpenShell 0.0.0','BlenderBIM 0.0.999999-xxxxxxx','Nobody');
|
||||
FILE_SCHEMA(('IFC4X3_ADD2'));
|
||||
ENDSEC;
|
||||
DATA;
|
||||
#1=IFCPROJECT('1U7MoqHmr8YP6jwz0pc7e0',$,'My Project',$,$,$,$,(#14,#26),#9);
|
||||
ENDSEC;
|
||||
END-ISO-10303-21;
|
||||
"""
|
||||
|
||||
|
||||
class TestExtractHeaderMetadata(test.bootstrap.IFC4):
|
||||
def check_metadata_fields(self, filepath: str) -> None:
|
||||
extractor = subject.IfcHeaderExtractor(filepath)
|
||||
header_info = extractor.extract()
|
||||
assert header_info.get("description") == "ViewDefinition[DesignTransferView]"
|
||||
assert header_info.get("implementation_level") == "2;1"
|
||||
assert header_info.get("name") == "file.ifc"
|
||||
assert header_info.get("time_stamp") == "2024-06-25T15:48:10+05:00"
|
||||
assert header_info.get("schema_name") == "IFC4X3_ADD2"
|
||||
|
||||
def get_ifc_filepath(self) -> Path:
|
||||
temp_dir = Path(tempfile.gettempdir())
|
||||
filepath = temp_dir / "test.ifc"
|
||||
with open(filepath, "w") as fo:
|
||||
fo.write(HEADER_EXTRACTOR_TEST_FILE_STR)
|
||||
return filepath
|
||||
|
||||
def test_ifc(self) -> None:
|
||||
self.check_metadata_fields(str(self.get_ifc_filepath()))
|
||||
|
||||
def test_ifc_zip(self) -> None:
|
||||
ifc_filepath = self.get_ifc_filepath()
|
||||
zip_filepath = ifc_filepath.with_suffix(".ifczip")
|
||||
with zipfile.ZipFile(zip_filepath, mode="w") as zf:
|
||||
zf.write(str(ifc_filepath))
|
||||
self.check_metadata_fields(str(zip_filepath))
|
||||
Reference in New Issue
Block a user