diff --git a/plugins/org.etsi.mts.tdl.constraints/epsilon/constraints/tdl-generated-ETSI-ES-203-119-4-V1.4.1-fixed.evl b/plugins/org.etsi.mts.tdl.constraints/epsilon/constraints/tdl-generated-ETSI-ES-203-119-4-V1.4.1-fixed.evl new file mode 100644 index 0000000000000000000000000000000000000000..ca7f604e164a7313ec156b34989feb124e4ce76e --- /dev/null +++ b/plugins/org.etsi.mts.tdl.constraints/epsilon/constraints/tdl-generated-ETSI-ES-203-119-4-V1.4.1-fixed.evl @@ -0,0 +1,352 @@ +import "../library/common.eol"; +import "../library/helper.eol"; +import "../library/debug.eol"; + +context Entity { + //[There are no constraints specified.] +} + +context Event { + //[There are no constraints specified.] +} + +context PICS { + //[There are no constraints specified.] +} + +context StructuredTestObjective { + //[There are no constraints specified.] +} + +context PICSReference { + //Combining Multiple 'PICSReference's + constraint MultiplePICS { + check: self.container().picsReference->size() < 2 + or self.container().picsReference->forAll(p | + self.container().picsReference->at(0) = p + or (not p.comment->isEmpty() + and (p.comment->first().body = 'and' + or p.comment->first().body = 'or'))) + message: self.prefix() + + "A 'Comment' with body containing an 'and' or 'or' shall be attached to the 'PICSReference' as a Boolean operand if there are two or more 'PICSReference's and it is not the first 'PICSReference'." + } + +} + +context InitialConditions { + //[There are no constraints specified.] +} + +context ExpectedBehaviour { + //[There are no constraints specified.] +} + +context FinalConditions { + //[There are no constraints specified.] +} + +context EventSequence { + //[There are no constraints specified.] +} + +context RepeatedEventSequence { + //Either 'repetitions', or 'interval' or neither shall be specified + constraint RepetitionOrInterval { + check: self.repetitions.oclIsUndefined() or self.interval.oclIsUndefined() + message: self.prefix() + + "At most one of the optional properties 'repetitions' or 'interval' shall be defined." + } + + //The 'repetitions' 'Value' shall be countable and positive + constraint RepetitionCount { + check: true //This constraint cannot be expressed in OCL + message: self.prefix() + + "The expression assigned to the 'repetitions' property shall evaluate to a positive and countable 'Value'." + } + + //The 'interval' 'Value' shall be countable and positive + constraint RepetitionInterval { + check: true //This constraint cannot be expressed in OCL + message: self.prefix() + + "The expression assigned to the 'repetitions' property shall evaluate to a positive and countable 'Value'" + } + +} + +context EventOccurrence { + //Combining Multiple 'EventOccurrence's + constraint MultipleEventOccurrences { + check: self.container().oclIsTypeOf(EventSpecificationTemplate) + or self.container().events->size() < 2 + or self.container().events->forAll(o | + self.container().events->at(0) = o + or (not o.comment->isEmpty() + and (o.comment->first().body = 'and' + or o.comment->first().body = 'or'))) + message: self.prefix() + + "A 'Comment' with body containing an 'and' or 'or' shall be attached to the 'EventOccurrence' as an operand if there are two or more 'EventOccurrence's and it is not the first 'EventOccurrence'." + } + +} + +context EventOccurrenceSpecification { + //[There are no constraints specified.] +} + +context EntityReference { + //An 'Entity' or a 'ComponentInstance' shall be referenced. + constraint EntityOrComponentInstance { + check: (not self.entity.oclIsUndefined() and self.component.oclIsUndefined()) + or (self.entity.oclIsUndefined() and not self.component.oclIsUndefined()) + message: self.prefix() + + "There shall be a reference to an 'Entity' or a 'ComponentInstance' but not both." + } + +} + +context EventReference { + //[There are no constraints specified.] +} + +context Value { + //[There are no constraints specified.] +} + +context LiteralValue { + //[There are no constraints specified.] +} + +context Content { + //No nested 'Content's if 'Value' is provided + constraint ContentOrValue { + check: self.content->isEmpty() or self.value.oclIsUndefined() + message: self.prefix() + + "Either nested 'Content's or 'Value' may be specified within 'Content', but not both." + } + +} + +context LiteralValueReference { + //Referenced 'LiteralValue' visibility + constraint VisibleValue { + check: self.getTestObjective().contains(self.content) + and self.getTestObjective().indexOf(self.content) < self.getTestObjective().indexOf(self) + message: self.prefix() + + "Only 'LiteralValue's defined within previous 'EventOccurrence's of the containing 'StructuredTestObjective' may be referenced." + } + +} + +context ContentReference { + //Referenced 'Content' visibility + constraint VisibleContent { + check: self.getTestObjective().contains(self.content) + and self.getTestObjective().indexOf(self.content) < self.getTestObjective().indexOf(self) + message: self.prefix() + + "Only 'Content' defined within previous 'EventOccurrence's of the containing 'StructuredTestObjective' may be referenced." + } + +} + +context DataReference { + //'DataUse' restrictions within 'DataReference' + constraint DataReferenceContents { + check: self.content.oclIsTypeOf(StaticDataUse) + and self.content.argument->forAll(a | a.dataUse.oclIsKindOf(StaticDataUse)) + and self.content.argument->closure(a | a.dataUse.argument)->forAll(a|a.dataUse.oclIsKindOf(StaticDataUse)) + message: self.prefix() + + "Only 'StaticDataUse' may be used directly or indirectly in 'ParameterBinding's of the 'StaticDataUse' within a 'DataReference'." + } + + constraint DataReferenceReduction { + check: self.content.reduction->isEmpty() + message: self.prefix() + + "No 'reduction' within 'DataReference', The 'reduction' property of 'StaticDataUse' inherited from 'DataUse' shall not be used within a 'DataReference'." + } + //TODO: this is not processed correctly -> update spec or extractor? + // -> manually fixed above for now + //[and self.content.argument->forAll(a | a.dataUse.oclIsKindOf(StaticDataUse))] + //[and self.content.argument->closure(a |] + //[a.dataUse.argument)->forAll(a|a.dataUse.oclIsKindOf(StaticDataUse))] + //[No 'reduction' within 'DataReference', The 'reduction' property of 'StaticDataUse' inherited from 'DataUse' shall not be used within a 'DataReference'., inv: DataReferenceReduction:] + //[self.content.reduction->isEmpty()] +} + +context EventSpecificationTemplate { + //[There are no constraints specified.] +} + +context EventTemplateOccurrence { + //'EntityReference' of referenced 'EventSpecificationTemplate' + constraint EntityTemplateOccurrenceConsistency { + check: self.entityBinding->forAll(b | + (not b.templateEntity.entity.oclIsUndefined() + and (b.templateEntity.entity = + self.eventTemplate.eventSpecification.entityReference.entity)) + or (not b.templateEntity.component.oclIsUndefined() + and (b.templateEntity.component = + self.eventTemplate.eventSpecification.entityReference.component) + or self.eventTemplate.eventSpecification.oppositeEntityReference->exists(e | + (not b.templateEntity.entity.oclIsUndefined() + and (e.entity = b.templateEntity.entity)) + or (not b.templateEntity.component.oclIsUndefined() + and (e.component = b.templateEntity.component))))) + message: self.prefix() + + "If 'EntityBinding's are provided, the 'Entity's or 'ComponentInstance's referenced in the 'templateEntity' properties shall also be referenced by one of the 'EntityReferences' in the 'EventOccurrenceSpecification' of the 'EventSpecificationTemplate' referenced in the 'EventTemplateOccurrence'." + } + +} + +context EntityBinding { + //[There are no constraints specified.] +} + +//TODO: Mismatch TestObjectiveVariant in Ecore vs StructuredTestObjectiveVariant in Part 4 +context TestObjectiveVariant { + //[There are no constraints specified.] +} + +context Variants { + //[There are no constraints specified.] +} + +context VariantBinding { + //Referenced 'Value' of 'VariantBinding' + constraint VariantBindingValues { + check: self.value.oclIsTypeOf(LiteralValueReference) implies + self.value.oclAsType(LiteralValueReference).content.getTestObjective() = self.getTestObjective() + and +// or //TODO: this may need to be fixed in the spec + self.value.oclIsKindOf(ContentReference) implies + self.value.oclAsType(ContentReference).content.getTestObjective() = self.getTestObjective() + message: self.prefix() + + "If the 'value' property references a 'LiteralValue' or 'Content' element, the referenced element shall be contained in the 'StructuredTestObjective' containing the 'VariantBinding'." + } + +} + +//TODO: why is everything appearing twice? from graphical syntax? +context Entity { + //[There are no constraints specified.] +} + +context Event { + //[There are no constraints specified.] +} + +context PICS { + //[There are no constraints specified.] +} + +context Comment { + //[Default comment label, The Qualifier label only applies to 'Comment's that do not match the conditions for any of the other qualifier labels.] +} + +context StructuredTestObjective { + //[Spaces in the 'name' of an 'Element' and the 'body' of a 'Comment' , A 'name' of an 'Element' or a 'body' of a 'Comment' shall be enclosed in single or double quotes when the corresponding 'Element' or 'Comment' is contained within a 'PICSReference' or an 'EventSequence'.] +} + +context EventSequence { + //[There are no constraints specified.] +} + +context RepeatedEventSequence { + //[There are no constraints specified.] +} + +context EventOccurrence { + //[There are no constraints specified.] +} + +context EventOccurrenceSpecification { + //[There are no constraints specified.] +} + +context EntityReference { + //[There are no constraints specified.] +} + +context EventReference { + //[There are no constraints specified.] +} + +context Value { + //[There are no constraints specified.] +} + +context LiteralValue { + //[There are no constraints specified.] +} + +context Content { + //[There are no constraints specified.] +} + +context LiteralValueReference { + //[There are no constraints specified.] +} + +context ContentReference { + //[There are no constraints specified.] +} + +context DataReference { + //[There are no constraints specified.] +} + +context StaticDataUse { + //[There are no constraints specified.] +} + +context AnyValue { + //[There are no constraints specified.] +} + +context AnyValueOrOmit { + //[There are no constraints specified.] +} + +context OmitValue { + //[There are no constraints specified.] +} + +context DataInstanceUse { + //[There are no constraints specified.] +} + +context ParameterBinding { + //[There are no constraints specified.] +} + +context TimeLabel { + //[There are no constraints specified.] +} + +context TimeConstraint { + //[There are no constraints specified.] +} + +context EventSpecificationTemplate { + //[There are no constraints specified.] +} + +context EventTemplateOccurrence { + //[There are no constraints specified.] +} + +context EntityBinding { + //[There are no constraints specified.] +} + +//TODO: Mismatch TestObjectiveVariant in Ecore vs StructuredTestObjectiveVariant in Part 4 +context TestObjectiveVariant { + //[There are no constraints specified.] +} + +context Variants { + //[There are no constraints specified.] +} + +context VariantBinding { + //[There are no constraints specified.] +} diff --git a/plugins/org.etsi.mts.tdl.constraints/epsilon/constraints/tdl-generated-ETSI-ES-203-119-7-V1.2.1-fixed.evl b/plugins/org.etsi.mts.tdl.constraints/epsilon/constraints/tdl-generated-ETSI-ES-203-119-7-V1.2.1-fixed.evl new file mode 100644 index 0000000000000000000000000000000000000000..7c52d6964a35fb9a7961138f38a812ef011469c1 --- /dev/null +++ b/plugins/org.etsi.mts.tdl.constraints/epsilon/constraints/tdl-generated-ETSI-ES-203-119-7-V1.2.1-fixed.evl @@ -0,0 +1,69 @@ +import "../library/common.eol"; +import "../library/helper.eol"; +import "../library/debug.eol"; + +context ExtendedTestConfiguration { + //[There are no constraints specified.] +} + +context TestConfigurationInstance { + //[There are no constraints specified.] +} + +context TestConfigurationOperation { + //[There are no constraints specified.] +} + +context ComponentReference { + //[There are no constraints specified.] +} + +context ExtendedGateReference { + //[There are no constraints specified.] +} + +context ComponentMerge { + constraint NoSelfMerge { + check: not (self.component.component = self.target.component and + self.component.configuration = self.target.configuration) + message: self.prefix() + + "No self-merging, A 'ComponentInstance' shall not be merged with itself, i.e. the source and target 'ComponentInstance's specified by means of the 'ComponentReference's shall be different." + } + + constraint ComponentMergeType { + check: self.target.component.type.conformsTo(self.component.component.type) + message: self.prefix() + + "Conforming 'ComponentType's, The 'ComponentInstance' specified by means of the target 'ComponentReference's shall have a 'ComponentType' which conforms to the 'ComponentType' of the source 'ComponentReference'.." + } + + //TODO: this is not processed correctly -> update spec or extractor? + // -> manually fixed above for now + + //[No self-merging, A 'ComponentInstance' shall not be merged with itself, i.e. the source and target 'ComponentInstance's specified by means of the 'ComponentReference's shall be different. , inv: NoSelfMerge:] + //[not (self.component.component = self.target.component and] + //[self.component.configuration = self.target.configuration)] + //[Conforming 'ComponentType's, The 'ComponentInstance' specified by means of the target 'ComponentReference's shall have a 'ComponentType' which conforms to the 'ComponentType' of the source 'ComponentReference'. , inv: ComponentMergeType:] + //[self.target.component.type.conformsTo(self.component.component.type)] +} + +context ComponentAlias { + constraint AliasMandatoryName { + check: not self.name.oclIsUndefined() and self.name.size() > 0 + message: self.prefix() + + "Mandatory name, The 'name' property of the 'ComponentAlias' shall be set and it shall not be an empty String." + } + + //TODO: this is not processed correctly -> update spec or extractor? + // -> manually fixed above for now + + //[Mandatory name, The 'name' property of the 'ComponentAlias' shall be set and it shall not be an empty String., inv: AliasMandatoryName:] + //[not self.name.oclIsUndefined() and self.name.size() > 0] +} + +context ComponentHide { + //[There are no constraints specified.] +} + +context ReassignRole { + //[There are no constraints specified.] +}