Added support for ClassTypes in EMF filter services.
Change-Id: I91b8e8a32effc98150571e8babc51dadd679d91a
diff --git a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/impl/ValidationServices.java b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/impl/ValidationServices.java
index b07e82c..89033dc 100644
--- a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/impl/ValidationServices.java
+++ b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/runtime/impl/ValidationServices.java
@@ -37,6 +37,7 @@
import org.eclipse.acceleo.query.validation.type.SetType;
import org.eclipse.emf.common.util.Diagnostic;
import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EcorePackage;
/**
@@ -497,4 +498,33 @@
return result;
}
+ /**
+ * Gets the {@link Set} of {@link EClass} form the given {@link IType}.
+ *
+ * @param queryEnvironment
+ * the {@link IReadOnlyQueryEnvironment}
+ * @param type
+ * the {@link IType}
+ * @return the {@link Set} of {@link EClass} form the given {@link IType}
+ */
+ public Set<EClass> getEClasses(IReadOnlyQueryEnvironment queryEnvironment, IType type) {
+ final Set<EClass> result = new LinkedHashSet<EClass>();
+
+ if (type.getType() instanceof EClass) {
+ result.add((EClass)type.getType());
+ } else if (type.getType() instanceof Class) {
+ final Set<EClassifier> eClassifiers = queryEnvironment.getEPackageProvider().getEClassifiers(
+ (Class<?>)type.getType());
+ if (eClassifiers != null) {
+ for (EClassifier eClassifier : eClassifiers) {
+ if (eClassifier instanceof EClass) {
+ result.add((EClass)eClassifier);
+ }
+ }
+ }
+ }
+
+ return result;
+ }
+
}
diff --git a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/services/EAllContentsService.java b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/services/EAllContentsService.java
index ceab9a4..f9eccb4 100644
--- a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/services/EAllContentsService.java
+++ b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/services/EAllContentsService.java
@@ -53,32 +53,13 @@
IReadOnlyQueryEnvironment queryEnvironment, List<IType> argTypes) {
final Set<IType> result = new LinkedHashSet<IType>();
- final IType receiverType = argTypes.get(0);
- final Set<EClass> receiverEClasses = new LinkedHashSet<EClass>();
- if (receiverType.getType() instanceof EClass) {
- receiverEClasses.add((EClass)receiverType.getType());
- } else if (receiverType.getType() instanceof Class) {
- final Set<EClassifier> eClassifiers = queryEnvironment.getEPackageProvider().getEClassifiers(
- (Class<?>)receiverType.getType());
- if (eClassifiers != null) {
- for (EClassifier eCls : eClassifiers) {
- if (eCls instanceof EClass) {
- receiverEClasses.add((EClass)eCls);
- }
- }
- }
- } else {
- throw new IllegalStateException("don't know what to do with " + receiverType.getType());
- }
-
- if (receiverEClasses.isEmpty()) {
- result.add(new SequenceType(queryEnvironment, services.nothing(
- "Only EClass can contain other EClasses not %s", argTypes.get(0))));
- } else {
- for (EClass eCls : receiverEClasses) {
+ final Set<EClass> eClasses = services.getEClasses(queryEnvironment, argTypes.get(0));
+ if (!eClasses.isEmpty()) {
+ for (EClass eCls : eClasses) {
if (eCls == EcorePackage.eINSTANCE.getEObject()) {
if (argTypes.size() == 1) {
- result.add(new SequenceType(queryEnvironment, argTypes.get(0)));
+ result.add(new SequenceType(queryEnvironment, new EClassifierType(queryEnvironment,
+ eCls)));
} else if (argTypes.size() == 2 && argTypes.get(1) instanceof EClassifierLiteralType) {
result.add(new SequenceType(queryEnvironment, new EClassifierType(queryEnvironment,
((EClassifierLiteralType)argTypes.get(1)).getType())));
@@ -96,6 +77,9 @@
result.addAll(getTypeForSpecificType(services, queryEnvironment, argTypes, eCls));
}
}
+ } else {
+ result.add(new SequenceType(queryEnvironment, services.nothing(
+ "Only EClass can contain other EClasses not %s", argTypes.get(0))));
}
return result;
@@ -135,7 +119,8 @@
} else if (argTypes.size() == 2) {
final Set<IType> filterTypes = new LinkedHashSet<IType>();
if (argTypes.get(1) instanceof EClassifierSetLiteralType) {
- for (EClassifier eClassifier : ((EClassifierSetLiteralType)argTypes.get(1)).getEClassifiers()) {
+ for (EClassifier eClassifier : ((EClassifierSetLiteralType)argTypes.get(1))
+ .getEClassifiers()) {
filterTypes.add(new EClassifierType(queryEnvironment, eClassifier));
}
} else if (argTypes.get(1) instanceof EClassifierLiteralType) {
diff --git a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/services/EObjectServices.java b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/services/EObjectServices.java
index 789497f..2114bc7 100644
--- a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/services/EObjectServices.java
+++ b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/services/EObjectServices.java
@@ -217,35 +217,12 @@
IReadOnlyQueryEnvironment queryEnvironment, IType receiverType, String featureName) {
final Set<IType> result = new LinkedHashSet<IType>();
- final Set<EClass> receiverEClasses = new LinkedHashSet<EClass>();
- if (receiverType.getType() instanceof EClass) {
- receiverEClasses.add((EClass)receiverType.getType());
- } else if (receiverType.getType() instanceof Class) {
- final Set<EClassifier> eClassifiers = queryEnvironment.getEPackageProvider().getEClassifiers(
- (Class<?>)receiverType.getType());
- if (eClassifiers != null) {
- for (EClassifier eCls : eClassifiers) {
- if (eCls instanceof EClass) {
- receiverEClasses.add((EClass)eCls);
- }
- }
- }
- } else if (receiverType.getType() != null) {
- throw new IllegalStateException(DON_T_KNOW_WHAT_TO_DO_WITH + receiverType.getType());
- }
-
- if (receiverEClasses.isEmpty()) {
- if (receiverType.getType() != null) {
- result.add(services.nothing(NON_EOBJECT_FEATURE_ACCESS, featureName, receiverType
- .getType().toString()));
- } else {
- result.add(services.nothing(NON_EOBJECT_FEATURE_ACCESS, featureName, "null"));
- }
- } else {
- for (EClass eClass : receiverEClasses) {
- EStructuralFeature feature = eClass.getEStructuralFeature(featureName);
+ final Set<EClass> eClasses = services.getEClasses(queryEnvironment, receiverType);
+ if (!eClasses.isEmpty()) {
+ for (EClass eCls : eClasses) {
+ EStructuralFeature feature = eCls.getEStructuralFeature(featureName);
if (feature == null) {
- result.add(services.nothing(UNKNOWN_FEATURE, featureName, eClass.getName()));
+ result.add(services.nothing(UNKNOWN_FEATURE, featureName, eCls.getName()));
} else {
final EClassifierType featureBasicType = new EClassifierType(queryEnvironment, feature
.getEType());
@@ -256,6 +233,13 @@
}
}
}
+ } else {
+ if (receiverType.getType() != null) {
+ result.add(services.nothing(NON_EOBJECT_FEATURE_ACCESS, featureName, receiverType
+ .getType().toString()));
+ } else {
+ result.add(services.nothing(NON_EOBJECT_FEATURE_ACCESS, featureName, "null"));
+ }
}
return result;
@@ -350,17 +334,19 @@
IReadOnlyQueryEnvironment queryEnvironment, List<IType> argTypes) {
final Set<IType> result = new LinkedHashSet<IType>();
- if (argTypes.get(0).getType() instanceof EClass) {
- final EClass eCls = (EClass)argTypes.get(0).getType();
- if (eCls == EcorePackage.eINSTANCE.getEObject()) {
- if (argTypes.size() == 1) {
- result.add(argTypes.get(0));
- } else if (argTypes.size() == 2) {
- result.add(new EClassifierType(queryEnvironment, ((EClassifierLiteralType)argTypes
- .get(1)).getType()));
+ final Set<EClass> eClasses = services.getEClasses(queryEnvironment, argTypes.get(0));
+ if (!eClasses.isEmpty()) {
+ for (EClass eCls : eClasses) {
+ if (eCls == EcorePackage.eINSTANCE.getEObject()) {
+ if (argTypes.size() == 1) {
+ result.add(new EClassifierType(queryEnvironment, eCls));
+ } else if (argTypes.size() == 2) {
+ result.add(new EClassifierType(queryEnvironment, ((EClassifierLiteralType)argTypes
+ .get(1)).getType()));
+ }
+ } else {
+ result.addAll(getTypeForSpecificType(services, queryEnvironment, argTypes, eCls));
}
- } else {
- result.addAll(getTypeForSpecificType(services, queryEnvironment, argTypes, eCls));
}
} else {
result.add(services.nothing(ONLY_E_CLASS_CAN_BE_CONTAINED_INTO_OTHER_E_CLASSES_NOT_S, argTypes
@@ -451,13 +437,15 @@
IReadOnlyQueryEnvironment queryEnvironment, List<IType> argTypes) {
final Set<IType> result = new LinkedHashSet<IType>();
- if (argTypes.get(0).getType() instanceof EClass) {
- final EClass eCls = (EClass)argTypes.get(0).getType();
- if (eCls == EcorePackage.eINSTANCE.getEObject()) {
- result.add(new EClassifierType(queryEnvironment, ((EClassifierLiteralType)argTypes.get(1))
- .getType()));
- } else {
- result.addAll(getTypeForSpecificType(services, queryEnvironment, argTypes, eCls));
+ final Set<EClass> eClasses = services.getEClasses(queryEnvironment, argTypes.get(0));
+ if (!eClasses.isEmpty()) {
+ for (EClass eCls : eClasses) {
+ if (eCls == EcorePackage.eINSTANCE.getEObject()) {
+ result.add(new EClassifierType(queryEnvironment, ((EClassifierLiteralType)argTypes
+ .get(1)).getType()));
+ } else {
+ result.addAll(getTypeForSpecificType(services, queryEnvironment, argTypes, eCls));
+ }
}
} else {
result.add(services.nothing(ONLY_E_CLASS_CAN_BE_CONTAINED_INTO_OTHER_E_CLASSES_NOT_S, argTypes
@@ -534,26 +522,31 @@
IReadOnlyQueryEnvironment queryEnvironment, List<IType> argTypes) {
final Set<IType> result = new LinkedHashSet<IType>();
- if (argTypes.get(0).getType() instanceof EClass) {
- final EClass eCls = (EClass)argTypes.get(0).getType();
- if (eCls == EcorePackage.eINSTANCE.getEObject()) {
- if (argTypes.size() == 1) {
- result.add(new SequenceType(queryEnvironment, argTypes.get(0)));
- } else if (argTypes.size() == 2 && argTypes.get(1) instanceof EClassifierLiteralType) {
- result.add(new SequenceType(queryEnvironment, new EClassifierType(queryEnvironment,
- ((EClassifierLiteralType)argTypes.get(1)).getType())));
- } else if (argTypes.size() == 2 && argTypes.get(1) instanceof EClassifierSetLiteralType) {
- for (EClassifier eClsFilter : ((EClassifierSetLiteralType)argTypes.get(1))
- .getEClassifiers()) {
+ final Set<EClass> eClasses = services.getEClasses(queryEnvironment, argTypes.get(0));
+ if (!eClasses.isEmpty()) {
+ for (EClass eCls : eClasses) {
+ if (eCls == EcorePackage.eINSTANCE.getEObject()) {
+ if (argTypes.size() == 1) {
result.add(new SequenceType(queryEnvironment, new EClassifierType(
- queryEnvironment, eClsFilter)));
+ queryEnvironment, eCls)));
+ } else if (argTypes.size() == 2 && argTypes.get(
+ 1) instanceof EClassifierLiteralType) {
+ result.add(new SequenceType(queryEnvironment, new EClassifierType(
+ queryEnvironment, ((EClassifierLiteralType)argTypes.get(1)).getType())));
+ } else if (argTypes.size() == 2 && argTypes.get(
+ 1) instanceof EClassifierSetLiteralType) {
+ for (EClassifier eClsFilter : ((EClassifierSetLiteralType)argTypes.get(1))
+ .getEClassifiers()) {
+ result.add(new SequenceType(queryEnvironment, new EClassifierType(
+ queryEnvironment, eClsFilter)));
+ }
+ } else if (argTypes.size() == 2) {
+ result.addAll(super.getType(call, services, validationResult, queryEnvironment,
+ argTypes));
}
- } else if (argTypes.size() == 2) {
- result.addAll(super.getType(call, services, validationResult, queryEnvironment,
- argTypes));
+ } else {
+ result.addAll(getTypeForSpecificType(services, queryEnvironment, argTypes, eCls));
}
- } else {
- result.addAll(getTypeForSpecificType(services, queryEnvironment, argTypes, eCls));
}
} else {
result.add(new SequenceType(queryEnvironment, services.nothing(
@@ -722,17 +715,21 @@
IReadOnlyQueryEnvironment queryEnvironment, List<IType> argTypes) {
final Set<IType> result = new LinkedHashSet<IType>();
- if (argTypes.get(0).getType() instanceof EClass) {
- final EClass eCls = (EClass)argTypes.get(0).getType();
- if (eCls == EcorePackage.eINSTANCE.getEObject()) {
- if (argTypes.size() == 1 || !(argTypes.get(1).getType() instanceof EClass)) {
- result.add(new SetType(queryEnvironment, argTypes.get(0)));
- } else if (argTypes.size() == 2) {
- result.add(new SetType(queryEnvironment, new EClassifierType(queryEnvironment,
- ((EClassifierLiteralType)argTypes.get(1)).getType())));
+ final Set<EClass> eClasses = services.getEClasses(queryEnvironment, argTypes.get(0));
+ if (!eClasses.isEmpty()) {
+ for (EClass eCls : eClasses) {
+ if (eCls == EcorePackage.eINSTANCE.getEObject()) {
+ if (argTypes.size() == 1 || !(argTypes.get(1).getType() instanceof EClass)) {
+ result.add(new SetType(queryEnvironment, new EClassifierType(queryEnvironment,
+ eCls)));
+ } else if (argTypes.size() == 2) {
+ result.add(new SetType(queryEnvironment, new EClassifierType(queryEnvironment,
+ ((EClassifierLiteralType)argTypes.get(1)).getType())));
+ }
+ } else {
+ result.addAll(getTypeForSpecificType(call, services, queryEnvironment, argTypes,
+ eCls));
}
- } else {
- result.addAll(getTypeForSpecificType(call, services, queryEnvironment, argTypes, eCls));
}
} else {
result.add(new SetType(queryEnvironment, services.nothing(
diff --git a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/services/XPathServices.java b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/services/XPathServices.java
index a99590a..310d55e 100644
--- a/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/services/XPathServices.java
+++ b/query/plugins/org.eclipse.acceleo.query/src/org/eclipse/acceleo/query/services/XPathServices.java
@@ -84,26 +84,31 @@
IReadOnlyQueryEnvironment queryEnvironment, List<IType> argTypes) {
final Set<IType> result = new LinkedHashSet<IType>();
- if (argTypes.get(0).getType() instanceof EClass) {
- final EClass eCls = (EClass)argTypes.get(0).getType();
- if (eCls == EcorePackage.eINSTANCE.getEObject()) {
- if (argTypes.size() == 1) {
- result.add(new SequenceType(queryEnvironment, argTypes.get(0)));
- } else if (argTypes.size() == 2 && argTypes.get(1) instanceof EClassifierLiteralType) {
- result.add(new SequenceType(queryEnvironment, new EClassifierType(queryEnvironment,
- ((EClassifierLiteralType)argTypes.get(1)).getType())));
- } else if (argTypes.size() == 2 && argTypes.get(1) instanceof EClassifierSetLiteralType) {
- for (EClassifier eClassifier : ((EClassifierSetLiteralType)argTypes.get(1))
- .getEClassifiers()) {
+ final Set<EClass> eClasses = services.getEClasses(queryEnvironment, argTypes.get(0));
+ if (!eClasses.isEmpty()) {
+ for (EClass eCls : eClasses) {
+ if (eCls == EcorePackage.eINSTANCE.getEObject()) {
+ if (argTypes.size() == 1) {
result.add(new SequenceType(queryEnvironment, new EClassifierType(
- queryEnvironment, eClassifier)));
+ queryEnvironment, eCls)));
+ } else if (argTypes.size() == 2 && argTypes.get(
+ 1) instanceof EClassifierLiteralType) {
+ result.add(new SequenceType(queryEnvironment, new EClassifierType(
+ queryEnvironment, ((EClassifierLiteralType)argTypes.get(1)).getType())));
+ } else if (argTypes.size() == 2 && argTypes.get(
+ 1) instanceof EClassifierSetLiteralType) {
+ for (EClassifier eClassifier : ((EClassifierSetLiteralType)argTypes.get(1))
+ .getEClassifiers()) {
+ result.add(new SequenceType(queryEnvironment, new EClassifierType(
+ queryEnvironment, eClassifier)));
+ }
+ } else if (argTypes.size() == 2) {
+ result.addAll(super.getType(call, services, validationResult, queryEnvironment,
+ argTypes));
}
- } else if (argTypes.size() == 2) {
- result.addAll(super.getType(call, services, validationResult, queryEnvironment,
- argTypes));
+ } else {
+ result.addAll(getTypeForSpecificType(services, queryEnvironment, argTypes, eCls));
}
- } else {
- result.addAll(getTypeForSpecificType(services, queryEnvironment, argTypes, eCls));
}
} else {
result.add(new SequenceType(queryEnvironment, services.nothing(
@@ -200,26 +205,31 @@
IReadOnlyQueryEnvironment queryEnvironment, List<IType> argTypes) {
final Set<IType> result = new LinkedHashSet<IType>();
- if (argTypes.get(0).getType() instanceof EClass) {
- final EClass eCls = (EClass)argTypes.get(0).getType();
- if (eCls == EcorePackage.eINSTANCE.getEObject()) {
- if (argTypes.size() == 1) {
- result.add(new SequenceType(queryEnvironment, argTypes.get(0)));
- } else if (argTypes.size() == 2 && argTypes.get(1) instanceof EClassifierLiteralType) {
- result.add(new SequenceType(queryEnvironment, new EClassifierType(queryEnvironment,
- ((EClassifierLiteralType)argTypes.get(1)).getType())));
- } else if (argTypes.size() == 2 && argTypes.get(1) instanceof EClassifierSetLiteralType) {
- for (EClassifier eClassifier : ((EClassifierSetLiteralType)argTypes.get(1))
- .getEClassifiers()) {
+ final Set<EClass> eClasses = services.getEClasses(queryEnvironment, argTypes.get(0));
+ if (!eClasses.isEmpty()) {
+ for (EClass eCls : eClasses) {
+ if (eCls == EcorePackage.eINSTANCE.getEObject()) {
+ if (argTypes.size() == 1) {
result.add(new SequenceType(queryEnvironment, new EClassifierType(
- queryEnvironment, eClassifier)));
+ queryEnvironment, eCls)));
+ } else if (argTypes.size() == 2 && argTypes.get(
+ 1) instanceof EClassifierLiteralType) {
+ result.add(new SequenceType(queryEnvironment, new EClassifierType(
+ queryEnvironment, ((EClassifierLiteralType)argTypes.get(1)).getType())));
+ } else if (argTypes.size() == 2 && argTypes.get(
+ 1) instanceof EClassifierSetLiteralType) {
+ for (EClassifier eClassifier : ((EClassifierSetLiteralType)argTypes.get(1))
+ .getEClassifiers()) {
+ result.add(new SequenceType(queryEnvironment, new EClassifierType(
+ queryEnvironment, eClassifier)));
+ }
+ } else if (argTypes.size() == 2) {
+ result.addAll(super.getType(call, services, validationResult, queryEnvironment,
+ argTypes));
}
- } else if (argTypes.size() == 2) {
- result.addAll(super.getType(call, services, validationResult, queryEnvironment,
- argTypes));
+ } else {
+ result.addAll(getTypeForSpecificType(services, queryEnvironment, argTypes, eCls));
}
- } else {
- result.addAll(getTypeForSpecificType(services, queryEnvironment, argTypes, eCls));
}
} else {
result.add(new SequenceType(queryEnvironment, services.nothing(
@@ -313,26 +323,31 @@
IReadOnlyQueryEnvironment queryEnvironment, List<IType> argTypes) {
final Set<IType> result = new LinkedHashSet<IType>();
- if (argTypes.get(0).getType() instanceof EClass) {
- final EClass eCls = (EClass)argTypes.get(0).getType();
- if (eCls == EcorePackage.eINSTANCE.getEObject()) {
- if (argTypes.size() == 1) {
- result.add(new SequenceType(queryEnvironment, argTypes.get(0)));
- } else if (argTypes.size() == 2 && argTypes.get(1) instanceof EClassifierLiteralType) {
- result.add(new SequenceType(queryEnvironment, new EClassifierType(queryEnvironment,
- ((EClassifierLiteralType)argTypes.get(1)).getType())));
- } else if (argTypes.size() == 2 && argTypes.get(1) instanceof EClassifierSetLiteralType) {
- for (EClassifier eClassifier : ((EClassifierSetLiteralType)argTypes.get(1))
- .getEClassifiers()) {
+ final Set<EClass> eClasses = services.getEClasses(queryEnvironment, argTypes.get(0));
+ if (!eClasses.isEmpty()) {
+ for (EClass eCls : eClasses) {
+ if (eCls == EcorePackage.eINSTANCE.getEObject()) {
+ if (argTypes.size() == 1) {
result.add(new SequenceType(queryEnvironment, new EClassifierType(
- queryEnvironment, eClassifier)));
+ queryEnvironment, eCls)));
+ } else if (argTypes.size() == 2 && argTypes.get(
+ 1) instanceof EClassifierLiteralType) {
+ result.add(new SequenceType(queryEnvironment, new EClassifierType(
+ queryEnvironment, ((EClassifierLiteralType)argTypes.get(1)).getType())));
+ } else if (argTypes.size() == 2 && argTypes.get(
+ 1) instanceof EClassifierSetLiteralType) {
+ for (EClassifier eClassifier : ((EClassifierSetLiteralType)argTypes.get(1))
+ .getEClassifiers()) {
+ result.add(new SequenceType(queryEnvironment, new EClassifierType(
+ queryEnvironment, eClassifier)));
+ }
+ } else if (argTypes.size() == 2) {
+ result.addAll(super.getType(call, services, validationResult, queryEnvironment,
+ argTypes));
}
- } else if (argTypes.size() == 2) {
- result.addAll(super.getType(call, services, validationResult, queryEnvironment,
- argTypes));
+ } else {
+ result.addAll(getTypeForSpecificType(services, queryEnvironment, argTypes, eCls));
}
- } else {
- result.addAll(getTypeForSpecificType(services, queryEnvironment, argTypes, eCls));
}
} else {
result.add(new SequenceType(queryEnvironment, services.nothing(
@@ -426,26 +441,31 @@
IReadOnlyQueryEnvironment queryEnvironment, List<IType> argTypes) {
final Set<IType> result = new LinkedHashSet<IType>();
- if (argTypes.get(0).getType() instanceof EClass) {
- final EClass eCls = (EClass)argTypes.get(0).getType();
- if (eCls == EcorePackage.eINSTANCE.getEObject()) {
- if (argTypes.size() == 1) {
- result.add(new SequenceType(queryEnvironment, argTypes.get(0)));
- } else if (argTypes.size() == 2 && argTypes.get(1) instanceof EClassifierLiteralType) {
- result.add(new SequenceType(queryEnvironment, new EClassifierType(queryEnvironment,
- ((EClassifierLiteralType)argTypes.get(1)).getType())));
- } else if (argTypes.size() == 2 && argTypes.get(1) instanceof EClassifierSetLiteralType) {
- for (EClassifier eClassifier : ((EClassifierSetLiteralType)argTypes.get(1))
- .getEClassifiers()) {
+ final Set<EClass> eClasses = services.getEClasses(queryEnvironment, argTypes.get(0));
+ if (!eClasses.isEmpty()) {
+ for (EClass eCls : eClasses) {
+ if (eCls == EcorePackage.eINSTANCE.getEObject()) {
+ if (argTypes.size() == 1) {
result.add(new SequenceType(queryEnvironment, new EClassifierType(
- queryEnvironment, eClassifier)));
+ queryEnvironment, eCls)));
+ } else if (argTypes.size() == 2 && argTypes.get(
+ 1) instanceof EClassifierLiteralType) {
+ result.add(new SequenceType(queryEnvironment, new EClassifierType(
+ queryEnvironment, ((EClassifierLiteralType)argTypes.get(1)).getType())));
+ } else if (argTypes.size() == 2 && argTypes.get(
+ 1) instanceof EClassifierSetLiteralType) {
+ for (EClassifier eClassifier : ((EClassifierSetLiteralType)argTypes.get(1))
+ .getEClassifiers()) {
+ result.add(new SequenceType(queryEnvironment, new EClassifierType(
+ queryEnvironment, eClassifier)));
+ }
+ } else if (argTypes.size() == 2) {
+ result.addAll(super.getType(call, services, validationResult, queryEnvironment,
+ argTypes));
}
- } else if (argTypes.size() == 2) {
- result.addAll(super.getType(call, services, validationResult, queryEnvironment,
- argTypes));
+ } else {
+ result.addAll(getTypeForSpecificType(services, queryEnvironment, argTypes, eCls));
}
- } else {
- result.addAll(getTypeForSpecificType(services, queryEnvironment, argTypes, eCls));
}
} else {
result.add(new SequenceType(queryEnvironment, services.nothing(
diff --git a/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/services/tests/EObjectServicesValidationTest.java b/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/services/tests/EObjectServicesValidationTest.java
index b235d6b..fde5e6a 100644
--- a/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/services/tests/EObjectServicesValidationTest.java
+++ b/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/services/tests/EObjectServicesValidationTest.java
@@ -20,6 +20,7 @@
import org.eclipse.acceleo.query.runtime.ServiceUtils;
import org.eclipse.acceleo.query.services.EObjectServices;
import org.eclipse.acceleo.query.tests.anydsl.AnydslPackage;
+import org.eclipse.acceleo.query.validation.type.ClassType;
import org.eclipse.acceleo.query.validation.type.EClassifierLiteralType;
import org.eclipse.acceleo.query.validation.type.EClassifierType;
import org.eclipse.acceleo.query.validation.type.IType;
@@ -94,6 +95,23 @@
}
@Test
+ public void testEAllContentsFilteredSetClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierSetLiteralType(
+ EcorePackage.eINSTANCE.getEPackage(), EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "eAllContents", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEAllContentsFilteredSetOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -112,6 +130,23 @@
}
@Test
+ public void testEAllContentsFilteredSetOnEObjectClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class), eClassifierSetLiteralType(
+ EcorePackage.eINSTANCE.getEPackage(), EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "eAllContents", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEAllContents() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -138,6 +173,31 @@
}
@Test
+ public void testEAllContentsClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEAnnotation())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClassifier())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEStringToStringMapEntry())),
+ sequenceType(eClassifierType(EcorePackage.eINSTANCE.getEObject())), sequenceType(
+ eClassifierType(EcorePackage.eINSTANCE.getETypeParameter())), sequenceType(
+ eClassifierType(EcorePackage.eINSTANCE.getEOperation())), sequenceType(
+ eClassifierType(EcorePackage.eINSTANCE.getEStructuralFeature())),
+ sequenceType(eClassifierType(EcorePackage.eINSTANCE.getEGenericType())), sequenceType(
+ eClassifierType(EcorePackage.eINSTANCE.getEEnumLiteral())), sequenceType(
+ eClassifierType(EcorePackage.eINSTANCE.getEParameter())) };
+
+ assertValidation(expectedReturnTypes, "eAllContents", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEAllContentsOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -154,6 +214,21 @@
}
@Test
+ public void testEAllContentsOnEObjectClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEObject())) };
+
+ assertValidation(expectedReturnTypes, "eAllContents", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEAllContentsFilteredNoContainingEClass() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
@@ -198,6 +273,22 @@
}
@Test
+ public void testEAllContentsFilteredEClassifierLiteralClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEPackage()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())) };
+
+ assertValidation(expectedReturnTypes, "eAllContents", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEAllContentsFilteredOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -214,6 +305,22 @@
}
@Test
+ public void testEAllContentsFilteredOnEObjectClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEPackage()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())) };
+
+ assertValidation(expectedReturnTypes, "eAllContents", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEAllContentsFilteredEClassifier() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -240,6 +347,32 @@
}
@Test
+ public void testEAllContentsFilteredEClassifierClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEAnnotation())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClassifier())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEStringToStringMapEntry())),
+ sequenceType(eClassifierType(EcorePackage.eINSTANCE.getEObject())), sequenceType(
+ eClassifierType(EcorePackage.eINSTANCE.getETypeParameter())), sequenceType(
+ eClassifierType(EcorePackage.eINSTANCE.getEOperation())), sequenceType(
+ eClassifierType(EcorePackage.eINSTANCE.getEStructuralFeature())),
+ sequenceType(eClassifierType(EcorePackage.eINSTANCE.getEGenericType())), sequenceType(
+ eClassifierType(EcorePackage.eINSTANCE.getEEnumLiteral())), sequenceType(
+ eClassifierType(EcorePackage.eINSTANCE.getEParameter())), };
+
+ assertValidation(expectedReturnTypes, "eAllContents", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEAllContentsFilteredLoweredByTypes() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -268,6 +401,34 @@
}
@Test
+ public void testEAllContentsFilteredLoweredByTypesClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEModelElement()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEAnnotation())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClassifier())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEModelElement())), sequenceType(
+ eClassifierType(EcorePackage.eINSTANCE
+ .getETypeParameter())), sequenceType(
+ eClassifierType(EcorePackage.eINSTANCE
+ .getEOperation())), sequenceType(
+ eClassifierType(
+ EcorePackage.eINSTANCE
+ .getEStructuralFeature())),
+ sequenceType(eClassifierType(EcorePackage.eINSTANCE.getEEnumLiteral())), sequenceType(
+ eClassifierType(EcorePackage.eINSTANCE.getEParameter())) };
+
+ assertValidation(expectedReturnTypes, "eAllContents", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEAllContentsFilteredLoweredByFilter() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -284,6 +445,22 @@
}
@Test
+ public void testEAllContentsFilteredLoweredByFilterClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "eAllContents", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEAllContentsFilteredNoType() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
@@ -332,6 +509,20 @@
}
@Test
+ public void testEClassClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class) };
+ final IType[] expectedReturnTypes = new IType[] {classType(EClass.class) };
+
+ assertValidation(expectedReturnTypes, "eClass", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContainerNotContainedEClass() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
@@ -380,6 +571,27 @@
}
@Test
+ public void testEContainerClassType() {
+ final IService<?> service = serviceLookUp("eContainer", new Object[] {EcorePackage.eINSTANCE
+ .eClass() });
+ assertTrue(service != null);
+ final List<IType> argTypes = new ArrayList<IType>();
+ argTypes.add(new ClassType(getQueryEnvironment(), EClass.class));
+
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE
+ .getEPackage()), eClassifierType(EcorePackage.eINSTANCE.getEAnnotation()) };
+
+ assertValidation(expectedReturnTypes, "eContainer", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContainerOnEStringToStringMapEntryBasicMapping() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -394,6 +606,24 @@
}
@Test
+ public void testEContainerOnEStringToStringMapEntryBasicMappingClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {new ClassType(getQueryEnvironment(),
+ EStringToStringMapEntryImpl.class) };
+ final IType[] expectedReturnTypes = new IType[] {nothingType(
+ "Only EClass can be contained into other EClasses not org.eclipse.emf.ecore.impl.EStringToStringMapEntryImpl") };
+ final IType[] expectedAllReturnTypes = new IType[] {nothingType(
+ "Nothing will be left after calling eContainer:\nOnly EClass can be contained into other EClasses not org.eclipse.emf.ecore.impl.EStringToStringMapEntryImpl") };
+
+ assertValidation(expectedReturnTypes, expectedAllReturnTypes, "eContainer", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContainerOnEStringToStringMapEntryCustomMapping() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -412,6 +642,24 @@
}
@Test
+ public void testEContainerOnEStringToStringMapEntryCustomMappingClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+ getQueryEnvironment().registerCustomClassMapping(EcorePackage.eINSTANCE
+ .getEStringToStringMapEntry(), EStringToStringMapEntryImpl.class);
+
+ final IType[] parameterTypes = new IType[] {new ClassType(getQueryEnvironment(),
+ EStringToStringMapEntryImpl.class) };
+ final IType[] expectedReturnTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE
+ .getEAnnotation()) };
+
+ assertValidation(expectedReturnTypes, "eContainer", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContainerOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -428,6 +676,21 @@
}
@Test
+ public void testEContainerOnEObjectClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class) };
+ final IType[] expectedReturnTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE
+ .getEObject()) };
+
+ assertValidation(expectedReturnTypes, "eContainer", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContainerFilteredNotContainedEClass() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
@@ -472,6 +735,22 @@
}
@Test
+ public void testEContainerFilteredClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE
+ .getEClass()) };
+
+ assertValidation(expectedReturnTypes, "eContainer", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContainerFilteredOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -488,6 +767,22 @@
}
@Test
+ public void testEContainerFilteredOnEObjectClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE
+ .getEClass()) };
+
+ assertValidation(expectedReturnTypes, "eContainer", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContainerFilteredLoweredByTypes() {
final IService<?> service = serviceLookUp("eContainer", new Object[] {EcorePackage.eINSTANCE,
EcorePackage.eINSTANCE.getEModelElement() });
@@ -512,6 +807,30 @@
}
@Test
+ public void testEContainerFilteredLoweredByTypesClassType() {
+ final IService<?> service = serviceLookUp("eContainer", new Object[] {EcorePackage.eINSTANCE,
+ EcorePackage.eINSTANCE.getEModelElement() });
+ assertTrue(service != null);
+ final List<IType> argTypes = new ArrayList<IType>();
+ argTypes.add(new ClassType(getQueryEnvironment(), EPackage.class));
+ argTypes.add(new EClassifierLiteralType(getQueryEnvironment(), EcorePackage.eINSTANCE
+ .getETypedElement()));
+
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
+ eClassifierLiteralType(EcorePackage.eINSTANCE.getETypedElement()) };
+ final IType[] expectedReturnTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE
+ .getETypedElement()), eClassifierType(EcorePackage.eINSTANCE.getEOperation()) };
+
+ assertValidation(expectedReturnTypes, "eContainer", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContainerFilteredLoweredByFilter() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -528,6 +847,22 @@
}
@Test
+ public void testEContainerFilteredLoweredByFilterClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE
+ .getEClass()) };
+
+ assertValidation(expectedReturnTypes, "eContainer", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContainerFilteredNoType() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
@@ -605,6 +940,22 @@
}
@Test
+ public void testEContainerOrSelfFilteredClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE
+ .getEClass()) };
+
+ assertValidation(expectedReturnTypes, "eContainerOrSelf", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContainerOrSelfFilteredOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -621,6 +972,22 @@
}
@Test
+ public void testEContainerOrSelfFilteredOnEObjectClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE
+ .getEClass()) };
+
+ assertValidation(expectedReturnTypes, "eContainerOrSelf", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContainerOrSelfFilteredLoweredByTypes() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -637,6 +1004,22 @@
}
@Test
+ public void testEContainerOrSelfFilteredLoweredByTypesClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getETypedElement()) };
+ final IType[] expectedReturnTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE
+ .getETypedElement()), eClassifierType(EcorePackage.eINSTANCE.getEOperation()) };
+
+ assertValidation(expectedReturnTypes, "eContainerOrSelf", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContainerOrSelfFilteredLoweredByFilter() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -653,6 +1036,22 @@
}
@Test
+ public void testEContainerOrSelfFilteredLoweredByFilterClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE
+ .getEClass()) };
+
+ assertValidation(expectedReturnTypes, "eContainerOrSelf", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContainerOrSelfFilteredNoType() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
@@ -731,6 +1130,23 @@
}
@Test
+ public void testEContentsClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEAnnotation())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClassifier())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())) };
+
+ assertValidation(expectedReturnTypes, "eContents", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContentsOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -747,6 +1163,21 @@
}
@Test
+ public void testEContentsOnEObjectClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEObject())) };
+
+ assertValidation(expectedReturnTypes, "eContents", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContentsFilteredNoContainingEClass() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
@@ -791,6 +1222,22 @@
}
@Test
+ public void testEContentsFilteredClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEPackage()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())) };
+
+ assertValidation(expectedReturnTypes, "eContents", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContentsFilteredSet() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -809,6 +1256,23 @@
}
@Test
+ public void testEContentsFilteredSetClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierSetLiteralType(
+ EcorePackage.eINSTANCE.getEPackage(), EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "eContents", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContentsFilterEClass() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -827,6 +1291,24 @@
}
@Test
+ public void testEContentsFilterEClassClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEAnnotation())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClassifier())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())) };
+
+ assertValidation(expectedReturnTypes, "eContents", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContentsFilterSet() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -845,6 +1327,24 @@
}
@Test
+ public void testEContentsFilterSetClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), setType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEAnnotation())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClassifier())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())) };
+
+ assertValidation(expectedReturnTypes, "eContents", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContentsFilteredSetOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -863,6 +1363,23 @@
}
@Test
+ public void testEContentsFilteredSetOnEObjectClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class), eClassifierSetLiteralType(
+ EcorePackage.eINSTANCE.getEPackage(), EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "eContents", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContentsFilteredOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -879,6 +1396,22 @@
}
@Test
+ public void testEContentsFilteredOnEObjectClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEPackage()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())) };
+
+ assertValidation(expectedReturnTypes, "eContents", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContentsFilteredLoweredByTypes() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -897,6 +1430,24 @@
}
@Test
+ public void testEContentsFilteredLoweredByTypesClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEModelElement()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEAnnotation())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClassifier())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())) };
+
+ assertValidation(expectedReturnTypes, "eContents", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContentsFilteredLoweredByFilter() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -913,6 +1464,22 @@
}
@Test
+ public void testEContentsFilteredLoweredByFilterClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "eContents", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEContentsFilteredNoType() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
@@ -962,6 +1529,21 @@
}
@Test
+ public void testEInverseFeatureNameEObjectClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class), classType(String.class) };
+ final IType[] expectedReturnTypes = new IType[] {setType(eClassifierType(EcorePackage.eINSTANCE
+ .getEObject())) };
+
+ assertValidation(expectedReturnTypes, "eInverse", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEInverseFiltered() {
final IService<?> service = serviceLookUp("eInverse", new Object[] {EcorePackage.eINSTANCE,
EcorePackage.eINSTANCE.eClass() });
@@ -985,6 +1567,29 @@
}
@Test
+ public void testEInverseFilteredClassType() {
+ final IService<?> service = serviceLookUp("eInverse", new Object[] {EcorePackage.eINSTANCE,
+ EcorePackage.eINSTANCE.eClass() });
+ assertTrue(service != null);
+ final List<IType> argTypes = new ArrayList<IType>();
+ argTypes.add(new ClassType(getQueryEnvironment(), EPackage.class));
+ argTypes.add(new EClassifierLiteralType(getQueryEnvironment(), EcorePackage.eINSTANCE.getEPackage()));
+
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
+ eClassifierLiteralType(EcorePackage.eINSTANCE.getEPackage()) };
+ final IType[] expectedReturnTypes = new IType[] {setType(eClassifierType(EcorePackage.eINSTANCE
+ .getEPackage())) };
+
+ assertValidation(expectedReturnTypes, "eInverse", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEInverseFilteredLoweredByFilter() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -1001,6 +1606,22 @@
}
@Test
+ public void testEInverseFilteredLoweredByFilterClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEEnum()) };
+ final IType[] expectedReturnTypes = new IType[] {setType(eClassifierType(EcorePackage.eINSTANCE
+ .getEEnum())) };
+
+ assertValidation(expectedReturnTypes, "eInverse", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEInverseFilteredLoweredByTypes() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -1019,6 +1640,24 @@
}
@Test
+ public void testEInverseFilteredLoweredByTypesClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEModelElement()) };
+ final IType[] expectedReturnTypes = new IType[] {setType(eClassifierType(EcorePackage.eINSTANCE
+ .getEClassifier())), setType(eClassifierType(EcorePackage.eINSTANCE.getEFactory())),
+ setType(eClassifierType(EcorePackage.eINSTANCE.getEPackage())), setType(eClassifierType(
+ EcorePackage.eINSTANCE.getEAnnotation())) };
+
+ assertValidation(expectedReturnTypes, "eInverse", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEInverseOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -1035,6 +1674,21 @@
}
@Test
+ public void testEInverseOnEObjectClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class) };
+ final IType[] expectedReturnTypes = new IType[] {setType(eClassifierType(EcorePackage.eINSTANCE
+ .getEObject())) };
+
+ assertValidation(expectedReturnTypes, "eInverse", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEInverseFilteredOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -1051,6 +1705,22 @@
}
@Test
+ public void testEInverseFilteredOnEObjectClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEEnum()) };
+ final IType[] expectedReturnTypes = new IType[] {setType(eClassifierType(EcorePackage.eINSTANCE
+ .getEEnum())) };
+
+ assertValidation(expectedReturnTypes, "eInverse", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testEInverseFilteredNoType() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -1069,6 +1739,24 @@
}
@Test
+ public void testEInverseFilteredNoTypeClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEOperation()) };
+ final IType[] expectedReturnTypes = new IType[] {setType(nothingType(
+ "org.eclipse.emf.ecore.EPackage don't have inverse to EClassifierLiteral=EOperation")) };
+ final IType[] expectedAllReturnTypes = new IType[] {setType(nothingType(
+ "Nothing will be left after calling eInverse:\norg.eclipse.emf.ecore.EPackage don't have inverse to EClassifierLiteral=EOperation")) };
+
+ assertValidation(expectedReturnTypes, expectedAllReturnTypes, "eInverse", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testAllInstancesNoRootProviderEClassLiteral() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -1104,6 +1792,23 @@
}
@Test
+ public void testAllInstancesNoRootProviderEClassClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EClass.class) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(nothingType(
+ "No IRootEObjectProvider registered")) };
+ final IType[] expectedReturnAllTypes = new IType[] {sequenceType(nothingType(
+ "Nothing will be left after calling allInstances:\nNo IRootEObjectProvider registered")) };
+
+ assertValidation(expectedReturnTypes, expectedReturnAllTypes, "allInstances", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testAllInstancesNoRootProviderEClassSetLiteral() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -1140,6 +1845,23 @@
}
@Test
+ public void testAllInstancesNoRootProviderSetClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {setType(classType(EClass.class)) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(nothingType(
+ "No IRootEObjectProvider registered")) };
+ final IType[] expectedReturnAllTypes = new IType[] {sequenceType(nothingType(
+ "Nothing will be left after calling allInstances:\nNo IRootEObjectProvider registered")) };
+
+ assertValidation(expectedReturnTypes, expectedReturnAllTypes, "allInstances", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testAllInstancesEClassLiteral() {
try {
setQueryEnvironment(Query.newEnvironmentWithDefaultServices(null, new RootEObjectProvider(
@@ -1174,6 +1896,22 @@
}
@Test
+ public void testAllInstancesEClassClassType() {
+ try {
+ setQueryEnvironment(Query.newEnvironmentWithDefaultServices(null, new RootEObjectProvider(
+ EcorePackage.eINSTANCE, AnydslPackage.eINSTANCE)));
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EClass.class) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(classType(EObject.class)) };
+
+ assertValidation(expectedReturnTypes, "allInstances", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testAllInstancesEClassSetLiteral() {
try {
setQueryEnvironment(Query.newEnvironmentWithDefaultServices(null, new RootEObjectProvider(
@@ -1209,4 +1947,20 @@
}
}
+ @Test
+ public void testAllInstancesSetClassType() {
+ try {
+ setQueryEnvironment(Query.newEnvironmentWithDefaultServices(null, new RootEObjectProvider(
+ EcorePackage.eINSTANCE, AnydslPackage.eINSTANCE)));
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {setType(classType(EClass.class)) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(classType(EObject.class)) };
+
+ assertValidation(expectedReturnTypes, "allInstances", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
}
diff --git a/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/services/tests/XPathServicesValidationTest.java b/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/services/tests/XPathServicesValidationTest.java
index 2632f46..6f82856 100644
--- a/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/services/tests/XPathServicesValidationTest.java
+++ b/query/tests/org.eclipse.acceleo.query.tests/src/org/eclipse/acceleo/query/services/tests/XPathServicesValidationTest.java
@@ -21,6 +21,7 @@
import org.eclipse.acceleo.query.validation.type.EClassifierType;
import org.eclipse.acceleo.query.validation.type.IType;
import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EcorePackage;
@@ -97,6 +98,31 @@
}
@Test
+ public void testAncestorsFilterEClassClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEAnnotation())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEModelElement())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEEnum())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())), sequenceType(
+ eClassifierType(EcorePackage.eINSTANCE
+ .getEOperation())), sequenceType(
+ eClassifierType(
+ EcorePackage.eINSTANCE
+ .getEClassifier())) };
+
+ assertValidation(expectedReturnTypes, "ancestors", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testAncestorsFilterSet() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -122,6 +148,31 @@
}
@Test
+ public void testAncestorsFilterSetClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), setType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEAnnotation())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEModelElement())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEEnum())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())), sequenceType(
+ eClassifierType(EcorePackage.eINSTANCE
+ .getEOperation())), sequenceType(
+ eClassifierType(
+ EcorePackage.eINSTANCE
+ .getEClassifier())) };
+
+ assertValidation(expectedReturnTypes, "ancestors", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testAncestors() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -146,6 +197,30 @@
}
@Test
+ public void testAncestorsClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EClass.class) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEAnnotation())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEModelElement())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEEnum())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())), sequenceType(
+ eClassifierType(EcorePackage.eINSTANCE
+ .getEOperation())), sequenceType(
+ eClassifierType(
+ EcorePackage.eINSTANCE
+ .getEClassifier())) };
+
+ assertValidation(expectedReturnTypes, "ancestors", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testAncestorsFilteredSet() {
try {
@@ -165,6 +240,24 @@
}
@Test
+ public void testAncestorsFilteredSetClassType() {
+
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierSetLiteralType(
+ EcorePackage.eINSTANCE.getEPackage(), EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "ancestors", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testAncestorsFilteredSetOnEObject() {
try {
@@ -184,6 +277,24 @@
}
@Test
+ public void testAncestorsFilteredSetOnEObjectClassType() {
+
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class), eClassifierSetLiteralType(
+ EcorePackage.eINSTANCE.getEPackage(), EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "ancestors", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testAncestorsOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -200,6 +311,21 @@
}
@Test
+ public void testAncestorsOnEObjectClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEObject())) };
+
+ assertValidation(expectedReturnTypes, "ancestors", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testAncestorsFilteredNotContainedEClass() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
@@ -244,6 +370,22 @@
}
@Test
+ public void testAncestorsFilteredClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "ancestors", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testAncestorsFilteredOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -260,6 +402,22 @@
}
@Test
+ public void testAncestorsFilteredOnEObjectClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "ancestors", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testAncestorsFilteredLoweredByTypes() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -277,6 +435,23 @@
}
@Test
+ public void testAncestorsFilteredLoweredByTypesClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getETypedElement()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getETypedElement())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEOperation())) };
+
+ assertValidation(expectedReturnTypes, "ancestors", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testAncestorsFilteredLoweredByFilter() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -293,6 +468,22 @@
}
@Test
+ public void testAncestorsFilteredLoweredByFilterClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "ancestors", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testAncestorsFilteredNoType() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
@@ -368,6 +559,23 @@
}
@Test
+ public void testFollowingSiblingsClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EClass.class) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClassifier())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEObject())) };
+
+ assertValidation(expectedReturnTypes, "followingSiblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testFollowingSiblingsFilterEClass() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -385,6 +593,23 @@
}
@Test
+ public void testFollowingSiblingsFilterEClassClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEObject())) };
+
+ assertValidation(expectedReturnTypes, "followingSiblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testFollowingSiblingsFilterSet() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -402,6 +627,23 @@
}
@Test
+ public void testFollowingSiblingsFilterSetClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), setType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEObject())) };
+
+ assertValidation(expectedReturnTypes, "followingSiblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testSiblingsFollowingFilteredSet() {
try {
@@ -421,6 +663,24 @@
}
@Test
+ public void testSiblingsFollowingFilteredSetClassType() {
+
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierSetLiteralType(
+ EcorePackage.eINSTANCE.getEPackage(), EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "followingSiblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testSiblingsFollowingFilteredSetOnEObject() {
try {
@@ -440,6 +700,24 @@
}
@Test
+ public void testSiblingsFollowingFilteredSetOnEObjectClassType() {
+
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class), eClassifierSetLiteralType(
+ EcorePackage.eINSTANCE.getEPackage(), EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "followingSiblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testFollowingSiblingsOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -456,6 +734,21 @@
}
@Test
+ public void testFollowingSiblingsOnEObjectClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEObject())) };
+
+ assertValidation(expectedReturnTypes, "followingSiblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testFollowingSiblingsFilteredNotContainedEClass() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
@@ -497,6 +790,22 @@
}
@Test
+ public void testFollowingSiblingsFilteredClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClassifier()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClassifier())) };
+
+ assertValidation(expectedReturnTypes, "followingSiblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testFollowingSiblingsFilteredOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -513,6 +822,22 @@
}
@Test
+ public void testFollowingSiblingsFilteredOnEObjectClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "followingSiblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testFollowingSiblingsFilteredLoweredByTypes() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -530,6 +855,23 @@
}
@Test
+ public void testFollowingSiblingsFilteredLoweredByTypesClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getENamedElement()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getENamedElement())) };
+
+ assertValidation(expectedReturnTypes, "followingSiblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testFollowingSiblingsFilteredLoweredByFilter() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -546,6 +888,22 @@
}
@Test
+ public void testFollowingSiblingsFilteredLoweredByFilterClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "followingSiblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testFollowingSiblingsFilteredNoType() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
@@ -619,6 +977,24 @@
}
@Test
+ public void testPrecedingSiblingsClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EClass.class) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEAnnotation())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClassifier())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEStringToStringMapEntry())), sequenceType(
+ eClassifierType(EcorePackage.eINSTANCE.getEObject())) };
+
+ assertValidation(expectedReturnTypes, "precedingSiblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testPrecedingSiblingsFilterEClass() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -639,6 +1015,26 @@
}
@Test
+ public void testPrecedingSiblingsFilterEClassClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEAnnotation())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClassifier())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEStringToStringMapEntry())),
+ sequenceType(eClassifierType(EcorePackage.eINSTANCE.getEObject())) };
+
+ assertValidation(expectedReturnTypes, "precedingSiblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testPrecedingSiblingsFilterSet() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -659,6 +1055,26 @@
}
@Test
+ public void testPrecedingSiblingsFilterSetClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), setType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEAnnotation())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClassifier())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEStringToStringMapEntry())),
+ sequenceType(eClassifierType(EcorePackage.eINSTANCE.getEObject())) };
+
+ assertValidation(expectedReturnTypes, "precedingSiblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testPrecedingSiblingsFilteredSet() {
try {
@@ -678,6 +1094,24 @@
}
@Test
+ public void testPrecedingSiblingsFilteredSetClassType() {
+
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierSetLiteralType(
+ EcorePackage.eINSTANCE.getEPackage(), EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "precedingSiblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testPrecedingSiblingsFilteredSetOnEObject() {
try {
@@ -697,6 +1131,24 @@
}
@Test
+ public void testPrecedingSiblingsFilteredSetOnEObjectClassType() {
+
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class), eClassifierSetLiteralType(
+ EcorePackage.eINSTANCE.getEPackage(), EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "precedingSiblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testPrecedingSiblingsOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -754,6 +1206,22 @@
}
@Test
+ public void testPrecedingSiblingsFilteredClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClassifier()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClassifier())) };
+
+ assertValidation(expectedReturnTypes, "precedingSiblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testPrecedingSiblingsFilteredOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -770,6 +1238,22 @@
}
@Test
+ public void testPrecedingSiblingsFilteredOnEObjectClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "precedingSiblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testPrecedingSiblingsFilteredLoweredByTypes() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -788,6 +1272,24 @@
}
@Test
+ public void testPrecedingSiblingsFilteredLoweredByTypesClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getENamedElement()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClassifier())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getENamedElement())) };
+
+ assertValidation(expectedReturnTypes, "precedingSiblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testPrecedingSiblingsFilteredLoweredByFilter() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -804,6 +1306,22 @@
}
@Test
+ public void testPrecedingSiblingsFilteredLoweredByFilterClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "precedingSiblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testPrecedingSiblingsFilteredNoType() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
@@ -878,6 +1396,25 @@
}
@Test
+ public void testSiblingsClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EClass.class) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEAnnotation())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClassifier())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEStringToStringMapEntry())),
+ sequenceType(eClassifierType(EcorePackage.eINSTANCE.getEObject())) };
+
+ assertValidation(expectedReturnTypes, "siblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testSiblingsFilterEClass() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -898,6 +1435,26 @@
}
@Test
+ public void testSiblingsFilterEClassClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEAnnotation())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClassifier())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEStringToStringMapEntry())),
+ sequenceType(eClassifierType(EcorePackage.eINSTANCE.getEObject())) };
+
+ assertValidation(expectedReturnTypes, "siblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testSiblingsFilterSet() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -918,6 +1475,26 @@
}
@Test
+ public void testSiblingsFilterSetClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), setType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEAnnotation())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClassifier())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEStringToStringMapEntry())),
+ sequenceType(eClassifierType(EcorePackage.eINSTANCE.getEObject())) };
+
+ assertValidation(expectedReturnTypes, "siblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testSiblingsOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -934,6 +1511,21 @@
}
@Test
+ public void testSiblingsOnEObjectClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEObject())) };
+
+ assertValidation(expectedReturnTypes, "siblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testSiblingsFilteredNotContainedEClass() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
@@ -976,6 +1568,23 @@
}
@Test
+ public void testSiblingsFilteredClassType() {
+
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClassifier()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClassifier())) };
+
+ assertValidation(expectedReturnTypes, "siblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testSiblingsFilteredSet() {
try {
@@ -995,6 +1604,24 @@
}
@Test
+ public void testSiblingsFilteredSetClassType() {
+
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierSetLiteralType(
+ EcorePackage.eINSTANCE.getEPackage(), EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "siblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testSiblingsFilteredSetOnEObject() {
try {
@@ -1014,6 +1641,24 @@
}
@Test
+ public void testSiblingsFilteredSetOnEObjectClassType() {
+
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class), eClassifierSetLiteralType(
+ EcorePackage.eINSTANCE.getEPackage(), EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "siblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testSiblingsFilteredOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -1030,6 +1675,22 @@
}
@Test
+ public void testSiblingsFilteredOnEObjectClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EObject.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "siblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testSiblingsFilteredLoweredByTypes() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -1048,6 +1709,24 @@
}
@Test
+ public void testSiblingsFilteredLoweredByTypesClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getENamedElement()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClassifier())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEPackage())), sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getENamedElement())) };
+
+ assertValidation(expectedReturnTypes, "siblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testSiblingsFilteredLoweredByFilter() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
@@ -1064,6 +1743,22 @@
}
@Test
+ public void testSiblingsFilteredLoweredByFilterClassType() {
+ try {
+ getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
+
+ final IType[] parameterTypes = new IType[] {classType(EPackage.class), eClassifierLiteralType(
+ EcorePackage.eINSTANCE.getEClass()) };
+ final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(
+ EcorePackage.eINSTANCE.getEClass())) };
+
+ assertValidation(expectedReturnTypes, "siblings", parameterTypes);
+ } finally {
+ getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE);
+ }
+ }
+
+ @Test
public void testSiblingsFilteredNoType() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");