Skip to content

Commit

Permalink
Merge pull request #152 from LorenzoBettini/task_142-EdeltaLibrary_me…
Browse files Browse the repository at this point in the history
…thods

Task 142 edelta library methods
  • Loading branch information
LorenzoBettini committed May 5, 2020
2 parents 61dc304 + 56bc5bd commit 849f62d
Show file tree
Hide file tree
Showing 17 changed files with 54 additions and 245 deletions.
Expand Up @@ -4,12 +4,10 @@
import edelta.refactorings.lib.EdeltaRefactorings;
import java.util.Collections;
import java.util.function.Consumer;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.xtext.xbase.lib.CollectionLiterals;
import org.eclipse.xtext.xbase.lib.Extension;
import org.eclipse.xtext.xbase.lib.ObjectExtensions;
Expand Down Expand Up @@ -52,12 +50,7 @@ public void introducePlace(final EPackage it) {

public void introduceWorkingPosition(final EPackage it) {
final Consumer<EClass> _function = (EClass it_1) -> {
EList<EStructuralFeature> _eStructuralFeatures = it_1.getEStructuralFeatures();
final Consumer<EAttribute> _function_1 = (EAttribute it_2) -> {
it_2.setEType(getEDataType("ecore", "EString"));
};
EAttribute _newEAttribute = this.lib.newEAttribute("description", _function_1);
_eStructuralFeatures.add(_newEAttribute);
this.lib.addNewEAttribute(it_1, "description", getEDataType("ecore", "EString"));
this.refactorings.extractMetaClass(it_1, getEReference("PersonList", "Person", "works"), "position", "works");
};
this.lib.addNewEClass(it, "WorkingPosition", _function);
Expand Down
Expand Up @@ -35,9 +35,7 @@ modifyEcore introducePlace epackage PersonList {

modifyEcore introduceWorkingPosition epackage PersonList {
addNewEClass("WorkingPosition") [
EStructuralFeatures += newEAttribute("description") [
EType = ecoreref(EString)
]
addNewEAttribute("description", ecoreref(EString))
extractMetaClass(ecoreref(Person.works), "position", "works")
]
}
Expand Down
Expand Up @@ -59,27 +59,13 @@ public void testNewEClassWithInitializer() {

@Test
public void testNewEAttribute() {
EAttribute e = lib.newEAttribute("test");
assertEquals("test", e.getName());
}

@Test
public void testNewEAttributeWithType() {
EAttribute e = lib.newEAttribute("test", ESTRING);
assertEquals("test", e.getName());
assertEquals(ESTRING, e.getEAttributeType());
}

@Test
public void testNewEAttributeWithInitializer() {
EAttribute e = lib.newEAttribute("test", ee -> {
ee.setName("changed");
});
assertEquals("changed", e.getName());
}

@Test
public void testNewEAttributeWithTypeAndInitialize() {
EAttribute e = lib.newEAttribute("test", ESTRING, ee -> {
ee.setName("changed");
});
Expand All @@ -89,27 +75,13 @@ public void testNewEAttributeWithTypeAndInitialize() {

@Test
public void testNewEReference() {
EReference e = lib.newEReference("test");
assertEquals("test", e.getName());
}

@Test
public void testNewEReferenceWithInitializer() {
EReference e = lib.newEReference("test", ee -> {
ee.setName("changed");
});
assertEquals("changed", e.getName());
}

@Test
public void testNewEReferenceWithType() {
EReference e = lib.newEReference("test", EOBJECT);
assertEquals("test", e.getName());
assertEquals(EOBJECT, e.getEReferenceType());
}

@Test
public void testNewEReferenceWithTypeInitializer() {
public void testNewEReferenceWithInitializer() {
EReference e = lib.newEReference("test", EOBJECT, ee -> {
ee.setName("changed");
});
Expand All @@ -119,12 +91,6 @@ public void testNewEReferenceWithTypeInitializer() {

@Test
public void testNewEDataType() {
EDataType e = lib.newEDataType("test");
assertEquals("test", e.getName());
}

@Test
public void testNewEDataTypeWithType() {
EDataType e = lib.newEDataType("test", "java.lang.String");
assertEquals("test", e.getName());
assertEquals("java.lang.String", e.getInstanceTypeName());
Expand All @@ -134,14 +100,6 @@ public void testNewEDataTypeWithType() {

@Test
public void testNewEDataTypeWithInitializer() {
EDataType e = lib.newEDataType("test", ee -> {
ee.setName("changed");
});
assertEquals("changed", e.getName());
}

@Test
public void testNewEDataTypeWithTypeInitializer() {
EDataType e = lib.newEDataType("test", "java.lang.String", ee -> {
ee.setName("changed");
});
Expand Down
33 changes: 0 additions & 33 deletions edelta.parent/edelta.lib/src/edelta/lib/EdeltaLibrary.java
Expand Up @@ -45,17 +45,6 @@ public EClass newEClass(String name, Consumer<EClass> initializer) {
return c;
}

public EAttribute newEAttribute(String name) {
return newEAttribute(name, null, null);
}

public EAttribute newEAttribute(String name, Consumer<EAttribute> initializer) {
EAttribute e = ecoreFactory.createEAttribute();
e.setName(name);
safeRunInitializer(initializer, e);
return e;
}

public EAttribute newEAttribute(String name, EDataType dataType) {
return newEAttribute(name, dataType, null);
}
Expand All @@ -68,17 +57,6 @@ public EAttribute newEAttribute(String name, EDataType dataType, Consumer<EAttri
return e;
}

public EReference newEReference(String name) {
return newEReference(name, null, null);
}

public EReference newEReference(String name, Consumer<EReference> initializer) {
EReference e = ecoreFactory.createEReference();
e.setName(name);
safeRunInitializer(initializer, e);
return e;
}

public EReference newEReference(String name, EClass referenceType) {
return newEReference(name, referenceType, null);
}
Expand All @@ -91,17 +69,6 @@ public EReference newEReference(String name, EClass referenceType, Consumer<ERef
return e;
}

public EDataType newEDataType(String name) {
return newEDataType(name, null, null);
}

public EDataType newEDataType(String name, Consumer<EDataType> initializer) {
EDataType e = ecoreFactory.createEDataType();
e.setName(name);
safeRunInitializer(initializer, e);
return e;
}

public EDataType newEDataType(String name, String instanceTypeName) {
return newEDataType(name, instanceTypeName, null);
}
Expand Down
Expand Up @@ -696,9 +696,8 @@ class EdeltaCompilerTest extends EdeltaAbstractTest {
modifyEcore modifyFoo epackage foo {
ecoreref(foo.FooClass).name = "RenamedClass"
ecoreref(RenamedClass).EStructuralFeatures += newEAttribute("anotherAttr") [
EType = ecoreref(FooDataType)
]
ecoreref(RenamedClass).EStructuralFeatures +=
newEAttribute("anotherAttr", ecoreref(FooDataType))
ecoreref(RenamedClass).abstract = true
ecoreref(foo.RenamedClass) => [abstract = true]
}
Expand All @@ -707,7 +706,6 @@ class EdeltaCompilerTest extends EdeltaAbstractTest {
package edelta;
import edelta.lib.AbstractEdelta;
import java.util.function.Consumer;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
Expand All @@ -729,17 +727,14 @@ class EdeltaCompilerTest extends EdeltaAbstractTest {
public void modifyFoo(final EPackage it) {
getEClass("foo", "FooClass").setName("RenamedClass");
EList<EStructuralFeature> _eStructuralFeatures = getEClass("foo", "RenamedClass").getEStructuralFeatures();
final Consumer<EAttribute> _function = (EAttribute it_1) -> {
it_1.setEType(getEDataType("foo", "FooDataType"));
};
EAttribute _newEAttribute = this.lib.newEAttribute("anotherAttr", _function);
EAttribute _newEAttribute = this.lib.newEAttribute("anotherAttr", getEDataType("foo", "FooDataType"));
_eStructuralFeatures.add(_newEAttribute);
getEClass("foo", "RenamedClass").setAbstract(true);
final Procedure1<EClass> _function_1 = (EClass it_1) -> {
final Procedure1<EClass> _function = (EClass it_1) -> {
it_1.setAbstract(true);
};
ObjectExtensions.<EClass>operator_doubleArrow(
getEClass("foo", "RenamedClass"), _function_1);
getEClass("foo", "RenamedClass"), _function);
}
@Override
Expand All @@ -763,9 +758,8 @@ class EdeltaCompilerTest extends EdeltaAbstractTest {
modifyEcore modifyFoo epackage foo {
ecoreref(foo.FooClass).name = "RenamedClass"
ecoreref(RenamedClass).EStructuralFeatures += newEAttribute("anotherAttr") [
EType = ecoreref(FooDataType)
]
ecoreref(RenamedClass).EStructuralFeatures +=
newEAttribute("anotherAttr", ecoreref(FooDataType))
ecoreref(RenamedClass).abstract = true
}
'''.checkCompiledCodeExecution(
Expand Down Expand Up @@ -1123,12 +1117,10 @@ class EdeltaCompilerTest extends EdeltaAbstractTest {
import edelta.refactorings.lib.EdeltaRefactorings;
import java.util.Collections;
import java.util.function.Consumer;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.xtext.xbase.lib.CollectionLiterals;
import org.eclipse.xtext.xbase.lib.Extension;
import org.eclipse.xtext.xbase.lib.ObjectExtensions;
Expand Down Expand Up @@ -1171,12 +1163,7 @@ class EdeltaCompilerTest extends EdeltaAbstractTest {
public void introduceWorkingPosition(final EPackage it) {
final Consumer<EClass> _function = (EClass it_1) -> {
EList<EStructuralFeature> _eStructuralFeatures = it_1.getEStructuralFeatures();
final Consumer<EAttribute> _function_1 = (EAttribute it_2) -> {
it_2.setEType(getEDataType("ecore", "EString"));
};
EAttribute _newEAttribute = this.lib.newEAttribute("description", _function_1);
_eStructuralFeatures.add(_newEAttribute);
this.lib.addNewEAttribute(it_1, "description", getEDataType("ecore", "EString"));
this.refactorings.extractMetaClass(it_1, getEReference("PersonList", "Person", "works"), "position", "works");
};
this.lib.addNewEClass(it, "WorkingPosition", _function);
Expand Down
Expand Up @@ -51,9 +51,7 @@ class EdeltaInterpreterTest extends EdeltaAbstractTest {
modifyEcore aTest epackage foo {
addNewEClass("NewClass") [
EStructuralFeatures += newEAttribute("newTestAttr") [
EType = ecoreref(FooDataType)
]
EStructuralFeatures += newEAttribute("newTestAttr", ecoreref(FooDataType))
]
}
'''
Expand Down Expand Up @@ -365,7 +363,8 @@ class EdeltaInterpreterTest extends EdeltaAbstractTest {
ecoreref(foo.FooClass).name = "RenamedClass"
ecoreref(RenamedClass).ESuperTypes += newEClass("Base")
op(ecoreref(RenamedClass))
ecoreref(RenamedClass).getEStructuralFeatures += newEAttribute("added")
ecoreref(RenamedClass).getEStructuralFeatures +=
newEAttribute("added", ecoreref(FooDataType))
}
'''.
assertAfterInterpretationOfEdeltaModifyEcoreOperation(true) [ derivedEPackage |
Expand All @@ -387,7 +386,8 @@ class EdeltaInterpreterTest extends EdeltaAbstractTest {

modifyEcore aTest epackage foo {
ecoreref(foo.FooClass).name = "RenamedClass"
ecoreref(RenamedClass).getEStructuralFeatures += newEAttribute("added")
ecoreref(RenamedClass).getEStructuralFeatures +=
newEAttribute("added", ecoreref(FooDataType))
ecoreref(RenamedClass.added)
}
'''.
Expand Down Expand Up @@ -445,9 +445,7 @@ class EdeltaInterpreterTest extends EdeltaAbstractTest {

modifyEcore aTest epackage mainpackage {
ecoreref(mainsubpackage).addNewEClass("NewClass") [
EStructuralFeatures += newEAttribute("newTestAttr") [
EType = ecoreref(MainFooDataType)
]
EStructuralFeatures += newEAttribute("newTestAttr", ecoreref(MainFooDataType))
]
}
'''
Expand All @@ -470,9 +468,7 @@ class EdeltaInterpreterTest extends EdeltaAbstractTest {

modifyEcore aTest epackage mainpackage {
ecoreref(subsubpackage).addNewEClass("NewClass") [
EStructuralFeatures += newEAttribute("newTestAttr") [
EType = ecoreref(MainFooDataType)
]
EStructuralFeatures += newEAttribute("newTestAttr", ecoreref(MainFooDataType))
]
}
'''
Expand Down Expand Up @@ -500,9 +496,7 @@ class EdeltaInterpreterTest extends EdeltaAbstractTest {
name = "anewsubpackage"
]
ecoreref(anewsubpackage).addNewEClass("NewClass") [
EStructuralFeatures += newEAttribute("newTestAttr") [
EType = ecoreref(MainFooDataType)
]
EStructuralFeatures += newEAttribute("newTestAttr", ecoreref(MainFooDataType))
]
}
'''
Expand Down Expand Up @@ -532,9 +526,7 @@ class EdeltaInterpreterTest extends EdeltaAbstractTest {
name = "anewsubpackage"
]
ecoreref(anewsubpackage).addNewEClass("NewClass") [
EStructuralFeatures += newEAttribute("newTestAttr") [
EType = ecoreref(MainFooDataType)
]
EStructuralFeatures += newEAttribute("newTestAttr", ecoreref(MainFooDataType))
]
ecoreref(NewClass).name = "RenamedClass"
ecoreref(RenamedClass).getEStructuralFeatures +=
Expand Down
Expand Up @@ -446,7 +446,7 @@ class EdeltaScopeProviderTest extends EdeltaAbstractTest {
modifyEcore aTest epackage foo {
ecoreref(foo.FooClass).name = "RenamedClass"
ecoreref(RenamedClass).EStructuralFeatures +=
newEAttribute("addedAttribute")
newEAttribute("addedAttribute", ecoreref(FooDataType))
ecoreref(RenamedClass.)
}
'''.parseWithTestEcore.lastModifyEcoreOperation.body.blockLastExpression.
Expand Down
Expand Up @@ -198,7 +198,7 @@ class EdeltaValidatorTest extends EdeltaAbstractTest {
modifyEcore aTest epackage foo {
ecoreref(foo.FooClass).name = "RenamedClass"
ecoreref(RenamedClass).EStructuralFeatures.add(
newEAttribute("addedAttribute"))
newEAttribute("addedAttribute", ecoreref(FooDataType)))
ecoreref(RenamedClass.addedAttribute)
}
'''.parseWithTestEcore.assertNoErrors
Expand All @@ -213,7 +213,7 @@ class EdeltaValidatorTest extends EdeltaAbstractTest {
modifyEcore aTest epackage foo {
ecoreref(foo.FooClass).name = "RenamedClass"
ecoreref(RenamedClass).EStructuralFeatures += newEAttribute("added")
ecoreref(RenamedClass).EStructuralFeatures += newEAttribute("added", ecoreref(FooDataType))
ecoreref(RenamedClass.added)
}
'''.parseWithTestEcore.assertNoErrors
Expand Down
Expand Up @@ -275,9 +275,7 @@ class Inputs {

modifyEcore introduceWorkingPosition epackage PersonList {
addNewEClass("WorkingPosition") [
EStructuralFeatures += newEAttribute("description") [
EType = ecoreref(EString)
]
addNewEAttribute("description", ecoreref(EString))
extractMetaClass(ecoreref(Person.works), "position", "works")
]
}
Expand Down

0 comments on commit 849f62d

Please sign in to comment.