Search in sources :

Example 46 with Model

use of org.abs_models.frontend.ast.Model in project abstools by abstools.

the class TraitTest method addMethod.

@Test
public void addMethod() {
    Model model = assertParse("module M;" + "trait T = { Unit myMethod(){ skip; } }" + "class C {uses T; }");
    ClassDecl cls = (ClassDecl) findDecl(model, "M", "C");
    assertNotNull(cls);
    assertTrue(cls.getMethods().getNumChild() == 0);
    model.applyTraits();
    assertTrue(cls.getMethods().getNumChild() == 1);
    assertTrue(cls.getMethod(0).getMethodSig().getName().equals("myMethod"));
}
Also used : ClassDecl(org.abs_models.frontend.ast.ClassDecl) Model(org.abs_models.frontend.ast.Model) Test(org.junit.Test)

Example 47 with Model

use of org.abs_models.frontend.ast.Model in project abstools by abstools.

the class TraitTest method addAndRemoveExistingMethod.

@Test
public void addAndRemoveExistingMethod() {
    Model model = assertParse("module M; " + " trait T = Unit myMethod(){ skip; } removes Unit myMethod();" + " class C {uses T; }");
    ClassDecl cls = (ClassDecl) findDecl(model, "M", "C");
    assertNotNull(cls);
    assertTrue(cls.getMethods().getNumChild() == 0);
    model.applyTraits();
    assertTrue(cls.getMethods().getNumChild() == 0);
}
Also used : ClassDecl(org.abs_models.frontend.ast.ClassDecl) Model(org.abs_models.frontend.ast.Model) Test(org.junit.Test)

Example 48 with Model

use of org.abs_models.frontend.ast.Model in project abstools by abstools.

the class TraitTest method addTwoMethods.

@Test
public void addTwoMethods() {
    Model model = assertParse("module M;" + "trait T = { Unit myMethod(){ skip; } }" + "trait T2 = { Unit myMethod(){ skip; } }" + "class C {uses T; uses T2; }");
    ClassDecl cls = (ClassDecl) findDecl(model, "M", "C");
    assertNotNull(cls);
    assertTrue(cls.getMethods().getNumChild() == 0);
    model.applyTraits();
    assertTrue(cls.getMethods().getNumChild() == 2);
    assertTrue(cls.getMethod(0).toString().equals(cls.getMethod(1).toString()));
// failing for unknown reasons; comment out since traits might be removed anyway
// assertTrue(model.getErrors().containsErrors());
}
Also used : ClassDecl(org.abs_models.frontend.ast.ClassDecl) Model(org.abs_models.frontend.ast.Model) Test(org.junit.Test)

Example 49 with Model

use of org.abs_models.frontend.ast.Model in project abstools by abstools.

the class TraitTest method removeExistingMethodSetInClassSucc.

@Test
public void removeExistingMethodSetInClassSucc() {
    Model model = assertParse("module M;" + "trait T = {Unit myMethod(){skip;}Unit myMethod2(){skip;}}  " + "class C {uses T removes { Unit myMethod(); Unit myMethod2(); };  }");
    ClassDecl cls = (ClassDecl) findDecl(model, "M", "C");
    assertNotNull(cls);
    assertTrue(cls.getMethods().getNumChild() == 0);
    model.applyTraits();
    assertTrue(cls.getMethods().getNumChild() == 0);
}
Also used : ClassDecl(org.abs_models.frontend.ast.ClassDecl) Model(org.abs_models.frontend.ast.Model) Test(org.junit.Test)

Example 50 with Model

use of org.abs_models.frontend.ast.Model in project abstools by abstools.

the class TraitTest method removeExistingMethodInTrait.

@Test(expected = DeltaModellingException.class)
public void removeExistingMethodInTrait() {
    Model model = assertParse("module M; " + " trait T = {} removes Unit myMethod();" + " class C {uses T; Unit myMethod(){ println(\"\"); } }");
    ClassDecl cls = (ClassDecl) findDecl(model, "M", "C");
    assertNotNull(cls);
    assertTrue(cls.getMethods().getNumChild() == 1);
    model.applyTraits();
}
Also used : ClassDecl(org.abs_models.frontend.ast.ClassDecl) Model(org.abs_models.frontend.ast.Model) Test(org.junit.Test)

Aggregations

Model (org.abs_models.frontend.ast.Model)268 Test (org.junit.Test)227 FrontendTest (org.abs_models.frontend.FrontendTest)101 ClassDecl (org.abs_models.frontend.ast.ClassDecl)72 DeltaDecl (org.abs_models.frontend.ast.DeltaDecl)34 SemanticConditionList (org.abs_models.frontend.analyser.SemanticConditionList)29 ABSTest (org.abs_models.ABSTest)22 ProductDecl (org.abs_models.frontend.ast.ProductDecl)17 FunctionDecl (org.abs_models.frontend.ast.FunctionDecl)15 HashSet (java.util.HashSet)13 ModifyClassModifier (org.abs_models.frontend.ast.ModifyClassModifier)13 PrintStream (java.io.PrintStream)12 Product (org.abs_models.frontend.ast.Product)11 SkipStmt (org.abs_models.frontend.ast.SkipStmt)11 VarUse (org.abs_models.frontend.ast.VarUse)11 Feature (org.abs_models.frontend.ast.Feature)10 File (java.io.File)9 ExpFunctionDef (org.abs_models.frontend.ast.ExpFunctionDef)9 ReturnStmt (org.abs_models.frontend.ast.ReturnStmt)9 KindedName (org.abs_models.frontend.typechecker.KindedName)9