Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Add a test case for 7dcb03d : test an Aspect on a class in a sub package
- Loading branch information
Showing
3 changed files
with
80 additions
and
0 deletions.
There are no files selected for viewing
64 changes: 64 additions & 0 deletions
64
...se.melange.tests/src/main/java/fr/inria/diverse/melange/tests/SubPackagesAspectTest.xtend
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
package fr.inria.diverse.melange.tests | ||
|
||
import com.google.inject.Inject | ||
import fr.inria.diverse.melange.metamodel.melange.Language | ||
import fr.inria.diverse.melange.metamodel.melange.ModelTypingSpace | ||
import fr.inria.diverse.melange.tests.common.MelangeTestHelper | ||
import fr.inria.diverse.melange.tests.common.MelangeTestsInjectorProvider | ||
import fr.inria.diverse.melange.tools.xtext.testing.XtextTest | ||
import org.eclipse.xtext.generator.IGenerator | ||
import org.eclipse.xtext.junit4.InjectWith | ||
import org.eclipse.xtext.junit4.XtextRunner | ||
import org.junit.runner.RunWith | ||
import org.junit.Test | ||
|
||
import static org.junit.Assert.* | ||
import fr.inria.diverse.melange.ast.ModelingElementExtensions | ||
import org.eclipse.emf.ecore.EClass | ||
|
||
@RunWith(XtextRunner) | ||
@InjectWith(MelangeTestsInjectorProvider) | ||
@XtextTest(rootType = ModelTypingSpace, inputFile = "tests-inputs/melange/SubPackagesAspectTest.melange") | ||
class SubPackagesAspectTest | ||
{ | ||
@Inject extension ModelingElementExtensions | ||
|
||
@Test | ||
def void testStructure(){ | ||
assertEquals(2, root.elements.size) | ||
|
||
val toppkg = lang.syntax.pkgs.head | ||
assertNotNull(toppkg) | ||
assertEquals(2, toppkg.EClassifiers.size) | ||
assertEquals(2, toppkg.ESubpackages.size) | ||
assertEquals("toppkg", toppkg.name) | ||
assertTrue(toppkg.EClassifiers.exists[name == "TopClass1"]) | ||
assertTrue(toppkg.EClassifiers.exists[name == "TopClass2"]) | ||
|
||
val subpkg1 = toppkg.ESubpackages.findFirst[name == "subpkg1"] | ||
assertNotNull(subpkg1) | ||
assertEquals(2, subpkg1.EClassifiers.size) | ||
assertEquals(0, subpkg1.ESubpackages.size) | ||
assertTrue(subpkg1.EClassifiers.exists[name == "Subpkg1Class1"]) | ||
assertTrue(subpkg1.EClassifiers.exists[name == "Subpkg1Class2"]) | ||
val subpkg1Class1 = subpkg1.EClassifiers.findFirst[name == "Subpkg1Class1"] as EClass | ||
assertEquals(1,subpkg1Class1.EAllAttributes.size) | ||
assertEquals("changeableYes",subpkg1Class1.EAllAttributes.head.name) | ||
|
||
val subpkg2 = toppkg.ESubpackages.findFirst[name == "subpkg2"] | ||
assertNotNull(subpkg2) | ||
assertEquals(2, subpkg2.EClassifiers.size) | ||
assertEquals(1, subpkg2.ESubpackages.size) | ||
assertTrue(subpkg2.EClassifiers.exists[name == "Subpkg2Class1"]) | ||
assertTrue(subpkg2.EClassifiers.exists[name == "Subpkg2Class2"]) | ||
|
||
val subpkg3 = subpkg2.ESubpackages.head | ||
assertEquals(2, subpkg3.EClassifiers.size) | ||
assertEquals("subpkg3", subpkg3.name) | ||
assertEquals(0, subpkg3.ESubpackages.size) | ||
assertTrue(subpkg3.EClassifiers.exists[name == "Subpkg3Class1"]) | ||
assertTrue(subpkg3.EClassifiers.exists[name == "Subpkg3Class2"]) | ||
} | ||
|
||
def Language getLang() { return root.elements.get(0) as Language } | ||
} |
9 changes: 9 additions & 0 deletions
9
...fr.inria.diverse.melange.tests/src/main/java/subpackage/aspect/TestAspectOverriding.xtend
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
package subpackage.aspect | ||
|
||
import fr.inria.diverse.k3.al.annotationprocessor.Aspect | ||
import toppkg.subpkg1.Subpkg1Class1 | ||
|
||
@Aspect(className = Subpkg1Class1) | ||
class Subpkg1Class1Aspect { | ||
public String changeableYes | ||
} |
7 changes: 7 additions & 0 deletions
7
tests/fr.inria.diverse.melange.tests/tests-inputs/melange/SubPackagesAspectTest.melange
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,7 @@ | ||
package subpackagestest | ||
|
||
language SubPackagesTest { | ||
syntax "tests-inputs/metamodels/PackagesTest.ecore" withGenmodel "tests-inputs/metamodels/PackagesTest.genmodel" | ||
with subpackage.aspect.Subpkg1Class1Aspect | ||
exactType SubPackagesTestMT | ||
} |