public void testAttributeDerive() { AstOclConstraintFactory factory1 = AstOclConstraintFactoryManager.getInstance(umlModel.getOclPackage()); AstOclModelElementFactory factory2 = AstOclModelElementFactoryManager.getInstance(umlModel.getOclPackage()); IntegerLiteralExp exp1 = factory2.createIntegerLiteralExp(100, getClassifier("Integer")); ExpressionInOcl expInOcl = factory1.createExpressionInOcl("name", getClassifier("Film"), exp1); OclAttributeDeriveConstraint constraint = (OclAttributeDeriveConstraint)factory1.createAttributeDeriveConstraint("test.ocl", getClassifier("Film"), getClassifier("Film").lookupAttribute("rentalFee"), expInOcl); Assert.AreEqual("derive: 100", constraint.ToString()); OclConstraint c = getClassifier("Film").getDeriveConstraint("rentalFee"); Assert.AreEqual(constraint, c); CoreAttribute attrib = getClassifier("Film").lookupAttribute("rentalFee"); Assert.IsNotNull(attrib); Assert.AreEqual(expInOcl, attrib.getDerivedValueExpression()); Assert.IsTrue(attrib.isDerived()); getClassifier("Film").deleteAllConstraintsForSource("test.ocl"); Assert.IsNull(getClassifier("Film").getDeriveConstraint("rentalFee")); }
public void testPrePost() { AstOclConstraintFactory factory1 = AstOclConstraintFactoryManager.getInstance(umlModel.getOclPackage()); AstOclModelElementFactory factory2 = AstOclModelElementFactoryManager.getInstance(umlModel.getOclPackage()); BooleanLiteralExp exp1 = factory2.createBooleanLiteralExp(true, getClassifier("Boolean")); ExpressionInOcl expInOcl1 = factory1.createExpressionInOcl("name", getClassifier("Film"), exp1); BooleanLiteralExp exp2 = factory2.createBooleanLiteralExp(false, getClassifier("Boolean")); ExpressionInOcl expInOcl2 = factory1.createExpressionInOcl("name", getClassifier("Film"), exp2); List <object> parms = new List <object>(); parms.Add(getClassifier("Integer")); CoreOperation oper = getClassifier("Film").lookupOperation("getRentalFee", parms); OclPrePostConstraint constraint = (OclPrePostConstraint)factory1.createPrePostConstraint("test.ocl", oper); OclConstraint preConstraint = factory1.createPreConstraint(constraint, "test.ocl", "myPre", oper, expInOcl1); OclConstraint postConstraint = factory1.createPostConstraint(constraint, "test.ocl", "myPost", oper, expInOcl2); Assert.AreEqual("pre myPre: True", preConstraint.ToString()); Assert.AreEqual("post myPost: False", postConstraint.ToString()); Assert.IsTrue(oper.getSpecifications().Contains(constraint)); OclPrePostConstraint example = (OclPrePostConstraint)oper.getSpecifications()[0]; Assert.IsTrue(example.getPreConditions().Contains((OclPreConstraint)preConstraint)); Assert.IsTrue(example.getPostConditions().Contains((OclPostConstraint)postConstraint)); oper.deleteAllConstraintsForSource("test.ocl"); Assert.AreEqual(0, oper.getSpecifications().Count); }
private XWorkbook createXFormulas(string expressionText, XWorkbook xWorkbook) { PSWOclCompiler oclCompiler = new PSWOclCompiler(environment, tracker); List <object> nodes = oclCompiler.compileOclStream(expressionText, "", new StreamWriter(Console.OpenStandardOutput()), typeof(CSTContextDeclarationCS)); CSTOperationContextCS operationContextCS = ((CSTOperationContextCS)nodes[0]); var constraints = operationContextCS.getConstraintsNodesCS(); CSTOperationConstraintCS operationConstraint = (CSTOperationConstraintCS)constraints[0]; ExpressionInOcl expressionInOcl = operationConstraint.getExpressionInOCL(); OclExpressionImpl bodyExpression = (OclExpressionImpl)expressionInOcl.getBodyExpression(); XFormulaCreatorVisitor visitor = new XFormulaCreatorVisitor(); bodyExpression.accept(visitor); string formula = visitor.getFormula(); CoreClassifier classifier = (CoreClassifier)expressionInOcl.getContextualElement(); XDataTable targetTable = getTargetTable(xWorkbook, classifier); var operation = operationContextCS.getOperationNodeCS(); var name = operation.getOperationName(); XDataTableColumn targetColumn = targetTable.getDataTableColumns().FirstOrDefault(c => c.getName().Equals(name)); if (targetColumn == null) { throw new Exception("Coluna não encontrada!"); } XTextExp xtext = new XTextExp(); xtext.setTextSymbol(formula); targetColumn.setDataContent(xtext); MessageBox.Show(formula); var extraColumns = visitor.getExtraColumns(); foreach (KeyValuePair <string, string> pair in extraColumns) { string columnName = pair.Key; string columnFormula = pair.Value; targetTable = getTargetTable(xWorkbook, visitor.getCurrentClassifier()); var newTableColumn = new XDataTableColumn(); newTableColumn.setName(columnName); newTableColumn.setDataTable(targetTable); updateDataTable(targetTable, newTableColumn); XTextExp xColumnFormula = new XTextExp(); xColumnFormula.setTextSymbol(columnFormula); newTableColumn.setDataContent(xColumnFormula); } return(xWorkbook); }
public void testInvariant() { AstOclConstraintFactory factory1 = AstOclConstraintFactoryManager.getInstance(umlModel.getOclPackage()); AstOclModelElementFactory factory2 = AstOclModelElementFactoryManager.getInstance(umlModel.getOclPackage()); BooleanLiteralExp exp1 = factory2.createBooleanLiteralExp(true, getClassifier("Boolean")); ExpressionInOcl expInOcl = factory1.createExpressionInOcl("name", getClassifier("Film"), exp1); OclInvariantConstraint constraint = (OclInvariantConstraint)factory1.createInvariantConstraint("test.ocl", "myInvariant", getClassifier("Film"), expInOcl); Assert.AreEqual("inv myInvariant: True", constraint.ToString()); Assert.IsTrue(getClassifier("Film").getAllInvariants().Contains(constraint)); getClassifier("Film").deleteAllConstraintsForSource("test.ocl"); Assert.IsFalse(getClassifier("Film").getAllInvariants().Contains(constraint)); }
public void testBody() { AstOclConstraintFactory factory1 = AstOclConstraintFactoryManager.getInstance(umlModel.getOclPackage()); AstOclModelElementFactory factory2 = AstOclModelElementFactoryManager.getInstance(umlModel.getOclPackage()); RealLiteralExp exp1 = factory2.createRealLiteralExp("200.50", getClassifier("Real")); ExpressionInOcl expInOcl = factory1.createExpressionInOcl("name", getClassifier("Film"), exp1); List <object> parms = new List <object>(); parms.Add(getClassifier("Integer")); CoreOperation oper = getClassifier("Film").lookupOperation("getRentalFee", parms); OclBodyConstraint constraint = (OclBodyConstraint)factory1.createBodyConstraint("test.ocl", oper, expInOcl, null); Assert.AreEqual("body: 200.50", constraint.ToString()); Assert.AreEqual(constraint, oper.getBodyDefinition()); Assert.AreEqual(expInOcl, oper.getBodyDefinition().getExpression()); oper.deleteAllConstraintsForSource("test.ocl"); Assert.IsNull(oper.getBodyDefinition()); }
public OclConstraint createAssociationEndInitConstraint(string source, CoreClassifier contextualClassifier, CoreAssociationEnd assocEnd, ExpressionInOcl initialValue) { OclAssocEndInitConstraint constraint = new OclAssocEndInitConstraintImpl(); constraint.setSource(source); constraint.setContextualClassifier(contextualClassifier); constraint.setInitializedAssocEnd(assocEnd); constraint.setExpression(initialValue); contextualClassifier.addInitConstraint(assocEnd.getName(), constraint); // cachedObjects.add(constraint); return(constraint); }
public OclConstraint createModelElementDeriveConstraint(string source, CoreClassifier contextualClassifier, CoreModelElement element, ExpressionInOcl initialValue) { if (element.GetType() == typeof(CoreAttribute)) { return(createAttributeDeriveConstraint(source, contextualClassifier, (CoreAttribute)element, initialValue)); } else if (element.GetType() == typeof(CoreAssociationEnd)) { return(createAssociationEndDeriveConstraint(source, contextualClassifier, (CoreAssociationEnd)element, initialValue)); } else { return(null); } }
public OclPostConstraint createPostConstraint(OclPrePostConstraint owner, string source, string name, CoreOperation contextualOperation, ExpressionInOcl postCondition) { OclPostConstraint constraint = new OclPostConstraintImpl(); constraint.setSource(source); constraint.setContextualOperation(contextualOperation); constraint.setExpression(postCondition); constraint.setName(name); constraint.setOwner(owner); owner.addPostCondition(constraint); // cachedObjects.add(constraint); return(constraint); }
public OclBodyConstraint createBodyConstraint(string source, CoreOperation contextualOperation, ExpressionInOcl body, List <string> parameterNames) { OclBodyConstraint constraint = new OclBodyConstraintImpl(); constraint.setSource(source); constraint.setContextualOperation(contextualOperation); constraint.setExpression(body); constraint.setParameterNames(parameterNames); contextualOperation.setBodyDefinition(constraint); // cachedObjects.add(constraint); return(constraint); }
public OclConstraint createInvariantConstraint(string source, string name, CoreClassifier contextualClassifier, ExpressionInOcl initialValue) { OclInvariantConstraint constraint = new OclInvariantConstraintImpl(); constraint.setSource(source); constraint.setContextualClassifier(contextualClassifier); constraint.setExpression(initialValue); constraint.setName(name); contextualClassifier.addInvariantConstraint(name, constraint); return(constraint); }
public void setDerivedValueExpression(ExpressionInOcl expression) { this.derivedValue = expression; }
/** * @param expressionInOcl The expressionInOcl to set. */ public void setExpressionInOcl(ExpressionInOcl expressionInOcl) { this.expressionInOcl = expressionInOcl; }
public OclConstraint createModelElementInitConstraint(string source, CoreClassifier contextualClassifier, CoreModelElement element, ExpressionInOcl initialValue) { if (element is CoreAttributeImpl) { return(createAttributeInitConstraint(source, contextualClassifier, (CoreAttribute)element, initialValue)); } else if (element is CoreAssociationEndImpl) { return(createAssociationEndInitConstraint(source, contextualClassifier, (CoreAssociationEnd)element, initialValue)); } else { return(null); } }
public void setInitialValueExpression(ExpressionInOcl expression) { this.initialValue = expression; }
public OclConstraint createAttributeDeriveConstraint(string source, CoreClassifier contextualClassifier, CoreAttribute attribute, ExpressionInOcl initialValue) { OclAttributeDeriveConstraint constraint = new OclAttributeDeriveConstraintImpl(); constraint.setSource(source); constraint.setContextualClassifier(contextualClassifier); constraint.setDerivedAttribute(attribute); constraint.setExpression(initialValue); contextualClassifier.addDeriveConstraint(attribute.getName(), constraint); attribute.setDerivedValueExpression(initialValue); // cachedObjects.add(constraint); return(constraint); }
public void setSourceElements(ExpressionInOcl sourceElements) { this.sourceElements = sourceElements; }
/** * @param inOCL */ public void setAst(ExpressionInOcl expInOCL) { ast = expInOCL; }
public void setTargetElements(ExpressionInOcl targetElements) { this.targetElements = targetElements; }
/** * @param expression The expression to set. */ public void setExpression(ExpressionInOcl expression) { this.expression = expression; }
public CoreAttributeImpl() { initialValue = null; derivedValue = null; }