当前位置: 首页>>代码示例>>Java>>正文


Java Project.attribute方法代码示例

本文整理汇总了Java中net.ssehub.easy.varModel.model.Project.attribute方法的典型用法代码示例。如果您正苦于以下问题:Java Project.attribute方法的具体用法?Java Project.attribute怎么用?Java Project.attribute使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在net.ssehub.easy.varModel.model.Project的用法示例。


在下文中一共展示了Project.attribute方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: testDeclarationWithAnnotationCopy

import net.ssehub.easy.varModel.model.Project; //导入方法依赖的package包/类
/**
     * Tests whether declarations can be copied. This method tests a declaration:
     * <ul>
     *   <li>Has an {@link Attribute}</li>
     *   <li>Simple data type (is already known)</li>
     *   <li>No default value</li>
     * </ul>
     */
    @Test
    public void testDeclarationWithAnnotationCopy() {
        Project original = new Project("testDeclarationWithAnnotationCopy");
        Attribute annotation = new Attribute("anno", StringType.TYPE, original, original);
        original.add(annotation);
        original.attribute(annotation);
        DecisionVariableDeclaration decl = new DecisionVariableDeclaration("decl", RealType.TYPE, original);
        original.add(decl);
//        decl.attribute(annotation);
        
        Project copiedProject = copyProject(original);
        AbstractVariable copiedAnnotation = (AbstractVariable) copiedProject.getElement(0);
        DecisionVariableDeclaration copieddecl = (DecisionVariableDeclaration) copiedProject.getElement(1);
        Map<AbstractVariable, IModelElement> mapping = new HashMap<AbstractVariable, IModelElement>();
        mapping.put(copiedAnnotation, copiedProject);
        mapping.put(copieddecl, copiedProject);
        assertDeclaration(decl, copieddecl, mapping);
    }
 
开发者ID:SSEHUB,项目名称:EASyProducer,代码行数:27,代码来源:ProjectCopyVisitorTest.java

示例2: testDeclarationWithDependingAnnotationCopy

import net.ssehub.easy.varModel.model.Project; //导入方法依赖的package包/类
/**
 * Tests whether declarations can be copied. This method tests a declaration:
 * <ul>
 *   <li>Has an {@link Attribute}, which is defined after the declaration</li>
 *   <li>Simple data type (is already known)</li>
 *   <li>No default value</li>
 * </ul>
 */
@Test
public void testDeclarationWithDependingAnnotationCopy() {
    Project original = new Project("testDeclarationWithDependingAnnotationCopy");
    Attribute annotation = new Attribute("anno", StringType.TYPE, original, original);
    DecisionVariableDeclaration decl = new DecisionVariableDeclaration("decl", RealType.TYPE, original);
    original.add(decl);
    original.add(annotation);
    original.attribute(annotation);
    
    Project copiedProject = copyProject(original);
    AbstractVariable copiedAnnotation = (AbstractVariable) copiedProject.getElement(1);
    DecisionVariableDeclaration copieddecl = (DecisionVariableDeclaration) copiedProject.getElement(0);
    Map<AbstractVariable, IModelElement> mapping = new HashMap<AbstractVariable, IModelElement>();
    mapping.put(copiedAnnotation, copiedProject);
    mapping.put(copieddecl, copiedProject);
    assertDeclaration(decl, copieddecl, mapping);
}
 
开发者ID:SSEHUB,项目名称:EASyProducer,代码行数:26,代码来源:ProjectCopyVisitorTest.java

示例3: testFreezeBlockKnownDeclarationAnnotationBut

import net.ssehub.easy.varModel.model.Project; //导入方法依赖的package包/类
/**
 * Tests copying a {@link FreezeBlock}. It tests:
 * <ul>
 *   <li>A known declaration</li>
 *   <li>But expression on annotation</li>
 * </ul>
 */
@Test
public void testFreezeBlockKnownDeclarationAnnotationBut() {
    Project orgProject = new Project("testFreezeBlockKnownDeclarationAnnotationBut");
    Attribute annoDecl = new Attribute("anno", BooleanType.TYPE, orgProject, orgProject);
    orgProject.add(annoDecl);
    orgProject.attribute(annoDecl);
    Compound cType = new Compound("CP", orgProject);
    DecisionVariableDeclaration slotDecl = new DecisionVariableDeclaration("slot", StringType.TYPE, cType);
    cType.add(slotDecl);
    orgProject.add(cType);
    DecisionVariableDeclaration decl = new DecisionVariableDeclaration("decl", cType, orgProject);
    orgProject.add(decl);
    
    DecisionVariableDeclaration itrDecl = new DecisionVariableDeclaration("i", BooleanType.TYPE, orgProject);
    AttributeVariable annotationAccess = new AttributeVariable(new Variable(itrDecl), annoDecl);
    ConstantValue trueExpr = new ConstantValue(BooleanValue.TRUE);
    OCLFeatureCall equality = new OCLFeatureCall(annotationAccess, OclKeyWords.EQUALS, trueExpr); 
    FreezeBlock freeze = new FreezeBlock(new IFreezable[] {decl}, itrDecl, equality, orgProject);
    orgProject.add(freeze);
    
    java.util.Set<Project> allCopiedProjects = new HashSet<Project>();
    Project copiedProject = copyProject(orgProject, allCopiedProjects);
    FreezeBlock copiedBlock = (FreezeBlock) copiedProject.getElement(3);
    assertFreezeBlock(freeze, copiedBlock, copiedProject, allCopiedProjects);
}
 
开发者ID:SSEHUB,项目名称:EASyProducer,代码行数:33,代码来源:ProjectCopyVisitorTest.java

示例4: testAssignBlockCopySimple

import net.ssehub.easy.varModel.model.Project; //导入方法依赖的package包/类
/**
 * Tests that simple {@link AttributeAssignment}s can be copied without outstanding dependencies.
 */
@Test
public void testAssignBlockCopySimple() {
    Project orgProject = new Project("testAssignBlockCopySimple");
    Attribute annoDecl = new Attribute("anno", BooleanType.TYPE, orgProject, orgProject);
    orgProject.add(annoDecl);
    orgProject.attribute(annoDecl);
    AttributeAssignment assignBlock = new AttributeAssignment(orgProject);
    ConstantValue constTrue = new ConstantValue(BooleanValue.TRUE);
    Assignment assignment = new Assignment(annoDecl.getName(), OclKeyWords.EQUALS, constTrue);
    assignBlock.add(assignment);
    DecisionVariableDeclaration decl = new DecisionVariableDeclaration("decl", StringType.TYPE, assignBlock);
    assignBlock.add(decl);
    orgProject.add(assignBlock);
    
    java.util.Set<Project> allCopiedProject = new HashSet<Project>();
    Project copy = copyProject(orgProject, allCopiedProject);
    AttributeAssignment copiedBlock = (AttributeAssignment) copy.getElement(1);
    assertAssignBlock(assignBlock, copiedBlock, copy, allCopiedProject);
}
 
开发者ID:SSEHUB,项目名称:EASyProducer,代码行数:23,代码来源:ProjectCopyVisitorTest.java

示例5: testAssignBlockCopyDependingOnNestedelement

import net.ssehub.easy.varModel.model.Project; //导入方法依赖的package包/类
/**
 * Tests that {@link AttributeAssignment}s can be copied, which are dependent on elements defined in itself.
 */
@Test
public void testAssignBlockCopyDependingOnNestedelement() {
    Project orgProject = new Project("testAssignBlockCopySimple");
    Attribute annoDecl = new Attribute("anno", BooleanType.TYPE, orgProject, orgProject);
    orgProject.add(annoDecl);
    orgProject.attribute(annoDecl);
    AttributeAssignment assignBlock = new AttributeAssignment(orgProject);
    DecisionVariableDeclaration decl = new DecisionVariableDeclaration("decl", BooleanType.TYPE, assignBlock);
    Variable var = new Variable(decl);
    Assignment assignment = new Assignment(annoDecl.getName(), OclKeyWords.EQUALS, var);
    assignBlock.add(assignment);
    assignBlock.add(decl);
    orgProject.add(assignBlock);
    
    java.util.Set<Project> allCopiedProject = new HashSet<Project>();
    Project copy = copyProject(orgProject, allCopiedProject);
    AttributeAssignment copiedBlock = (AttributeAssignment) copy.getElement(1);
    assertAssignBlock(assignBlock, copiedBlock, copy, allCopiedProject);
}
 
开发者ID:SSEHUB,项目名称:EASyProducer,代码行数:23,代码来源:ProjectCopyVisitorTest.java

示例6: testSimpleAnnotationCopy

import net.ssehub.easy.varModel.model.Project; //导入方法依赖的package包/类
/**
 * Tests whether Attribute can be copied. This method tests a declaration:
 * <ul>
 *   <li>Annotated to whole project</li>
 *   <li>Simple data type (is already known)</li>
 *   <li>No default value</li>
 * </ul>
 */
@Test
public void testSimpleAnnotationCopy() {
    Project original = new Project("testSimpleAnnotationCopy");
    IDatatype basisType = StringType.TYPE;
    Attribute decl = new Attribute("anno", basisType, original, original);
    original.add(decl);
    original.attribute(decl);
    
    Project copy = copyProject(original);
    AbstractVariable copieddecl = (AbstractVariable) copy.getElement(0);
    Map<AbstractVariable, IModelElement> copyMapping = new HashMap<AbstractVariable, IModelElement>();
    copyMapping.put(decl, copy);
    assertDeclaration(decl, copieddecl, copyMapping);
}
 
开发者ID:SSEHUB,项目名称:EASyProducer,代码行数:23,代码来源:ProjectCopyVisitorTest.java

示例7: testAssignProjectAnnotation

import net.ssehub.easy.varModel.model.Project; //导入方法依赖的package包/类
/**
 * Tests the correct assignment of annotations.
 * @throws ValueDoesNotMatchTypeException Must not occur otherwise there is a failure inside the
 * {@link ValueFactory}.
 * @throws CSTSemanticException Must not occur otherwise there is a failure inside the constraint syntax trees.
 */
@Test
public void testAssignProjectAnnotation() throws ValueDoesNotMatchTypeException, CSTSemanticException {
    // Creates a project with an annotation of the complete project
    Project project = new Project("testAssignProjectAnnotation");
    // Annotation for project
    Enum btType = new Enum("Bindingtime", project, "compile_time", "run_time");
    project.add(btType);
    Attribute btDecl = new Attribute("bindingtime", btType, project, project);
    Value compileValue = ValueFactory.createValue(btType, btType.getLiteral(0));
    ConstantValue constValCompiletime = new ConstantValue(compileValue);
    btDecl.setValue(constValCompiletime);
    project.add(btDecl);
    project.attribute(btDecl);
    // Two declarations, one nested, one not
    DecisionVariableDeclaration declA = new DecisionVariableDeclaration("intA", IntegerType.TYPE, project);
    project.add(declA);
    // Overwrite default annotation of second declaration
    AttributeAssignment assignBlock = new AttributeAssignment(project);
    Value runValue = ValueFactory.createValue(btType, btType.getLiteral(1));
    ConstantValue constValRuntime = new ConstantValue(runValue);
    Assignment assign = new Assignment(btDecl.getName(), OclKeyWords.ASSIGNMENT, constValRuntime);
    assignBlock.add(assign);
    DecisionVariableDeclaration declB = new DecisionVariableDeclaration("intB", IntegerType.TYPE, assignBlock);
    assignBlock.add(declB);
    project.add(assignBlock);
    
    ProjectTestUtilities.validateProject(project);
    Configuration config = new Configuration(project, true);
    
    // Test correct behavior:
    // intA.bindingtime = compile_time
    // intB.bindingtime = run_time
    assertAnnotationValue(compileValue, config.getDecision(declA));
    assertAnnotationValue(runValue, config.getDecision(declB));
}
 
开发者ID:SSEHUB,项目名称:EASyProducer,代码行数:42,代码来源:AssignmentResolverAnnotationTest.java

示例8: createProject

import net.ssehub.easy.varModel.model.Project; //导入方法依赖的package包/类
/**
 * Creates the main project.
 * 
 * @throws ModelManagementException in case of "resolving" the imported project fails
 */
private void createProject() throws ModelManagementException {
    project = new Project("test");
    project.setVersion(new Version(1, 0));
    ProjectImport imp = new ProjectImport("imported", null);
    imp.setResolved(impProject);
    project.addImport(imp);

    project.attribute(new net.ssehub.easy.varModel.model.Attribute("bindingTime", 
        IntegerType.TYPE, project, project)); // just to simplify the process
    
    pInt = new DecisionVariableDeclaration("pInt", IntegerType.TYPE, project);
    project.add(pInt);
    pString = new DecisionVariableDeclaration("pString", StringType.TYPE, project);
    project.add(pString);
    pReal = new DecisionVariableDeclaration("pReal", RealType.TYPE, project);
    project.add(pReal);
    pBoolean = new DecisionVariableDeclaration("pBoolean", BooleanType.TYPE, project);
    project.add(pBoolean);
    pBooleanUF = new DecisionVariableDeclaration("pBooleanUnfrozen", BooleanType.TYPE, project);
    project.add(pBooleanUF);
    enm = new net.ssehub.easy.varModel.model.datatypes.Enum("pEnumeration", impProject, 
        "val1", "val2", "val3");
    impProject.add(enm);
    pEnum = new DecisionVariableDeclaration("pEnum", enm, project);
    project.add(pEnum);
    
    comp = new Compound("pCompound", project);
    pcInt = new DecisionVariableDeclaration("pcInt", IntegerType.TYPE, comp);
    comp.add(pcInt);
    pcString = new DecisionVariableDeclaration("pcString", StringType.TYPE, comp);
    comp.add(pcString);
    project.add(comp);
    pComp = new DecisionVariableDeclaration("pComp", comp, project);
    project.add(pComp);
    seq = new Sequence("pCompoundSequence", comp, project);
    pCompSeq = new DecisionVariableDeclaration("pCompSeq", seq, project);
    project.add(pCompSeq);
}
 
开发者ID:SSEHUB,项目名称:EASyProducer,代码行数:44,代码来源:DefaultConfiguration.java

示例9: testRewritingOfFreezeBlockSelector

import net.ssehub.easy.varModel.model.Project; //导入方法依赖的package包/类
/**
 * Tests that the but condition of a FreezeBlock is created correctly after filtering declarations.
 * @throws ValueDoesNotMatchTypeException Must not occur, otherwise the {@link ValueFactory} or
 * {@link net.ssehub.easy.varModel.model.AbstractVariable#setValue(String)} are broken.
 */
@Test
public void testRewritingOfFreezeBlockSelector() throws ValueDoesNotMatchTypeException {
    // Create original project with two declaration, an annotation and a FreezeBlock
    Project p = new Project("testProjectFreezeBlockSelector");
    OrderedEnum btType = new OrderedEnum("BindingTime", p);
    btType.add(new EnumLiteral("Compiletime", 1, btType));
    btType.add(new EnumLiteral("runtime", 2, btType));
    p.add(btType);
    Attribute attr = new Attribute("bindingTime", btType, p, p);
    p.attribute(attr);
    p.add(attr);
    DecisionVariableDeclaration declA = new DecisionVariableDeclaration("declarationA", IntegerType.TYPE, p);
    declA.setValue(42);
    p.add(declA);
    DecisionVariableDeclaration declB = new DecisionVariableDeclaration("declarationB", IntegerType.TYPE, p);
    p.add(declB);
    declB.setValue(21);
    // Freeze one declaration
    DecisionVariableDeclaration itr = new DecisionVariableDeclaration("itr", AnyType.TYPE, null);
    AttributeVariable itrVar = new AttributeVariable(new Variable(itr), attr);
    ConstantValue btValue =  new ConstantValue(ValueFactory.createValue(btType, btType.getLiteral(1)));
    ConstraintSyntaxTree selectorCST = new OCLFeatureCall(itrVar, OclKeyWords.GREATER_EQUALS, btValue);
    FreezeBlock block = new FreezeBlock(new IFreezable[] {declA, declB}, itr , selectorCST, p);
    p.add(block);
    
    // Project should be valid
    ProjectTestUtilities.validateProject(p);

    // Filter one declaration
    ProjectRewriteVisitor rewriter = new ProjectRewriteVisitor(p, FilterType.ALL);
    rewriter.addModelCopyModifier(new DeclarationNameFilter(new String[] {declA.getName()}));
    p.accept(rewriter);
    
    ProjectTestUtilities.validateProject(p);
    assertProjectContainment(p, declA, true, 4);
    assertProjectContainment(p, declB, false, 4);
    StringWriter sWriter = new StringWriter();
    IVMLWriter iWriter = new IVMLWriter(sWriter);
    p.getElement(3).accept(iWriter);
    try {
        iWriter.flush();
    } catch (IOException e) {
        e.printStackTrace();
    }
    String freezeAsString = sWriter.toString();
    Assert.assertTrue("Annotation access in freeze block selector not handled correctly.",
        freezeAsString.contains(itr.getName() + IvmlKeyWords.ATTRIBUTE_ACCESS + attr.getName()));
    Assert.assertFalse("Invalid qualified name introduced to annotation access in freeze block selector.",
        freezeAsString.contains(p.getName() + IvmlKeyWords.NAMESPACE_SEPARATOR + itr.getName()));
}
 
开发者ID:SSEHUB,项目名称:EASyProducer,代码行数:56,代码来源:ProjectRewriteVisitorTest.java

示例10: setUp

import net.ssehub.easy.varModel.model.Project; //导入方法依赖的package包/类
/**
     * Creates the project which is needed during the tests.
     */
    @Before
    public void setUp() {
        project = new Project("Project");
        
        // Create Attribute
        attributeType = new Enum("attributeType", project, "STATE_1", "STATE_2");
        project.add(attributeType);
        Attribute attribute = new Attribute("attr", attributeType, project, project);
        project.add(attribute);
        project.attribute(attribute);
        
        // Create custom datatypes
        oEnumType = new OrderedEnum("orderedEnumType", project);
        EnumLiteral oLiteral1 = new EnumLiteral("Lit1", 10, oEnumType);
        EnumLiteral oLiteral2 = new EnumLiteral("Lit2", 30, oEnumType);
        oEnumType.add(oLiteral1);
        oEnumType.add(oLiteral2);
        project.add(oEnumType);
        cType1 = new Compound("C1", project);
        project.add(cType1);
        cType2 = new Compound("C2", project, cType1);
        project.add(cType2);
        cType3 = new Compound("C3", project);
        project.add(cType3);
        refType = new Reference("refType", cType1, project);
        project.add(refType);
        dType = new DerivedDatatype("MyInt", IntegerType.TYPE, project);
        project.add(dType);
        DecisionVariableDeclaration refDecl = new DecisionVariableDeclaration("cmpReference", refType, project);
        project.add(refDecl);
        setType = new Set("Integer_Set", IntegerType.TYPE, project);
        project.add(setType);
        DecisionVariableDeclaration setDecl = new DecisionVariableDeclaration("integerSet", setType, project);
        project.add(setDecl);
        seqType = new Sequence("Compound_Set", cType1, project);
        project.add(seqType);
        DecisionVariableDeclaration seqDecl = new DecisionVariableDeclaration("cmpSeq", setType, project);
        project.add(seqDecl);
        
//        StringWriter sWriter = new StringWriter();
//        IVMLWriter iWriter = new IVMLWriter(sWriter);
//        project.accept(iWriter);
//        sWriter.flush();
//        System.out.println(sWriter.toString());

        // Check whether the project could be used for testing
        IvmlValidationVisitor validator = new IvmlValidationVisitor();
        project.accept(validator);
        Assert.assertEquals(0, validator.getErrorCount());
    }
 
开发者ID:SSEHUB,项目名称:EASyProducer,代码行数:54,代码来源:DatatypeFinderTest.java

示例11: setUp

import net.ssehub.easy.varModel.model.Project; //导入方法依赖的package包/类
/**
 * Executed before a single test.
 * 
 * @throws CSTSemanticException shall not occur
 * @throws ValueDoesNotMatchTypeException shall not occur 
 */
@Before
public void setUp() throws CSTSemanticException, ValueDoesNotMatchTypeException  {
    prj = new Project("FreezeTest");

    // Annotation
    Enum bindingTime = new OrderedEnum("BindingTime", prj);
    bindingTime.add(new EnumLiteral("compile", 1, bindingTime));
    bindingTime.add(new EnumLiteral("link", 2, bindingTime));
    bindingTime.add(new EnumLiteral("monitor", 3, bindingTime));
    bindingTime.add(new EnumLiteral("enact", 4, bindingTime));
    prj.add(bindingTime);    
    Attribute attr = new Attribute("binding", bindingTime, prj, prj);
    prj.attribute(attr);
    prj.add(attr);
    
    // Basis compound
    param = new Compound("IntParameter", prj);
    param.add(new DecisionVariableDeclaration("defaultValue", IntegerType.TYPE, param));
    AttributeAssignment assng = new AttributeAssignment(param);
    assng.add(new Assignment(attr.getName(), OclKeyWords.ASSIGNMENT,
        new ConstantValue(ValueFactory.createValue(bindingTime, bindingTime.getLiteral(3)))));
    assng.add(new DecisionVariableDeclaration("value", IntegerType.TYPE, assng));
    param.add(assng);
    prj.add(param);
    myParam = new DecisionVariableDeclaration("myParam", param, prj);
    prj.add(myParam);

    // Sequence of basis compound
    Sequence paramSeq = new Sequence("", param, prj);
    myParamSeq = new DecisionVariableDeclaration("myParamSeq", paramSeq, prj);
    prj.add(myParamSeq);
    
    // Refined Compound
    refinedCType = new Compound("refinedCP", prj, param);
    AttributeAssignment assng2 = new AttributeAssignment(refinedCType);
    assng2.add(new Assignment(attr.getName(), OclKeyWords.ASSIGNMENT,
            new ConstantValue(ValueFactory.createValue(bindingTime, bindingTime.getLiteral(2)))));
    DecisionVariableDeclaration refinedValue1 = new DecisionVariableDeclaration("rVal1", IntegerType.TYPE, assng2);
    assng2.add(refinedValue1);
    AttributeAssignment assng3 = new AttributeAssignment(assng2);
    assng3.add(new Assignment(attr.getName(), OclKeyWords.ASSIGNMENT,
            new ConstantValue(ValueFactory.createValue(bindingTime, bindingTime.getLiteral(1)))));
    DecisionVariableDeclaration refinedValue2 = new DecisionVariableDeclaration("rVal2", IntegerType.TYPE, assng3);
    assng3.add(refinedValue2);
    assng2.add(assng3);
    refinedCType.add(assng2);
    prj.add(refinedCType);
    refCmpDecl = new DecisionVariableDeclaration("refinedCmp", refinedCType, prj);
    prj.add(refCmpDecl);
    
    // Freeze
    IFreezable[] freezables = new IFreezable[3];
    freezables[0] = myParam;
    freezables[1] = myParamSeq;
    freezables[2] = refCmpDecl;
    FreezeVariableType iterType = new FreezeVariableType(freezables, prj);
    DecisionVariableDeclaration freezeIter = new DecisionVariableDeclaration("b", iterType, prj);
    Variable iterEx = new AttributeVariable(new Variable(freezeIter), iterType.getAttribute(attr.getName()));
    ConstraintSyntaxTree selector = new OCLFeatureCall(iterEx, OclKeyWords.GREATER_EQUALS, 
        new ConstantValue(ValueFactory.createValue(bindingTime, bindingTime.getLiteral(2))));
    selector.inferDatatype();
    FreezeBlock freeze = new FreezeBlock(freezables, freezeIter, selector, prj);
    prj.add(freeze);
}
 
开发者ID:SSEHUB,项目名称:EASyProducer,代码行数:71,代码来源:FreezeTest.java

示例12: testAssignmentBlockInCompounds

import net.ssehub.easy.varModel.model.Project; //导入方法依赖的package包/类
/**
 * Tests whether assignment blocks nested in compounds will be resolved correctly.
 * @throws ValueDoesNotMatchTypeException Must not occur otherwise there is a failure inside the
 * {@link ValueFactory}.
 * @throws CSTSemanticException Must not occur otherwise there is a failure inside the constraint syntax trees.
 */
@Test
public void testAssignmentBlockInCompounds() throws ValueDoesNotMatchTypeException, CSTSemanticException {
    Project project = new Project("testAssignmentBlockInCompounds");
    // Annotation for project
    Enum btType = new Enum("Bindingtime", project, "compile_time", "run_time");
    project.add(btType);
    Attribute btDecl = new Attribute("bindingtime", btType, project, project);
    Value compileValue = ValueFactory.createValue(btType, btType.getLiteral(0));
    ConstantValue constValCompiletime = new ConstantValue(compileValue);
    btDecl.setValue(constValCompiletime);
    project.attribute(btDecl);
    project.add(btDecl);
    Compound cType = new Compound("Dimension", project);
    DecisionVariableDeclaration widthDecl = new DecisionVariableDeclaration("width", IntegerType.TYPE, cType);
    cType.add(widthDecl);
    // Overwrite default annotation of second declaration
    AttributeAssignment assignBlock = new AttributeAssignment(cType);
    Value runValue = ValueFactory.createValue(btType, btType.getLiteral(1));
    ConstantValue constValRuntime = new ConstantValue(runValue);
    Assignment assign = new Assignment(btDecl.getName(), OclKeyWords.ASSIGNMENT, constValRuntime);
    assignBlock.add(assign);
    DecisionVariableDeclaration heightDecl = new DecisionVariableDeclaration("height", IntegerType.TYPE,
        assignBlock);
    assignBlock.add(heightDecl);
    cType.add(assignBlock);
    project.add(cType);
    DecisionVariableDeclaration dimDecl = new DecisionVariableDeclaration("dimension", cType, project);
    project.add(dimDecl);
    
    ProjectTestUtilities.validateProject(project);
    Configuration config = new Configuration(project, true);
    
    // Test correct behavior:
    // dimension = compile_time
    // dimension.width = compile_time
    // dimension.height = run_time
    IDecisionVariable dimVar = config.getDecision(dimDecl);
    IDecisionVariable widthVar = null;
    IDecisionVariable heightVar = null;
    for (int i = 0; i < dimVar.getNestedElementsCount(); i++) {
        IDecisionVariable nestedVar = dimVar.getNestedElement(i);
        if (widthDecl == nestedVar.getDeclaration()) {
            widthVar = nestedVar;
        } else if (heightDecl == nestedVar.getDeclaration()) {
            heightVar = nestedVar;
        }
    }
    assertAnnotationValue(compileValue, dimVar);
    assertAnnotationValue(compileValue, widthVar);
    assertAnnotationValue(runValue, heightVar);
}
 
开发者ID:SSEHUB,项目名称:EASyProducer,代码行数:58,代码来源:AssignmentResolverAnnotationTest.java

示例13: testAssignmentBlockAndAssignmentStatements

import net.ssehub.easy.varModel.model.Project; //导入方法依赖的package包/类
/**
 * Tests whether assignment blocks and assignment statements are considered correctly.
 * A (re-)assigned value should overwrite the value from the assignment block.
 * @throws ValueDoesNotMatchTypeException Must not occur otherwise there is a failure inside the
 * {@link ValueFactory}.
 * @throws CSTSemanticException Must not occur otherwise there is a failure inside the constraint syntax trees.
 */
@Test
public void testAssignmentBlockAndAssignmentStatements() throws ValueDoesNotMatchTypeException,
    CSTSemanticException {
    
    Project project = new Project("testAssignmentBlockAndAssignmentStatements");
    // Annotation for project
    Enum btType = new Enum("Bindingtime", project, "compile_time", "run_time");
    project.add(btType);
    Attribute btDecl = new Attribute("bindingtime", btType, project, project);
    Value compileValue = ValueFactory.createValue(btType, btType.getLiteral(0));
    ConstantValue constValCompiletime = new ConstantValue(compileValue);
    btDecl.setValue(constValCompiletime);
    project.attribute(btDecl);
    project.add(btDecl);
    Compound cType = new Compound("Dimension", project);
    DecisionVariableDeclaration widthDecl = new DecisionVariableDeclaration("width", IntegerType.TYPE, cType);
    cType.add(widthDecl);
    // Overwrite default annotation of second declaration
    AttributeAssignment assignBlock = new AttributeAssignment(cType);
    Value runValue = ValueFactory.createValue(btType, btType.getLiteral(1));
    ConstantValue constValRuntime = new ConstantValue(runValue);
    Assignment assign = new Assignment(btDecl.getName(), OclKeyWords.ASSIGNMENT, constValRuntime);
    assignBlock.add(assign);
    DecisionVariableDeclaration heightDecl = new DecisionVariableDeclaration("height", IntegerType.TYPE,
            assignBlock);
    assignBlock.add(heightDecl);
    cType.add(assignBlock);
    project.add(cType);
    DecisionVariableDeclaration dimDecl1 = new DecisionVariableDeclaration("dimension1", cType, project);
    project.add(dimDecl1);
    DecisionVariableDeclaration dimDecl2 = new DecisionVariableDeclaration("dimension2", cType, project);
    project.add(dimDecl2);
    // Re assign value for second instance
    Constraint reassignment = new Constraint(project);
    AttributeVariable annotationVar = new AttributeVariable(new CompoundAccess(new Variable(dimDecl2),
        heightDecl.getName()), btDecl);
    OCLFeatureCall call = new OCLFeatureCall(annotationVar, OclKeyWords.ASSIGNMENT, constValCompiletime);
    reassignment.setConsSyntax(call);
    project.add(reassignment);
    
    ProjectTestUtilities.validateProject(project);
    Configuration config = new Configuration(project, true);
    
    // Test correct behavior:
    // dimension1 = compile_time
    // dimension1.width = compile_time
    // dimension1.height = run_time
    // dimension2 = compile_time
    // dimension2.width = compile_time
    // --> dimension2.height = compile_time <--
    IDecisionVariable dimVar1 = config.getDecision(dimDecl1);
    IDecisionVariable[] slots = getSlotsOfDimensionVariable(dimVar1, widthDecl, heightDecl);
    IDecisionVariable widthVar = slots[0];
    IDecisionVariable heightVar = slots[1];
    assertAnnotationValue(compileValue, dimVar1);
    assertAnnotationValue(compileValue, widthVar);
    assertAnnotationValue(runValue, heightVar);
    
    IDecisionVariable dimVar2 = config.getDecision(dimDecl2);
    slots = getSlotsOfDimensionVariable(dimVar2, widthDecl, heightDecl);
    widthVar = slots[0];
    heightVar = slots[1];
    assertAnnotationValue(compileValue, dimVar2);
    assertAnnotationValue(compileValue, widthVar);
    assertAnnotationValue(compileValue, heightVar);
}
 
开发者ID:SSEHUB,项目名称:EASyProducer,代码行数:74,代码来源:AssignmentResolverAnnotationTest.java

示例14: assertSavingAttributeValues

import net.ssehub.easy.varModel.model.Project; //导入方法依赖的package包/类
/**
 * Part of {@link #testSaveConfiguredAttributes()}. Creates two attributes on different ways for the same
 * {@link IDecisionVariable}, configures them and test whether they are saved correctly.
 * @param changeStates One variable is created with a default value, the other with an assigned value. <tt>true</tt>
 *     will change the sates to check whether both kinds of attributes can be saved.
 * @throws ValueDoesNotMatchTypeException Must not occur, otherwise string values cannot be assigned to string
 *     variables
 * @throws CSTSemanticException Must not occur, otherwise assignment constraints cannot be created.
 * @throws ConfigurationException Must not occcur, otherwise {@link Configuration#toProject(boolean)} is broken.
 */
private void assertSavingAttributeValues(boolean changeStates) throws ValueDoesNotMatchTypeException,
        CSTSemanticException, ConfigurationException {
    
    Project pro = new Project("test_Project_for_saving_attribute_values");
    DecisionVariableDeclaration intA = new DecisionVariableDeclaration("intA", IntegerType.TYPE, pro);
    pro.add(intA);
    Attribute attributeDef1 = new Attribute("attribute1", StringType.TYPE, pro, pro);
    String firstAttrValue = "a Default Value";
    attributeDef1.setValue(firstAttrValue);
    pro.add(attributeDef1);
    pro.attribute(attributeDef1);
    Attribute attributeDef2 = new Attribute("attribute2", StringType.TYPE, pro, pro);
    pro.add(attributeDef2);
    pro.attribute(attributeDef2);
    
    // Assignment of 2nd attribute via constraint
    Constraint constraint = new Constraint(pro);
    AttributeVariable attrVar = new AttributeVariable(new Variable(intA), attributeDef2);
    Value assignedValue = ValueFactory.createValue(attributeDef2.getType(), "Hello World");
    ConstantValue cstValue = new ConstantValue(assignedValue);
    OCLFeatureCall assignment = new OCLFeatureCall(attrVar, OclKeyWords.ASSIGNMENT, cstValue);
    constraint.setConsSyntax(assignment);
    pro.add(constraint);
    
    // Test whether project is valid and can be used for testing
    ProjectTestUtilities.validateProject(pro);
    
    // Create configuration and check whether the attributes are configured correctly
    // Configuration must be started with AssignmentResolver, since Reasoner is not available in this project.
    Configuration config = new Configuration(pro, true);
    IDecisionVariable var = config.getDecision(intA);
    Assert.assertEquals(2, var.getAttributesCount());
    IDecisionVariable firstAttribute = var.getAttribute(0);
    IDecisionVariable secondAttribute = var.getAttribute(1);
    Assert.assertNotNull(firstAttribute);
    Assert.assertEquals(firstAttrValue, firstAttribute.getValue().getValue().toString());
    Assert.assertSame(AssignmentState.DEFAULT, firstAttribute.getState());
    Assert.assertNotNull(secondAttribute);
    Assert.assertEquals(assignedValue, secondAttribute.getValue());
    Assert.assertSame(config.getResolutionState(), secondAttribute.getState());
    
    
    if (changeStates) {
        firstAttribute.setValue(firstAttribute.getValue(), AssignmentState.ASSIGNED);
        secondAttribute.setValue(secondAttribute.getValue(), AssignmentState.DEFAULT);
    }
    
    // Save configuration and test whether the attribute values appear inside the saved configuration
    Project confProject = config.toProject(true, false);
    StringWriter sWriter = new StringWriter();
    IVMLWriter iWriter = new IVMLWriter(sWriter);
    confProject.accept(iWriter);
    String savedResult = sWriter.toString();
    
    // Test: Attribute1 shall NOT be saved, Attribute 2 should be saved. 
    String assignmentStr1 = intA.getName() + "." + attributeDef1.getName() + " " + OclKeyWords.ASSIGNMENT + " \""
        + firstAttrValue + "\";";
    String assignmentStr2 = intA.getName() + "." + attributeDef2.getName() + " " + OclKeyWords.ASSIGNMENT 
        + " \"" + assignedValue.getValue().toString() + "\";";
    Assert.assertEquals("Error: value of attribute \"" + firstAttribute.getDeclaration().getName() + "\" was saved"
        + " but its state is \"" + firstAttribute.getState() + "\"", changeStates,
        savedResult.contains(assignmentStr1));
    Assert.assertEquals("Error: value of attribute \"" + secondAttribute.getDeclaration().getName() + "\" was saved"
        + " but its state is \"" + secondAttribute.getState() + "\"", !changeStates,
        savedResult.contains(assignmentStr2));
}
 
开发者ID:SSEHUB,项目名称:EASyProducer,代码行数:77,代码来源:IVMLWriterTest.java

示例15: testFreezing

import net.ssehub.easy.varModel.model.Project; //导入方法依赖的package包/类
/**
 * Creates a project for freezing and checks the frozen states.
 * 
 * @param runtimeMode whether the test shall happen in runtime reasoning mode
 * @throws ValueDoesNotMatchTypeException shall not occur
 * @throws CSTSemanticException shall not occur
 */
private void testFreezing(boolean runtimeMode) throws ValueDoesNotMatchTypeException, CSTSemanticException {
    Project prj = new Project("test");

    Enum bindingTime = new OrderedEnum("BindingTime", prj);
    bindingTime.add(new EnumLiteral("compile", 1, bindingTime));
    bindingTime.add(new EnumLiteral("monitor", 2, bindingTime));
    bindingTime.add(new EnumLiteral("enact", 3, bindingTime));
    prj.add(bindingTime);
    
    Attribute attr = new Attribute("binding", bindingTime, prj, prj);
    attr.setValue(ValueFactory.createValue(bindingTime, "compile"));
    prj.attribute(attr);
    prj.add(attr);
    
    Compound param = new Compound("IntParameter", prj);
    param.add(new DecisionVariableDeclaration("defaultValue", IntegerType.TYPE, param));
    AttributeAssignment assng = new AttributeAssignment(param);
    assng.add(new Assignment("binding", "=", new ConstantValue(ValueFactory.createValue(bindingTime, "enact"))));
    assng.add(new DecisionVariableDeclaration("value", IntegerType.TYPE, param));
    param.add(assng);
    prj.add(param);
    
    DecisionVariableDeclaration myParam = new DecisionVariableDeclaration("myParam", param, prj);
    prj.add(myParam);
    
    IFreezable[] freezables = new IFreezable[1];
    freezables[0] = myParam;
    FreezeVariableType iterType = new FreezeVariableType(freezables, prj);
    DecisionVariableDeclaration freezeIter = new DecisionVariableDeclaration("b", iterType, prj);
    Variable iterEx = new AttributeVariable(new Variable(freezeIter), iterType.getAttribute("binding"));
    ConstraintSyntaxTree selector = new OCLFeatureCall(iterEx, ">=", 
        new ConstantValue(ValueFactory.createValue(bindingTime, "monitor")));
    selector.inferDatatype();
    FreezeBlock freeze = new FreezeBlock(freezables, freezeIter, selector, prj);
    prj.add(freeze);
    
    // debugging
    System.out.println(StringProvider.toIvmlString(prj));
    
    Configuration cfg = new Configuration(prj);
    IDecisionVariable myParamVar = cfg.getDecision(myParam);
    Assert.assertNotNull(myParamVar);
    IDecisionVariable myParamVarDeflt = findNested(myParamVar, "defaultValue");
    Assert.assertNotNull(myParamVarDeflt);
    Assert.assertEquals(1, myParamVarDeflt.getAttributesCount());
    IDecisionVariable myParamVarValue = findNested(myParamVar, "value");
    Assert.assertNotNull(myParamVarValue);
    Assert.assertEquals(1, myParamVarValue.getAttributesCount());

    ReasonerConfiguration rConfig = new ReasonerConfiguration();
    rConfig.setRuntimeMode(runtimeMode);
    // Perform reasoning
    Engine engine = new Engine(prj, cfg, rConfig, ProgressObserver.NO_OBSERVER);
    engine.reason();
    
    Assert.assertEquals(AssignmentState.FROZEN, myParamVarDeflt.getState());
    Assert.assertNotEquals(AssignmentState.FROZEN, myParamVarValue.getState());
    //Assert.assertNotEquals(AssignmentState.FROZEN, myParamVar.getState());
}
 
开发者ID:SSEHUB,项目名称:EASyProducer,代码行数:67,代码来源:CodedTests.java


注:本文中的net.ssehub.easy.varModel.model.Project.attribute方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。