Skip to content

Commit

Permalink
wip - refactoring
Browse files Browse the repository at this point in the history
  • Loading branch information
Ghesselink committed Jan 5, 2025
1 parent 6854cb0 commit 7cf3e39
Show file tree
Hide file tree
Showing 72 changed files with 302 additions and 312 deletions.

This file was deleted.

2 changes: 1 addition & 1 deletion features/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ in earlier schema versions.
```
Given A model with Schema "IFC4.3"
Given An IfcAlignment
Given an .IfcAlignment.
Then ...
```
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@ Feature: ALB002 - Alignment Layout Verification

Given an <AlignmentComponentType>

Then It is nested by a list of only instance(s) of IfcAlignmentSegment
Then It is nested by a list of only instance(s) of .IfcAlignmentSegment.

Examples:
| AlignmentComponentType |
Expand All @@ -52,7 +52,7 @@ Feature: ALB002 - Alignment Layout Verification
@E00010
Scenario Outline: Agreement of the segments of alignment

Given an IfcAlignmentSegment
Given an .IfcAlignmentSegment.
Given The element nests an <AlignmentComponentType>

Then The type of attribute DesignParameters must be <SegmentType>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ or with Referents (e.g., mileage markers). And not with any other entity.
Scenario: Agreement on nested elements of IfcAlignment

Given A model with Schema "IFC4.3"
Given An IfcAlignment
Given An .IfcAlignment.
Given Its attribute .IfcRelNests.
Given Its attribute .RelatedObjects.

Then It must be nested by only the following entities: IfcAlignmentHorizontal, IfcAlignmentVertical, IfcAlignmentCant, IfcReferent
Then [Its type] *is equal to* .IfcAlignmentHorizontal. or .IfcAlignmentVertical. or .IfcAlignmentCant. or .IfcReferent.
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,6 @@ In this case, only the parent alignment shall be related to the project.
Scenario: Agreement on each IfcAlignment being aggregated to IfcProject

Given A model with Schema "IFC4.3"
Given An IfcAlignment
Given An .IfcAlignment.

Then It must be aggregated to IfcProject directly or indirectly
Then [It is aggregated] to .IfcProject. <directly or indirectly>
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ The rule verifies that IfcReferents (typed POSITION or STATION) linked to IfcAli
Scenario: Agreement on each IfcAlignment being aggregated to IfcProject and not contained in IfcSpatialElement

Given A model with Schema "IFC4.3"
Given An IfcReferent
Given PredefinedType = 'POSITION' or 'STATION'
Given An .IfcReferent.
Given .PredefinedType. *is equal to* "POSITION" or "STATION"

Then It must be positioned to IfcAlignment directly
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,6 @@ IfcReferent is associated to IfcAlignment via the IfcRelNests relationship.
Scenario: Agreement on each IfcAlignment nesting at least one IfcReferent

Given A model with Schema "IFC4.3"
Given An IfcAlignment
Given An .IfcAlignment.

Then A relationship IfcRelNests must exist from IfcAlignment to IfcReferent
Then a relationship .IfcRelNests. *must exist* from .IfcAlignment. to .IfcReferent.
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
@implementer-agreement
@ALB
@version1
@E00020
Feature: ALB012 - Alignment vertical segment radius of curvature
The rule verifies the 'RadiusOfCurvature' design parameter for vertical alignment segments.

Background:
Given A model with Schema "IFC4.3"
Given An .IfcAlignmentVertical.
Given A relationship .IfcRelNests. exists from .IfcAlignmentVertical. to .IfcAlignmentSegment. &and following that&
Given Its attribute .DesignParameters.
Given [Its type] is .IfcAlignmentVerticalSegment.

Scenario: Validating the absence of curvature radius for specific predefined types of vertical segment
Given .PredefinedType. *is not equal to* "CIRCULARARC" or "PARABOLICARC"
Then .RadiusOfCurvature. must be *empty*

Scenario: Validating the radius of curvature for parabolic segments
Given .PredefinedType. *is equal to* "PARABOLICARC"
Then .RadiusOfCurvature. must be *equal to* the expression: .HorizontalLength. / ( .EndGradient. - .StartGradient. )
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,24 @@ Feature: ALB015 - Alignment business logic zero length final segment

Scenario: Validating final segment of horizontal alignment business logic
Given A model with Schema "IFC4.3"
Given An IfcAlignmentHorizontal
Given A relationship IfcRelNests from IfcAlignmentHorizontal to IfcAlignmentSegment and following that
Given An .IfcAlignmentHorizontal.
Given A relationship .IfcRelNests. exists from .IfcAlignmentHorizontal. to IfcAlignmentSegment &and following that&
Given Its final element at depth 1
Given Its attribute DesignParameters
Then The SegmentLength of the IfcAlignmentHorizontalSegment must be 0
Given Its attribute .DesignParameters.
Then The .SegmentLength. of the .IfcAlignmentHorizontalSegment. must be "0"

Scenario: Validating final segment of vertical alignment business logic
Given A model with Schema "IFC4.3"
Given An IfcAlignmentVertical
Given A relationship IfcRelNests from IfcAlignmentVertical to IfcAlignmentSegment and following that
Given An .IfcAlignmentVertical.
Given A relationship .IfcRelNests. exists from .IfcAlignmentVertical. to .IfcAlignmentSegment. &and following that&
Given Its final element at depth 1
Given Its attribute DesignParameters
Then The HorizontalLength of the IfcAlignmentVerticalSegment must be 0
Then The HorizontalLength of the IfcAlignmentVerticalSegment must be "0"

Scenario: Validating final segment of cant alignment business logic
Given A model with Schema "IFC4.3"
Given An IfcAlignmentCant
Given A relationship IfcRelNests from IfcAlignmentCant to IfcAlignmentSegment and following that
Given An .IfcAlignmentCant.
Given A relationship .IfcRelNests. exists from .IfcAlignmentCant. to .IfcAlignmentSegment. &and following that&
Given Its final element at depth 1
Given Its attribute DesignParameters
Then The HorizontalLength of the IfcAlignmentCantSegment must be 0
Given Its attribute .DesignParameters.
Then The .HorizontalLength. of the .IfcAlignmentCantSegment. must be "0"
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,22 @@ Feature: ALB021 - Alignment overall agreement of business logic and geometry

Background: Validating overall agreement on presence of cant in business logic
Given A model with Schema "IFC4.3"
Given An IfcAlignment
Given An .IfcAlignment.

Scenario: Validating the presence of cant layout for IfcSegmentedReferenceCurve
Then A representation by IfcSegmentedReferenceCurve requires the presence of IfcAlignmentCant in the business logic
Then A representation by .IfcSegmentedReferenceCurve. requires the presence of .IfcAlignmentCant. in the business logic

Scenario: Validating the presence of vertical layout for IfcGradientCurve
Then A representation by IfcGradientCurve requires the presence of IfcAlignmentVertical in the business logic
Then A representation by .IfcGradientCurve. requires the presence of .IfcAlignmentVertical. in the business logic

Scenario: Validating the presence of vertical layout for 3D IfcIndexedPolyCurve
Then A representation by 3D IfcIndexedPolyCurve requires the presence of IfcAlignmentVertical in the business logic
Then A representation by 3D .IfcIndexedPolyCurve. requires the presence of .IfcAlignmentVertical. in the business logic

Scenario: Validating the presence of vertical layout for 3D IfcPolyline
Then A representation by 3D IfcPolyline requires the presence of IfcAlignmentVertical in the business logic
Then A representation by 3D .IfcPolyline. requires the presence of .IfcAlignmentVertical. in the business logic

Scenario: Validating the absence of vertical and cant layout for IfcCompositeCurve as Axis
Then A representation by IfcCompositeCurve as Axis requires the absence of IfcAlignmentVertical and IfcAlignmentCant in the business logic
Then A representation by .IfcCompositeCurve. as Axis requires the absence of .IfcAlignmentVertical. and .IfcAlignmentCant. in the business logic

Scenario: Validating the absence of cant layout for IfcGradientCurve
Then A representation by IfcGradientCurve requires the absence of IfcAlignmentCant in the business logic
Then A representation by .IfcGradientCurve. requires the absence of .IfcAlignmentCant. in the business logic
Original file line number Diff line number Diff line change
Expand Up @@ -10,14 +10,14 @@ Background: Validating overall agreement on number of segments
Given A model with Schema "IFC4.3"

Scenario: Validating the same number of segments for horizontal layout and representation
Given An IfcAlignmentHorizontal
Given An .IfcAlignmentHorizontal.
Then The representation must have the correct number of segments indicated by the layout

Scenario: Validating the same number of segments for vertical layout and representation
Given An IfcAlignmentVertical
Given An .IfcAlignmentVertical.
Then The representation must have the correct number of segments indicated by the layout

Scenario: Validating the same number of segments for cant layout and representation
Given An IfcAlignmentCant
Given An .IfcAlignmentCant.
Then The representation must have the correct number of segments indicated by the layout

Original file line number Diff line number Diff line change
Expand Up @@ -10,38 +10,38 @@ Background: Validating schema version
Given A model with Schema "IFC4.3"

Scenario: Validating the same geometry types for representation of the alignment
Given An IfcAlignment
Given Its attribute Representation
Given Its attribute Representations
Given An .IfcAlignment.
Given Its attribute .Representation.
Given Its attribute .Representations.
Given Its attribute Item
Then Each segment must have the same geometry type as its corresponding segment in the applicable IfcAlignment layout

Scenario: Validating the same geometry type for representation of the horizontal layout
Given An IfcAlignmentHorizontal
Given Its attribute Representation
Given Its attribute Representations
Given Its attribute Items
Given an .IfcAlignmentHorizontal.
Given Its attribute .Representation.
Given Its attribute .Representations.
Given its attribute .Items.
Then Each segment must have the same geometry type as its corresponding segment in the horizontal layout

Scenario: Validating the same geometry type for representation of the vertical layout
Given An IfcAlignmentVertical
Given Its attribute Representation
Given Its attribute Representations
Given Its attribute Items
Given an .IfcAlignmentVertical.
Given Its attribute .Representation.
Given Its attribute .Representations.
Given its attribute .Items.
Then Each segment must have the same geometry type as its corresponding segment in the vertical layout

Scenario: Validating the same geometry type for representation of the cant layout
Given An IfcAlignmentCant
Given Its attribute Representation
Given Its attribute Representations
Given Its attribute Items
Given an .IfcAlignmentCant.
Given Its attribute .Representation.
Given Its attribute .Representations.
Given its attribute .Items.
Then Each segment must have the same geometry type as its corresponding segment in the cant layout

Scenario: Validating the same geometry type for representation of the individual segments
Given An IfcAlignmentSegment
Given Its attribute Representation
Given Its attribute Representations
Given Its attribute Items
Given an .IfcAlignmentSegment.
Given Its attribute .Representation.
Given Its attribute .Representations.
Given its attribute .Items.
Then Each segment must have the same geometry type as its corresponding alignment segment


Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ Feature: ALB030 - Alignment local placement

Scenario: Every instance of IfcAlignment must have an ObjectPlacement of type IfcLocalPlacement
Given A model with Schema "IFC4.3"
Given An IfcAlignment
Given Its attribute ObjectPlacement
Given an .IfcAlignment.
Given its attribute .ObjectPlacement.

Then Its Entity Type is 'IfcLocalPlacement'
Then [Its type] is "IfcLocalPlacement"
Original file line number Diff line number Diff line change
Expand Up @@ -6,27 +6,24 @@ The rule verifies that each IfcAlignmentSegment uses correct representation.

Background:
Given A model with Schema "IFC4.3"
Given An IfcAlignmentSegment
Given Its attribute Representation
Given Its attribute Representations
Given an .IfcAlignmentSegment.
Given Its attribute .Representation.
Given Its attribute .Representations.


@E00020
Scenario: Agreement on each IfcAlignmentSegment using correct representation - Value

Given Its attribute RepresentationIdentifier
Then The value must be "Axis"
Then .RepresentationIdentifier. must *be equal to* "Axis"


@E00020
Scenario: Agreement on each IfcAlignmentSegment using correct representation - Type

Given Its attribute RepresentationType
Then The value must be "Segment"
Then .RepresentationType. must *be equal to* "Segment"


@E00010
Scenario: Agreement on each IfcAlignmentSegment using correct representation items - Type

Given Its attribute Items
Then The value must be "IfcCurveSegment"
Then .Items. must *be equal to* "IfcCurveSegment"
Original file line number Diff line number Diff line change
Expand Up @@ -6,32 +6,37 @@ The rule verifies that each IfcAlignment uses correct representation.

Background:
Given A model with Schema "IFC4.3"
Given An IfcAlignment
Given Its attribute Representation
Given Its attribute Representations
Given an .IfcAlignment.
Given Its attribute .Representation.
Given Its attribute .Representations.


@E00020
Scenario: Agreement on each IfcAlignment using correct representation - Value

Then The value of attribute RepresentationIdentifier must be FootPrint or Axis
Then .RepresentationIdentifier. must be "FootPrint" or "Axis"


@E00010
Scenario: Agreement on each IfcAlignment using correct representation - Type = 'Axis'

Given RepresentationIdentifier = 'Axis'
Then The value of attribute RepresentationType must be Curve3D
Given .RepresentationIdentifier. is "Axis"

Then .RepresentationType. must be "Curve3D"



@E00010
Scenario: Agreement on each IfcAlignment using correct representation - Type = 'FootPrint'

Given RepresentationIdentifier = 'FootPrint'
Then The value of attribute RepresentationType must be Curve2D
Given .RepresentationIdentifier is 'FootPrint'

Then .RepresentationType. must be "Curve2D"


@E00010
Scenario: Agreement on each IfcAlignment using correct representation items - Type

Then The type of attribute Items must be IfcGradientCurve or IfcSegmentedReferenceCurve or IfcCompositeCurve or IfcIndexedPolycurve or IfcPolyline or IfcOffsetCurveByDistance
Given its attribute .Items.

Then [Its type] must be .IfcGradientCurve. or .IfcSegmentedReferenceCurve. or .IfcCompositeCurve. or .IfcIndexedPolycurve. or .IfcPolyline. or .IfcOffsetCurveByDistance.
Original file line number Diff line number Diff line change
Expand Up @@ -6,18 +6,20 @@ The rule verifies that IfcAlignmentHorizontal is represented correctly with repr

Background:
Given A model with Schema "IFC4.3"
Given An IfcAlignmentHorizontal
Given Its attribute Representation
Given Its attribute Representations
Given an .IfcAlignmentHorizontal.
Given Its attribute .Representation.
Given Its attribute .Representations.

@E00020
Scenario: Agreement on each IfcAlignmentHorizontal using correct representation - Value

Then The value of attribute RepresentationIdentifier must be Axis
Then The value of attribute RepresentationType must be Curve2D
Then .RepresentationIdentifier. must be "Axis"
Then .RepresentationType. must be "Curve2D"


@E00010
Scenario: Agreement on each IfcAlignmentHorizontal using correct representation - Type

Then The type of attribute Items must be IfcCompositeCurve or IfcIndexedPolycurve or IfcPolyline
Given Its attribute .Items.

Then [Its type] must be .IfcCompositeCurve. or .IfcIndexedPolycurve. or .IfcPolyline.
Loading

0 comments on commit 7cf3e39

Please sign in to comment.