From: <luc...@us...> - 2019-11-22 23:11:55
|
Revision: 26181 http://sourceforge.net/p/sbml/code/26181 Author: luciansmith Date: 2019-11-22 23:11:53 +0000 (Fri, 22 Nov 2019) Log Message: ----------- Add support for spatial rules 23252 and 23253. Modified Paths: -------------- branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSBMLError.h branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSBMLErrorTable.h branches/libsbml-experimental/src/sbml/packages/spatial/validator/constraints/SpatialConsistencyConstraints.cpp branches/libsbml-experimental/src/sbml/packages/spatial/validator/constraints/SpatialConsistencyConstraintsDeclared.cxx Added Paths: ----------- branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223252-fail-01-01.xml branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223252-fail-01-02.xml branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223252-fail-01-03.xml branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223252-pass-00-01.xml branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223253-fail-01-01.xml branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223253-fail-01-02.xml branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223253-fail-01-03.xml branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223253-pass-00-01.xml Modified: branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSBMLError.h =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSBMLError.h 2019-11-22 21:34:06 UTC (rev 26180) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSBMLError.h 2019-11-22 23:11:53 UTC (rev 26181) @@ -271,6 +271,8 @@ , SpatialCSGSetOperatorLOCSGNodesAllowedCoreAttributes = 1223209 , SpatialCSGSetOperatorTwoComponentsForDifference = 1223250 , SpatialCSGSetOperatorNoComponentsUnionIntersection = 1223251 +, SpatialCSGSetOperatorDifferenceMustHaveTwoChildren = 1223252 +, SpatialCSGSetOperatorComplementsMustReferenceChildren = 1223253 , SpatialSpatialSymbolReferenceAllowedCoreAttributes = 1223301 , SpatialSpatialSymbolReferenceAllowedCoreElements = 1223302 , SpatialSpatialSymbolReferenceAllowedAttributes = 1223303 Modified: branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSBMLErrorTable.h =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSBMLErrorTable.h 2019-11-22 21:34:06 UTC (rev 26180) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/SpatialSBMLErrorTable.h 2019-11-22 23:11:53 UTC (rev 26181) @@ -2512,7 +2512,26 @@ } }, - // 1223301 + // 1223252 + { SpatialCSGSetOperatorDifferenceMustHaveTwoChildren, + "A <csgSetOperator> difference must have two children.", + LIBSBML_CAT_GENERAL_CONSISTENCY, + LIBSBML_SEV_ERROR, + "If the 'operationType' of a <csgSetOperator> is 'difference', it must have exactly two <csgNode> children.", + { "L3V1 Spatial V1 Section" + } + }, + + // 1223253 + { SpatialCSGSetOperatorComplementsMustReferenceChildren, + "The 'complement' attributes of a <csgSetOperator> must reference its children.", + LIBSBML_CAT_GENERAL_CONSISTENCY, + LIBSBML_SEV_ERROR, + "The attributes 'complementA' and 'complementB' of a <csgSetOperator> must reference its two <csgNode> children.", + { "L3V1 Spatial V1 Section" + } + }, + { SpatialSpatialSymbolReferenceAllowedCoreAttributes, "Core attributes allowed on <spatialSymbolReference>.", LIBSBML_CAT_GENERAL_CONSISTENCY, Modified: branches/libsbml-experimental/src/sbml/packages/spatial/validator/constraints/SpatialConsistencyConstraints.cpp =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/constraints/SpatialConsistencyConstraints.cpp 2019-11-22 21:34:06 UTC (rev 26180) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/constraints/SpatialConsistencyConstraints.cpp 2019-11-22 23:11:53 UTC (rev 26181) @@ -1421,6 +1421,55 @@ END_CONSTRAINT +// 1223252 +START_CONSTRAINT(SpatialCSGSetOperatorDifferenceMustHaveTwoChildren, CSGSetOperator, setop) +{ + bool fail = false; + pre(setop.getOperationType() == SPATIAL_SETOPERATION_DIFFERENCE); + unsigned int nchildren = setop.getNumCSGNodes(); + if (nchildren != 2) { + stringstream ss_msg; + ss_msg << "A <csgSetOperator>"; + if (setop.isSetId()) + { + ss_msg << " with id '" << setop.getId() << "'"; + } + ss_msg << " has a 'spatial:operationType' attribute of 'difference', but has "; + ss_msg << nchildren << " children."; + msg = ss_msg.str(); + + fail = true; + } + inv(fail == false); +} +END_CONSTRAINT + + +// 1223253 +START_CONSTRAINT(SpatialCSGSetOperatorComplementsMustReferenceChildren, CSGSetOperator, setop) +{ + pre(setop.getOperationType() == SPATIAL_SETOPERATION_DIFFERENCE); + pre(setop.getNumCSGNodes()==2); + pre(setop.isSetComplementA()); + pre(setop.isSetComplementB()); + string child1 = setop.getCSGNode(0)->getId(); + string child2 = setop.getCSGNode(1)->getId(); + string compA = setop.getComplementA(); + string compB = setop.getComplementB(); + pre(!((child1 == compA && child2 == compB) || (child1 == compB && child2 == compA))); + msg = "A <csgSetOperator>"; + if (setop.isSetId()) { + msg += " with the id '" + setop.getId() + "'"; + } + msg += " has as 'complementA' value of '"; + msg += compA + "', and a 'complementB' value of '" + compB; + msg += "', which are not the two IDs of its two children: '"; + msg += child1 + "' and '" + child2 + "'."; + inv(false); +} +END_CONSTRAINT + + // 122__ //START_CONSTRAINT(Spatial, Class, class) //{ Modified: branches/libsbml-experimental/src/sbml/packages/spatial/validator/constraints/SpatialConsistencyConstraintsDeclared.cxx =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/constraints/SpatialConsistencyConstraintsDeclared.cxx 2019-11-22 21:34:06 UTC (rev 26180) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/constraints/SpatialConsistencyConstraintsDeclared.cxx 2019-11-22 23:11:53 UTC (rev 26181) @@ -85,6 +85,8 @@ addConstraint(new VConstraintSampledVolumeSpatialSampledVolumeMinLessThanMax(*this)); addConstraint(new VConstraintCSGPrimitiveSpatialCSGPrimitive3DShapes(*this)); addConstraint(new VConstraintCSGPrimitiveSpatialCSGPrimitive2DShapes(*this)); +addConstraint(new VConstraintCSGSetOperatorSpatialCSGSetOperatorDifferenceMustHaveTwoChildren(*this)); +addConstraint(new VConstraintCSGSetOperatorSpatialCSGSetOperatorComplementsMustReferenceChildren(*this)); //Constraints defined in their own class ('global constraints') addConstraint(new SpatialCompartmentMappingUnitSizesCheck(SpatialCompartmentMappingUnitSizesSum, *this)); Added: branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223252-fail-01-01.xml =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223252-fail-01-01.xml (rev 0) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223252-fail-01-01.xml 2019-11-22 23:11:53 UTC (rev 26181) @@ -0,0 +1,47 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sbml level="3" spatial:required="true" version="1" xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:spatial="http://www.sbml.org/sbml/level3/version1/spatial/version1"> + <model> + <spatial:geometry spatial:coordinateSystem="cartesian" spatial:id="geometry_1"> + <spatial:listOfCoordinateComponents> + <spatial:coordinateComponent spatial:id="coordinateComponent_1" spatial:type="cartesianX" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_1" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_2" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_2" spatial:type="cartesianY" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_3" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_4" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_3" spatial:type="cartesianZ" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_5" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_6" spatial:value="1"/> + </spatial:coordinateComponent> + </spatial:listOfCoordinateComponents> + <spatial:listOfDomainTypes> + <spatial:domainType spatial:id="domainType_1" spatial:spatialDimensions="3"/> + </spatial:listOfDomainTypes> + <spatial:listOfDomains> + <spatial:domain spatial:domainType="domainType_1" spatial:id="domain_1"> + <spatial:listOfInteriorPoints> + <spatial:interiorPoint spatial:coord1="0" spatial:coord2="0" spatial:coord3="0"/> + </spatial:listOfInteriorPoints> + </spatial:domain> + </spatial:listOfDomains> + <spatial:listOfGeometryDefinitions> + <spatial:csGeometry spatial:id="csGeometryDefinition_1" spatial:isActive="true"> + <spatial:listOfCSGObjects> + <spatial:csgObject spatial:domainType="domainType_1" spatial:id="csgObject_1" spatial:ordinal="0"> + <spatial:csgSetOperator spatial:operationType="difference" spatial:complementA="sphere1" spatial:complementB="cube1"> + <spatial:listOfCSGNodes> + <spatial:csgPrimitive spatial:id="sphere1" spatial:primitiveType="sphere"/> + <spatial:csgPrimitive spatial:id="cube1" spatial:primitiveType="cube"/> + <spatial:csgPrimitive spatial:id="cone1" spatial:primitiveType="cone"/> + </spatial:listOfCSGNodes> + </spatial:csgSetOperator> + </spatial:csgObject> + </spatial:listOfCSGObjects> + </spatial:csGeometry> + </spatial:listOfGeometryDefinitions> + </spatial:geometry> + </model> +</sbml> + Added: branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223252-fail-01-02.xml =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223252-fail-01-02.xml (rev 0) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223252-fail-01-02.xml 2019-11-22 23:11:53 UTC (rev 26181) @@ -0,0 +1,48 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sbml level="3" spatial:required="true" version="1" xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:spatial="http://www.sbml.org/sbml/level3/version1/spatial/version1"> + <model> + <spatial:geometry spatial:coordinateSystem="cartesian" spatial:id="geometry_1"> + <spatial:listOfCoordinateComponents> + <spatial:coordinateComponent spatial:id="coordinateComponent_1" spatial:type="cartesianX" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_1" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_2" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_2" spatial:type="cartesianY" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_3" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_4" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_3" spatial:type="cartesianZ" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_5" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_6" spatial:value="1"/> + </spatial:coordinateComponent> + </spatial:listOfCoordinateComponents> + <spatial:listOfDomainTypes> + <spatial:domainType spatial:id="domainType_1" spatial:spatialDimensions="3"/> + </spatial:listOfDomainTypes> + <spatial:listOfDomains> + <spatial:domain spatial:domainType="domainType_1" spatial:id="domain_1"> + <spatial:listOfInteriorPoints> + <spatial:interiorPoint spatial:coord1="0" spatial:coord2="0" spatial:coord3="0"/> + </spatial:listOfInteriorPoints> + </spatial:domain> + </spatial:listOfDomains> + <spatial:listOfGeometryDefinitions> + <spatial:csGeometry spatial:id="csGeometryDefinition_1" spatial:isActive="true"> + <spatial:listOfCSGObjects> + <spatial:csgObject spatial:domainType="domainType_1" spatial:id="csgObject_1" spatial:ordinal="0"> + <spatial:csgSetOperator spatial:operationType="difference" spatial:complementA="sphere1" spatial:complementB="cube1"> + <spatial:listOfCSGNodes> + <spatial:csgPrimitive spatial:id="sphere1" spatial:primitiveType="sphere"/> + <spatial:csgPrimitive spatial:id="cube1" spatial:primitiveType="cube"/> + <spatial:csgPrimitive spatial:id="cone1" spatial:primitiveType="cone"/> + <spatial:csgPrimitive spatial:id="cone2" spatial:primitiveType="cone"/> + </spatial:listOfCSGNodes> + </spatial:csgSetOperator> + </spatial:csgObject> + </spatial:listOfCSGObjects> + </spatial:csGeometry> + </spatial:listOfGeometryDefinitions> + </spatial:geometry> + </model> +</sbml> + Added: branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223252-fail-01-03.xml =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223252-fail-01-03.xml (rev 0) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223252-fail-01-03.xml 2019-11-22 23:11:53 UTC (rev 26181) @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sbml level="3" spatial:required="true" version="1" xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:spatial="http://www.sbml.org/sbml/level3/version1/spatial/version1"> + <model> + <spatial:geometry spatial:coordinateSystem="cartesian" spatial:id="geometry_1"> + <spatial:listOfCoordinateComponents> + <spatial:coordinateComponent spatial:id="coordinateComponent_1" spatial:type="cartesianX" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_1" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_2" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_2" spatial:type="cartesianY" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_3" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_4" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_3" spatial:type="cartesianZ" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_5" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_6" spatial:value="1"/> + </spatial:coordinateComponent> + </spatial:listOfCoordinateComponents> + <spatial:listOfDomainTypes> + <spatial:domainType spatial:id="domainType_1" spatial:spatialDimensions="3"/> + </spatial:listOfDomainTypes> + <spatial:listOfDomains> + <spatial:domain spatial:domainType="domainType_1" spatial:id="domain_1"> + <spatial:listOfInteriorPoints> + <spatial:interiorPoint spatial:coord1="0" spatial:coord2="0" spatial:coord3="0"/> + </spatial:listOfInteriorPoints> + </spatial:domain> + </spatial:listOfDomains> + <spatial:listOfGeometryDefinitions> + <spatial:csGeometry spatial:id="csGeometryDefinition_1" spatial:isActive="true"> + <spatial:listOfCSGObjects> + <spatial:csgObject spatial:domainType="domainType_1" spatial:id="csgObject_1" spatial:ordinal="0"> + <spatial:csgSetOperator spatial:operationType="difference" spatial:complementA="sphere1" spatial:complementB="sphere1"> + <spatial:listOfCSGNodes> + <spatial:csgPrimitive spatial:id="sphere1" spatial:primitiveType="sphere"/> + </spatial:listOfCSGNodes> + </spatial:csgSetOperator> + </spatial:csgObject> + </spatial:listOfCSGObjects> + </spatial:csGeometry> + </spatial:listOfGeometryDefinitions> + </spatial:geometry> + </model> +</sbml> + Added: branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223252-pass-00-01.xml =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223252-pass-00-01.xml (rev 0) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223252-pass-00-01.xml 2019-11-22 23:11:53 UTC (rev 26181) @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sbml level="3" spatial:required="true" version="1" xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:spatial="http://www.sbml.org/sbml/level3/version1/spatial/version1"> + <model> + <spatial:geometry spatial:coordinateSystem="cartesian" spatial:id="geometry_1"> + <spatial:listOfCoordinateComponents> + <spatial:coordinateComponent spatial:id="coordinateComponent_1" spatial:type="cartesianX" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_1" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_2" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_2" spatial:type="cartesianY" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_3" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_4" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_3" spatial:type="cartesianZ" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_5" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_6" spatial:value="1"/> + </spatial:coordinateComponent> + </spatial:listOfCoordinateComponents> + <spatial:listOfDomainTypes> + <spatial:domainType spatial:id="domainType_1" spatial:spatialDimensions="3"/> + </spatial:listOfDomainTypes> + <spatial:listOfDomains> + <spatial:domain spatial:domainType="domainType_1" spatial:id="domain_1"> + <spatial:listOfInteriorPoints> + <spatial:interiorPoint spatial:coord1="0" spatial:coord2="0" spatial:coord3="0"/> + </spatial:listOfInteriorPoints> + </spatial:domain> + </spatial:listOfDomains> + <spatial:listOfGeometryDefinitions> + <spatial:csGeometry spatial:id="csGeometryDefinition_1" spatial:isActive="true"> + <spatial:listOfCSGObjects> + <spatial:csgObject spatial:domainType="domainType_1" spatial:id="csgObject_1" spatial:ordinal="0"> + <spatial:csgSetOperator spatial:operationType="difference" spatial:complementA="sphere1" spatial:complementB="cube1"> + <spatial:listOfCSGNodes> + <spatial:csgPrimitive spatial:id="sphere1" spatial:primitiveType="sphere"/> + <spatial:csgPrimitive spatial:id="cube1" spatial:primitiveType="cube"/> + </spatial:listOfCSGNodes> + </spatial:csgSetOperator> + </spatial:csgObject> + </spatial:listOfCSGObjects> + </spatial:csGeometry> + </spatial:listOfGeometryDefinitions> + </spatial:geometry> + </model> +</sbml> + Added: branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223253-fail-01-01.xml =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223253-fail-01-01.xml (rev 0) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223253-fail-01-01.xml 2019-11-22 23:11:53 UTC (rev 26181) @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sbml level="3" spatial:required="true" version="1" xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:spatial="http://www.sbml.org/sbml/level3/version1/spatial/version1"> + <model> + <spatial:geometry spatial:coordinateSystem="cartesian" spatial:id="geometry_1"> + <spatial:listOfCoordinateComponents> + <spatial:coordinateComponent spatial:id="coordinateComponent_1" spatial:type="cartesianX" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_1" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_2" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_2" spatial:type="cartesianY" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_3" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_4" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_3" spatial:type="cartesianZ" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_5" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_6" spatial:value="1"/> + </spatial:coordinateComponent> + </spatial:listOfCoordinateComponents> + <spatial:listOfDomainTypes> + <spatial:domainType spatial:id="domainType_1" spatial:spatialDimensions="3"/> + </spatial:listOfDomainTypes> + <spatial:listOfDomains> + <spatial:domain spatial:domainType="domainType_1" spatial:id="domain_1"> + <spatial:listOfInteriorPoints> + <spatial:interiorPoint spatial:coord1="0" spatial:coord2="0" spatial:coord3="0"/> + </spatial:listOfInteriorPoints> + </spatial:domain> + </spatial:listOfDomains> + <spatial:listOfGeometryDefinitions> + <spatial:csGeometry spatial:id="csGeometryDefinition_1" spatial:isActive="true"> + <spatial:listOfCSGObjects> + <spatial:csgObject spatial:domainType="domainType_1" spatial:id="csgObject_1" spatial:ordinal="0"> + <spatial:csgSetOperator spatial:operationType="difference" spatial:complementA="sphere1" spatial:complementB="sphere1"> + <spatial:listOfCSGNodes> + <spatial:csgPrimitive spatial:id="sphere1" spatial:primitiveType="sphere"/> + <spatial:csgPrimitive spatial:id="cube1" spatial:primitiveType="cube"/> + </spatial:listOfCSGNodes> + </spatial:csgSetOperator> + </spatial:csgObject> + </spatial:listOfCSGObjects> + </spatial:csGeometry> + </spatial:listOfGeometryDefinitions> + </spatial:geometry> + </model> +</sbml> + Added: branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223253-fail-01-02.xml =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223253-fail-01-02.xml (rev 0) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223253-fail-01-02.xml 2019-11-22 23:11:53 UTC (rev 26181) @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sbml level="3" spatial:required="true" version="1" xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:spatial="http://www.sbml.org/sbml/level3/version1/spatial/version1"> + <model> + <spatial:geometry spatial:coordinateSystem="cartesian" spatial:id="geometry_1"> + <spatial:listOfCoordinateComponents> + <spatial:coordinateComponent spatial:id="coordinateComponent_1" spatial:type="cartesianX" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_1" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_2" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_2" spatial:type="cartesianY" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_3" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_4" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_3" spatial:type="cartesianZ" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_5" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_6" spatial:value="1"/> + </spatial:coordinateComponent> + </spatial:listOfCoordinateComponents> + <spatial:listOfDomainTypes> + <spatial:domainType spatial:id="domainType_1" spatial:spatialDimensions="3"/> + </spatial:listOfDomainTypes> + <spatial:listOfDomains> + <spatial:domain spatial:domainType="domainType_1" spatial:id="domain_1"> + <spatial:listOfInteriorPoints> + <spatial:interiorPoint spatial:coord1="0" spatial:coord2="0" spatial:coord3="0"/> + </spatial:listOfInteriorPoints> + </spatial:domain> + </spatial:listOfDomains> + <spatial:listOfGeometryDefinitions> + <spatial:csGeometry spatial:id="csGeometryDefinition_1" spatial:isActive="true"> + <spatial:listOfCSGObjects> + <spatial:csgObject spatial:domainType="domainType_1" spatial:id="csgObject_1" spatial:ordinal="0"> + <spatial:csgSetOperator spatial:operationType="difference" spatial:complementA="cube1" spatial:complementB="cube1"> + <spatial:listOfCSGNodes> + <spatial:csgPrimitive spatial:id="sphere1" spatial:primitiveType="sphere"/> + <spatial:csgPrimitive spatial:id="cube1" spatial:primitiveType="cube"/> + </spatial:listOfCSGNodes> + </spatial:csgSetOperator> + </spatial:csgObject> + </spatial:listOfCSGObjects> + </spatial:csGeometry> + </spatial:listOfGeometryDefinitions> + </spatial:geometry> + </model> +</sbml> + Added: branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223253-fail-01-03.xml =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223253-fail-01-03.xml (rev 0) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223253-fail-01-03.xml 2019-11-22 23:11:53 UTC (rev 26181) @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sbml level="3" spatial:required="true" version="1" xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:spatial="http://www.sbml.org/sbml/level3/version1/spatial/version1"> + <model> + <spatial:geometry spatial:coordinateSystem="cartesian" spatial:id="geometry_1"> + <spatial:listOfCoordinateComponents> + <spatial:coordinateComponent spatial:id="coordinateComponent_1" spatial:type="cartesianX" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_1" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_2" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_2" spatial:type="cartesianY" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_3" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_4" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_3" spatial:type="cartesianZ" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_5" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_6" spatial:value="1"/> + </spatial:coordinateComponent> + </spatial:listOfCoordinateComponents> + <spatial:listOfDomainTypes> + <spatial:domainType spatial:id="domainType_1" spatial:spatialDimensions="3"/> + </spatial:listOfDomainTypes> + <spatial:listOfDomains> + <spatial:domain spatial:domainType="domainType_1" spatial:id="domain_1"> + <spatial:listOfInteriorPoints> + <spatial:interiorPoint spatial:coord1="0" spatial:coord2="0" spatial:coord3="0"/> + </spatial:listOfInteriorPoints> + </spatial:domain> + </spatial:listOfDomains> + <spatial:listOfGeometryDefinitions> + <spatial:csGeometry spatial:id="csGeometryDefinition_1" spatial:isActive="true"> + <spatial:listOfCSGObjects> + <spatial:csgObject spatial:domainType="domainType_1" spatial:id="csgObject_1" spatial:ordinal="0"> + <spatial:csgSetOperator spatial:operationType="difference" spatial:complementA="cube1" spatial:complementB="domainType_1"> + <spatial:listOfCSGNodes> + <spatial:csgPrimitive spatial:id="sphere1" spatial:primitiveType="sphere"/> + <spatial:csgPrimitive spatial:id="cube1" spatial:primitiveType="cube"/> + </spatial:listOfCSGNodes> + </spatial:csgSetOperator> + </spatial:csgObject> + </spatial:listOfCSGObjects> + </spatial:csGeometry> + </spatial:listOfGeometryDefinitions> + </spatial:geometry> + </model> +</sbml> + Added: branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223253-pass-00-01.xml =================================================================== --- branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223253-pass-00-01.xml (rev 0) +++ branches/libsbml-experimental/src/sbml/packages/spatial/validator/test/test-data/general-constraints/1223253-pass-00-01.xml 2019-11-22 23:11:53 UTC (rev 26181) @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<sbml level="3" spatial:required="true" version="1" xmlns="http://www.sbml.org/sbml/level3/version1/core" xmlns:spatial="http://www.sbml.org/sbml/level3/version1/spatial/version1"> + <model> + <spatial:geometry spatial:coordinateSystem="cartesian" spatial:id="geometry_1"> + <spatial:listOfCoordinateComponents> + <spatial:coordinateComponent spatial:id="coordinateComponent_1" spatial:type="cartesianX" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_1" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_2" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_2" spatial:type="cartesianY" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_3" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_4" spatial:value="1"/> + </spatial:coordinateComponent> + <spatial:coordinateComponent spatial:id="coordinateComponent_3" spatial:type="cartesianZ" spatial:unit="dimensionless"> + <spatial:boundaryMin spatial:id="boundary_5" spatial:value="0"/> + <spatial:boundaryMax spatial:id="boundary_6" spatial:value="1"/> + </spatial:coordinateComponent> + </spatial:listOfCoordinateComponents> + <spatial:listOfDomainTypes> + <spatial:domainType spatial:id="domainType_1" spatial:spatialDimensions="3"/> + </spatial:listOfDomainTypes> + <spatial:listOfDomains> + <spatial:domain spatial:domainType="domainType_1" spatial:id="domain_1"> + <spatial:listOfInteriorPoints> + <spatial:interiorPoint spatial:coord1="0" spatial:coord2="0" spatial:coord3="0"/> + </spatial:listOfInteriorPoints> + </spatial:domain> + </spatial:listOfDomains> + <spatial:listOfGeometryDefinitions> + <spatial:csGeometry spatial:id="csGeometryDefinition_1" spatial:isActive="true"> + <spatial:listOfCSGObjects> + <spatial:csgObject spatial:domainType="domainType_1" spatial:id="csgObject_1" spatial:ordinal="0"> + <spatial:csgSetOperator spatial:operationType="difference" spatial:complementA="sphere1" spatial:complementB="cube1"> + <spatial:listOfCSGNodes> + <spatial:csgPrimitive spatial:id="sphere1" spatial:primitiveType="sphere"/> + <spatial:csgPrimitive spatial:id="cube1" spatial:primitiveType="cube"/> + </spatial:listOfCSGNodes> + </spatial:csgSetOperator> + </spatial:csgObject> + </spatial:listOfCSGObjects> + </spatial:csGeometry> + </spatial:listOfGeometryDefinitions> + </spatial:geometry> + </model> +</sbml> + |