From abde9bbd1bfd12b080b1652552af058f29733f02 Mon Sep 17 00:00:00 2001 From: Geert Hesselink Date: Mon, 4 Nov 2024 16:55:15 +0100 Subject: [PATCH] IVS-178 - VER000 --- ...00_Versioning-and-revision-control.feature | 17 +++++++++++ .../ver000/na-ver000-no_owner_history.ifc | 28 ++++++++++++++++++ ...ass-ver000-owner_with_last_modify_date.ifc | 29 +++++++++++++++++++ .../pass-ver000-owner_without_versioning.ifc | 29 +++++++++++++++++++ .../pass-ver000-owner_wrong_change_action.ifc | 29 +++++++++++++++++++ ...s-ver000-versioning_attributes_present.ifc | 29 +++++++++++++++++++ 6 files changed, 161 insertions(+) create mode 100644 features/VER000_Versioning-and-revision-control.feature create mode 100644 test/files/ver000/na-ver000-no_owner_history.ifc create mode 100644 test/files/ver000/pass-ver000-owner_with_last_modify_date.ifc create mode 100644 test/files/ver000/pass-ver000-owner_without_versioning.ifc create mode 100644 test/files/ver000/pass-ver000-owner_wrong_change_action.ifc create mode 100644 test/files/ver000/pass-ver000-versioning_attributes_present.ifc diff --git a/features/VER000_Versioning-and-revision-control.feature b/features/VER000_Versioning-and-revision-control.feature new file mode 100644 index 00000000..f6e50f01 --- /dev/null +++ b/features/VER000_Versioning-and-revision-control.feature @@ -0,0 +1,17 @@ +@implementer-agreement +@VER +@version1 +@E00020 + +Feature: VER000 - Versioning and revision control + The rule verifies the capability to track changes to building data over time and maintain a comprehensive history of those changes. + https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/concepts/Object_Attributes/Revision_Control/content.html + + + Scenario: Check for activation + + Given an IfcRoot + Given its attribute OwnerHistory + + Then The IFC model contains information on the selected functional part + diff --git a/test/files/ver000/na-ver000-no_owner_history.ifc b/test/files/ver000/na-ver000-no_owner_history.ifc new file mode 100644 index 00000000..32aa03db --- /dev/null +++ b/test/files/ver000/na-ver000-no_owner_history.ifc @@ -0,0 +1,28 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1'); +FILE_NAME('','2024-11-04T15:52:08',(''),(''),'IfcOpenShell-0.8.1-92b63a0ef','IfcOpenShell-0.8.1-92b63a0ef',''); +FILE_SCHEMA(('IFC4X3_ADD2')); +ENDSEC; +DATA; +#1=IFCPERSON($,$,'',$,$,$,$,$); +#2=IFCORGANIZATION($,'',$,$,$); +#3=IFCPERSONANDORGANIZATION(#1,#2,$); +#4=IFCAPPLICATION(#2,'0.8.1-92b63a0ef','IfcOpenShell-0.8.1-92b63a0ef',''); +#6=IFCDIRECTION((1.,0.,0.)); +#7=IFCDIRECTION((0.,0.,1.)); +#8=IFCCARTESIANPOINT((0.,0.,0.)); +#9=IFCAXIS2PLACEMENT3D(#8,#7,#6); +#10=IFCDIRECTION((0.,1.)); +#11=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-05,#9,#10); +#12=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0); +#13=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); +#14=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); +#15=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); +#16=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); +#17=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.0174532925199433),#16); +#18=IFCCONVERSIONBASEDUNIT(#12,.PLANEANGLEUNIT.,'DEGREE',#17); +#19=IFCUNITASSIGNMENT((#13,#14,#15,#18)); +#20=IFCPROJECT('1n_MANr8D3hxpaZawb45R3',$,'',$,$,$,$,(#11),#19); +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/ver000/pass-ver000-owner_with_last_modify_date.ifc b/test/files/ver000/pass-ver000-owner_with_last_modify_date.ifc new file mode 100644 index 00000000..1d31c679 --- /dev/null +++ b/test/files/ver000/pass-ver000-owner_with_last_modify_date.ifc @@ -0,0 +1,29 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1'); +FILE_NAME('','2024-11-03T20:21:45',(''),(''),'IfcOpenShell-0.7.11-d51fa2c5f','IfcOpenShell-0.7.11-d51fa2c5f',''); +FILE_SCHEMA(('IFC4X3_ADD2')); +ENDSEC; +DATA; +#1=IFCPERSON($,$,'',$,$,$,$,$); +#2=IFCORGANIZATION($,'',$,$,$); +#3=IFCPERSONANDORGANIZATION(#1,#2,$); +#4=IFCAPPLICATION(#2,'0.7.11-d51fa2c5f','IfcOpenShell-0.7.11-d51fa2c5f',''); +#5=IFCOWNERHISTORY(#3,#4,$,.NOTDEFINED.,$,#3,#4,1730665305); +#6=IFCDIRECTION((1.,0.,0.)); +#7=IFCDIRECTION((0.,0.,1.)); +#8=IFCCARTESIANPOINT((0.,0.,0.)); +#9=IFCAXIS2PLACEMENT3D(#8,#7,#6); +#10=IFCDIRECTION((0.,1.)); +#11=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-05,#9,#10); +#12=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0); +#13=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); +#14=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); +#15=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); +#16=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); +#17=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.017453292519943295),#16); +#18=IFCCONVERSIONBASEDUNIT(#12,.PLANEANGLEUNIT.,'DEGREE',#17); +#19=IFCUNITASSIGNMENT((#13,#14,#15,#18)); +#20=IFCPROJECT('2E3LRVubTBHOM7zf4qZDFp',#5,'',$,$,$,$,(#11),#19); +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/ver000/pass-ver000-owner_without_versioning.ifc b/test/files/ver000/pass-ver000-owner_without_versioning.ifc new file mode 100644 index 00000000..af23f881 --- /dev/null +++ b/test/files/ver000/pass-ver000-owner_without_versioning.ifc @@ -0,0 +1,29 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1'); +FILE_NAME('','2024-11-03T20:21:45',(''),(''),'IfcOpenShell-0.7.11-d51fa2c5f','IfcOpenShell-0.7.11-d51fa2c5f',''); +FILE_SCHEMA(('IFC4X3_ADD2')); +ENDSEC; +DATA; +#1=IFCPERSON($,$,'',$,$,$,$,$); +#2=IFCORGANIZATION($,'Validation Service Team',$,$,$); +#3=IFCPERSONANDORGANIZATION(#1,#2,$); +#4=IFCAPPLICATION(#2,'0.7.11-d51fa2c5f','IfcOpenShell-0.7.11-d51fa2c5f',''); +#5=IFCOWNERHISTORY(#3,#4,$,.NOTDEFINED.,$,#3,#4,1730665305); +#6=IFCDIRECTION((1.,0.,0.)); +#7=IFCDIRECTION((0.,0.,1.)); +#8=IFCCARTESIANPOINT((0.,0.,0.)); +#9=IFCAXIS2PLACEMENT3D(#8,#7,#6); +#10=IFCDIRECTION((0.,1.)); +#11=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-05,#9,#10); +#12=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0); +#13=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); +#14=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); +#15=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); +#16=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); +#17=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.017453292519943295),#16); +#18=IFCCONVERSIONBASEDUNIT(#12,.PLANEANGLEUNIT.,'DEGREE',#17); +#19=IFCUNITASSIGNMENT((#13,#14,#15,#18)); +#20=IFCPROJECT('2C0_5FU_vCLOZjbb7Ve_lz',#5,'',$,$,$,$,(#11),#19); +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/ver000/pass-ver000-owner_wrong_change_action.ifc b/test/files/ver000/pass-ver000-owner_wrong_change_action.ifc new file mode 100644 index 00000000..af23f881 --- /dev/null +++ b/test/files/ver000/pass-ver000-owner_wrong_change_action.ifc @@ -0,0 +1,29 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1'); +FILE_NAME('','2024-11-03T20:21:45',(''),(''),'IfcOpenShell-0.7.11-d51fa2c5f','IfcOpenShell-0.7.11-d51fa2c5f',''); +FILE_SCHEMA(('IFC4X3_ADD2')); +ENDSEC; +DATA; +#1=IFCPERSON($,$,'',$,$,$,$,$); +#2=IFCORGANIZATION($,'Validation Service Team',$,$,$); +#3=IFCPERSONANDORGANIZATION(#1,#2,$); +#4=IFCAPPLICATION(#2,'0.7.11-d51fa2c5f','IfcOpenShell-0.7.11-d51fa2c5f',''); +#5=IFCOWNERHISTORY(#3,#4,$,.NOTDEFINED.,$,#3,#4,1730665305); +#6=IFCDIRECTION((1.,0.,0.)); +#7=IFCDIRECTION((0.,0.,1.)); +#8=IFCCARTESIANPOINT((0.,0.,0.)); +#9=IFCAXIS2PLACEMENT3D(#8,#7,#6); +#10=IFCDIRECTION((0.,1.)); +#11=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-05,#9,#10); +#12=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0); +#13=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); +#14=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); +#15=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); +#16=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); +#17=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.017453292519943295),#16); +#18=IFCCONVERSIONBASEDUNIT(#12,.PLANEANGLEUNIT.,'DEGREE',#17); +#19=IFCUNITASSIGNMENT((#13,#14,#15,#18)); +#20=IFCPROJECT('2C0_5FU_vCLOZjbb7Ve_lz',#5,'',$,$,$,$,(#11),#19); +ENDSEC; +END-ISO-10303-21; diff --git a/test/files/ver000/pass-ver000-versioning_attributes_present.ifc b/test/files/ver000/pass-ver000-versioning_attributes_present.ifc new file mode 100644 index 00000000..488424ed --- /dev/null +++ b/test/files/ver000/pass-ver000-versioning_attributes_present.ifc @@ -0,0 +1,29 @@ +ISO-10303-21; +HEADER; +FILE_DESCRIPTION(('ViewDefinition [CoordinationView]'),'2;1'); +FILE_NAME('','2024-11-03T20:21:45',(''),(''),'IfcOpenShell-0.7.11-d51fa2c5f','IfcOpenShell-0.7.11-d51fa2c5f',''); +FILE_SCHEMA(('IFC4X3_ADD2')); +ENDSEC; +DATA; +#1=IFCPERSON($,$,'',$,$,$,$,$); +#2=IFCORGANIZATION($,'',$,$,$); +#3=IFCPERSONANDORGANIZATION(#1,#2,$); +#4=IFCAPPLICATION(#2,'0.7.11-d51fa2c5f','IfcOpenShell-0.7.11-d51fa2c5f',''); +#5=IFCOWNERHISTORY(#3,#4,$,.MODIFIED.,1320688800,#3,#4,1730665305); +#6=IFCDIRECTION((1.,0.,0.)); +#7=IFCDIRECTION((0.,0.,1.)); +#8=IFCCARTESIANPOINT((0.,0.,0.)); +#9=IFCAXIS2PLACEMENT3D(#8,#7,#6); +#10=IFCDIRECTION((0.,1.)); +#11=IFCGEOMETRICREPRESENTATIONCONTEXT($,'Model',3,1.E-05,#9,#10); +#12=IFCDIMENSIONALEXPONENTS(0,0,0,0,0,0,0); +#13=IFCSIUNIT(*,.LENGTHUNIT.,$,.METRE.); +#14=IFCSIUNIT(*,.AREAUNIT.,$,.SQUARE_METRE.); +#15=IFCSIUNIT(*,.VOLUMEUNIT.,$,.CUBIC_METRE.); +#16=IFCSIUNIT(*,.PLANEANGLEUNIT.,$,.RADIAN.); +#17=IFCMEASUREWITHUNIT(IFCPLANEANGLEMEASURE(0.017453292519943295),#16); +#18=IFCCONVERSIONBASEDUNIT(#12,.PLANEANGLEUNIT.,'DEGREE',#17); +#19=IFCUNITASSIGNMENT((#13,#14,#15,#18)); +#20=IFCPROJECT('2E3LRVubTBHOM7zf4qZDFp',#5,'',$,$,$,$,(#11),#19); +ENDSEC; +END-ISO-10303-21;