Skip to content

Commit

Permalink
moved some tests in validator tests
Browse files Browse the repository at this point in the history
  • Loading branch information
LorenzoBettini committed Nov 28, 2019
1 parent 2da9819 commit bf393f3
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 62 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -16,8 +16,6 @@ import org.junit.Test
import org.junit.runner.RunWith

import static extension org.junit.Assert.*
import static extension org.eclipse.xtext.EcoreUtil2.*
import edelta.edelta.EdeltaEcoreReferenceExpression

@RunWith(XtextRunner)
@InjectWith(EdeltaInjectorProviderCustom)
Expand Down Expand Up @@ -182,66 +180,6 @@ class EdeltaTypeComputerTest extends EdeltaAbstractTest {
)
}

@Test
def void testTypeForRenamedEClassInModifyEcoreWhenCallingMethod() {
val prog =
'''
metamodel "foo"
modifyEcore aTest epackage foo {
ecoreref(foo.FooClass).name = "RenamedClass"
ecoreref(RenamedClass).getEAllStructuralFeatures
}
'''.parseWithTestEcore
val ecoreref = prog.lastModifyEcoreOperation.body.
getAllContentsOfType(EdeltaEcoreReferenceExpression).last
assertEquals(EClass.canonicalName,
ecoreref.resolveTypes.getActualType(ecoreref).identifier
)
prog.assertNoErrors
}

@Test
def void testTypeForRenamedQualifiedEClassInModifyEcoreWhenCallingMethod() {
val prog =
'''
metamodel "foo"
modifyEcore aTest epackage foo {
ecoreref(foo.FooClass).name = "RenamedClass"
ecoreref(foo.RenamedClass).getEAllStructuralFeatures
}
'''.parseWithTestEcore
val ecoreref = prog.lastModifyEcoreOperation.body.
getAllContentsOfType(EdeltaEcoreReferenceExpression).last
assertEquals(EClass.canonicalName,
ecoreref.resolveTypes.getActualType(ecoreref).identifier
)
prog.assertNoErrors
}

@Test
def void testTypeForRenamedEClassInModifyEcoreWhenCallingMethodNonExistingMethod() {
val prog =
'''
metamodel "foo"
modifyEcore aTest epackage foo {
ecoreref(foo.FooClass).name = "RenamedClass"
ecoreref(RenamedClass).nonExistant("an arg")
}
'''.parseWithTestEcore
val ecoreref = prog.lastModifyEcoreOperation.body.
getAllContentsOfType(EdeltaEcoreReferenceExpression).last
assertEquals(EClass.canonicalName,
ecoreref.resolveTypes.getActualType(ecoreref).identifier
)
// the type is manually resolved correctly,
// but we have errors due to unresolved getEAllStructuralFeatures
prog.assertErrorsAsStrings
("The method or field nonExistant(String) is undefined for the type EClass")
}

def private assertType(CharSequence input, Class<?> expected) {
input.parseWithTestEcore.lastExpression => [
expected.canonicalName.assertEquals(
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -240,4 +240,47 @@ class EdeltaValidatorTest extends EdeltaAbstractTest {
'''.parseWithTestEcore.assertNoErrors
}

@Test
def void testCallMethodOnRenanedEClassInModifyEcore() {
val prog =
'''
metamodel "foo"
modifyEcore aTest epackage foo {
ecoreref(foo.FooClass).name = "RenamedClass"
ecoreref(RenamedClass).getEAllStructuralFeatures
}
'''.parseWithTestEcore
prog.assertNoErrors
}

@Test
def void testCallMethodOnQualifiedRenanedEClassInModifyEcore() {
val prog =
'''
metamodel "foo"
modifyEcore aTest epackage foo {
ecoreref(foo.FooClass).name = "RenamedClass"
ecoreref(foo.RenamedClass).getEAllStructuralFeatures
}
'''.parseWithTestEcore
prog.assertNoErrors
}

@Test
def void testCallNonExistingMethodOnRenanedEClassInModifyEcore() {
val prog =
'''
metamodel "foo"
modifyEcore aTest epackage foo {
ecoreref(foo.FooClass).name = "RenamedClass"
ecoreref(RenamedClass).nonExistant("an arg")
}
'''.parseWithTestEcore
prog.assertErrorsAsStrings
("The method or field nonExistant(String) is undefined for the type EClass")
}

}

0 comments on commit bf393f3

Please sign in to comment.