blob: 75471b9ecb874ced89d6cacea39d20310cb8fc33 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015 Obeo.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Obeo - initial API and implementation
*******************************************************************************/
package org.eclipse.acceleo.query.services.tests;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.eclipse.acceleo.query.runtime.IService;
import org.eclipse.acceleo.query.runtime.ServiceUtils;
import org.eclipse.acceleo.query.services.XPathServices;
import org.eclipse.acceleo.query.validation.type.EClassifierLiteralType;
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.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EcorePackage;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.junit.Test;
import static org.junit.Assert.assertTrue;
/**
* EObject services validation tests.
*
* @author <a href="mailto:yvan.lussaud@obeo.fr">Yvan Lussaud</a>
*/
public class XPathServicesValidationTest extends AbstractServicesValidationTest {
@Override
public void before() throws Exception {
super.before();
final Set<IService> services = ServiceUtils.getServices(getQueryEnvironment(), XPathServices.class);
ServiceUtils.registerServices(getQueryEnvironment(), services);
}
@Test
public void testAncestorsNotContainedEClass() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
ePkg.setNsPrefix("ePkg");
final EClass eCls1 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls1.setName("eCls1");
ePkg.getEClassifiers().add(eCls1);
final EClass eCls2 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls2.setName("eCls2");
ePkg.getEClassifiers().add(eCls2);
try {
getQueryEnvironment().registerEPackage(ePkg);
final IType[] parameterTypes = new IType[] {eClassifierType(eCls1) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(nothingType("EClassifier=eCls1 can't be contained")) };
final IType[] expectedReturnAllTypes = new IType[] {sequenceType(nothingType("Nothing will be left after calling ancestors:\nEClassifier=eCls1 can't be contained")) };
assertValidation(expectedReturnTypes, expectedReturnAllTypes, "ancestors", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(ePkg.getName());
}
}
@Test
public void testAncestorsFilterEClass() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
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.getName());
}
}
@Test
public void testAncestorsFilterSet() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
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.getName());
}
}
@Test
public void testAncestors() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {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.getName());
}
}
@Test
public void testAncestorsFilteredSet() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
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.getName());
}
}
@Test
public void testAncestorsFilteredSetOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEObject()),
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.getName());
}
}
@Test
public void testAncestorsOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE.getEObject()) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(EcorePackage.eINSTANCE
.getEObject())) };
assertValidation(expectedReturnTypes, "ancestors", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE.getName());
}
}
@Test
public void testAncestorsFilteredNotContainedEClass() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
ePkg.setNsPrefix("ePkg");
final EClass eCls1 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls1.setName("eCls1");
ePkg.getEClassifiers().add(eCls1);
final EClass eCls2 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls2.setName("eCls2");
ePkg.getEClassifiers().add(eCls2);
try {
getQueryEnvironment().registerEPackage(ePkg);
final IType[] parameterTypes = new IType[] {eClassifierType(eCls2), eClassifierLiteralType(eCls1) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(nothingType("EClassifierLiteral=eCls1 can't contain directly or indirectly EClassifier=eCls2")) };
final IType[] expectedAllReturnTypes = new IType[] {sequenceType(nothingType("Nothing will be left after calling ancestors:\nEClassifierLiteral=eCls1 can't contain directly or indirectly EClassifier=eCls2")) };
assertValidation(expectedReturnTypes, expectedAllReturnTypes, "ancestors", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(ePkg.getName());
}
}
@Test
public void testAncestorsFiltered() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
eClassifierLiteralType(EcorePackage.eINSTANCE.getEClass()) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(EcorePackage.eINSTANCE
.getEClass())) };
assertValidation(expectedReturnTypes, "ancestors", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE.getName());
}
}
@Test
public void testAncestorsFilteredOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE.getEObject()),
eClassifierLiteralType(EcorePackage.eINSTANCE.getEClass()) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(EcorePackage.eINSTANCE
.getEClass())) };
assertValidation(expectedReturnTypes, "ancestors", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE.getName());
}
}
@Test
public void testAncestorsFilteredLoweredByTypes() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
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.getName());
}
}
@Test
public void testAncestorsFilteredLoweredByFilter() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
eClassifierLiteralType(EcorePackage.eINSTANCE.getEClass()) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(EcorePackage.eINSTANCE
.getEClass())) };
assertValidation(expectedReturnTypes, "ancestors", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE.getName());
}
}
@Test
public void testAncestorsFilteredNoType() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
ePkg.setNsPrefix("ePkg");
final EClass eCls1 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls1.setName("eCls1");
final EReference ref1 = EcorePackage.eINSTANCE.getEcoreFactory().createEReference();
ref1.setName("ref1");
ref1.setContainment(true);
ref1.setEType(eCls1);
eCls1.getEStructuralFeatures().add(ref1);
ePkg.getEClassifiers().add(eCls1);
final EClass eCls2 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls2.setName("eCls2");
ePkg.getEClassifiers().add(eCls2);
try {
getQueryEnvironment().registerEPackage(ePkg);
final IType[] parameterTypes = new IType[] {eClassifierType(eCls1), eClassifierLiteralType(eCls2) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(nothingType("EClassifierLiteral=eCls2 can't contain directly or indirectly EClassifier=eCls1")) };
final IType[] expectedAllReturnTypes = new IType[] {sequenceType(nothingType("Nothing will be left after calling ancestors:\nEClassifierLiteral=eCls2 can't contain directly or indirectly EClassifier=eCls1")) };
assertValidation(expectedReturnTypes, expectedAllReturnTypes, "ancestors", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(ePkg.getName());
}
}
@Test
public void testFollowingSiblingsNotContainedEClass() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
ePkg.setNsPrefix("ePkg");
final EClass eCls1 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls1.setName("eCls1");
ePkg.getEClassifiers().add(eCls1);
final EClass eCls2 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls2.setName("eCls2");
ePkg.getEClassifiers().add(eCls2);
try {
getQueryEnvironment().registerEPackage(ePkg);
final IType[] parameterTypes = new IType[] {eClassifierType(eCls1) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(nothingType("EClassifier=eCls1 can't have following siblings")) };
final IType[] expectedReturnAllTypes = new IType[] {sequenceType(nothingType("Nothing will be left after calling followingSiblings:\nEClassifier=eCls1 can't have following siblings")) };
assertValidation(expectedReturnTypes, expectedReturnAllTypes, "followingSiblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(ePkg.getName());
}
}
@Test
public void testFollowingSiblings() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE.getEClass()) };
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.getName());
}
}
@Test
public void testFollowingSiblingsFilterEClass() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
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.getName());
}
}
@Test
public void testFollowingSiblingsFilterSet() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
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.getName());
}
}
@Test
public void testSiblingsFollowingFilteredSet() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
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.getName());
}
}
@Test
public void testSiblingsFollowingFilteredSetOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEObject()),
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.getName());
}
}
@Test
public void testFollowingSiblingsOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE.getEObject()) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(EcorePackage.eINSTANCE
.getEObject())) };
assertValidation(expectedReturnTypes, "followingSiblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE.getName());
}
}
@Test
public void testFollowingSiblingsFilteredNotContainedEClass() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
ePkg.setNsPrefix("ePkg");
final EClass eCls1 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls1.setName("eCls1");
ePkg.getEClassifiers().add(eCls1);
final EClass eCls2 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls2.setName("eCls2");
ePkg.getEClassifiers().add(eCls2);
try {
getQueryEnvironment().registerEPackage(ePkg);
final IType[] parameterTypes = new IType[] {eClassifierType(eCls2), eClassifierLiteralType(eCls1) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(nothingType("EClassifierLiteral=eCls1 can't be a following sibling of EClassifier=eCls2")) };
final IType[] expectedAllReturnTypes = new IType[] {sequenceType(nothingType("Nothing will be left after calling followingSiblings:\nEClassifierLiteral=eCls1 can't be a following sibling of EClassifier=eCls2")) };
assertValidation(expectedReturnTypes, expectedAllReturnTypes, "followingSiblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(ePkg.getName());
}
}
@Test
public void testFollowingSiblingsFiltered() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
eClassifierLiteralType(EcorePackage.eINSTANCE.getEClassifier()) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(EcorePackage.eINSTANCE
.getEClassifier())) };
assertValidation(expectedReturnTypes, "followingSiblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE.getName());
}
}
@Test
public void testFollowingSiblingsFilteredOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE.getEObject()),
eClassifierLiteralType(EcorePackage.eINSTANCE.getEClass()) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(EcorePackage.eINSTANCE
.getEClass())) };
assertValidation(expectedReturnTypes, "followingSiblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE.getName());
}
}
@Test
public void testFollowingSiblingsFilteredLoweredByTypes() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
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.getName());
}
}
@Test
public void testFollowingSiblingsFilteredLoweredByFilter() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
eClassifierLiteralType(EcorePackage.eINSTANCE.getEClass()) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(EcorePackage.eINSTANCE
.getEClass())) };
assertValidation(expectedReturnTypes, "followingSiblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE.getName());
}
}
@Test
public void testFollowingSiblingsFilteredNoType() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
ePkg.setNsPrefix("ePkg");
final EClass eCls1 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls1.setName("eCls1");
final EReference ref1 = EcorePackage.eINSTANCE.getEcoreFactory().createEReference();
ref1.setName("ref1");
ref1.setContainment(true);
ref1.setEType(eCls1);
eCls1.getEStructuralFeatures().add(ref1);
ePkg.getEClassifiers().add(eCls1);
final EClass eCls2 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls2.setName("eCls2");
ePkg.getEClassifiers().add(eCls2);
try {
getQueryEnvironment().registerEPackage(ePkg);
final IType[] parameterTypes = new IType[] {eClassifierType(eCls1), eClassifierLiteralType(eCls2) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(nothingType("EClassifierLiteral=eCls2 can't be a following sibling of EClassifier=eCls1")) };
final IType[] expectedAllReturnTypes = new IType[] {sequenceType(nothingType("Nothing will be left after calling followingSiblings:\nEClassifierLiteral=eCls2 can't be a following sibling of EClassifier=eCls1")) };
assertValidation(expectedReturnTypes, expectedAllReturnTypes, "followingSiblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(ePkg.getName());
}
}
@Test
public void testPrecedingSiblingsNotContainedEClass() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
ePkg.setNsPrefix("ePkg");
final EClass eCls1 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls1.setName("eCls1");
ePkg.getEClassifiers().add(eCls1);
final EClass eCls2 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls2.setName("eCls2");
ePkg.getEClassifiers().add(eCls2);
try {
getQueryEnvironment().registerEPackage(ePkg);
final IType[] parameterTypes = new IType[] {eClassifierType(eCls1) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(nothingType("EClassifier=eCls1 can't have preceding siblings")) };
final IType[] expectedReturnAllTypes = new IType[] {sequenceType(nothingType("Nothing will be left after calling precedingSiblings:\nEClassifier=eCls1 can't have preceding siblings")) };
assertValidation(expectedReturnTypes, expectedReturnAllTypes, "precedingSiblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(ePkg.getName());
}
}
@Test
public void testPrecedingSiblings() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE.getEClass()) };
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.getName());
}
}
@Test
public void testPrecedingSiblingsFilterEClass() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
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.getName());
}
}
@Test
public void testPrecedingSiblingsFilterSet() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
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.getName());
}
}
@Test
public void testPrecedingSiblingsFilteredSet() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
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.getName());
}
}
@Test
public void testPrecedingSiblingsFilteredSetOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEObject()),
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.getName());
}
}
@Test
public void testPrecedingSiblingsOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE.getEObject()) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(EcorePackage.eINSTANCE
.getEObject())) };
assertValidation(expectedReturnTypes, "precedingSiblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE.getName());
}
}
@Test
public void testPrecedingSiblingsFilteredNotContainedEClass() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
ePkg.setNsPrefix("ePkg");
final EClass eCls1 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls1.setName("eCls1");
ePkg.getEClassifiers().add(eCls1);
final EClass eCls2 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls2.setName("eCls2");
ePkg.getEClassifiers().add(eCls2);
try {
getQueryEnvironment().registerEPackage(ePkg);
final IType[] parameterTypes = new IType[] {eClassifierType(eCls2), eClassifierLiteralType(eCls1) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(nothingType("EClassifierLiteral=eCls1 can't be a preceding sibling of EClassifier=eCls2")) };
final IType[] expectedAllReturnTypes = new IType[] {sequenceType(nothingType("Nothing will be left after calling precedingSiblings:\nEClassifierLiteral=eCls1 can't be a preceding sibling of EClassifier=eCls2")) };
assertValidation(expectedReturnTypes, expectedAllReturnTypes, "precedingSiblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(ePkg.getName());
}
}
@Test
public void testPrecedingSiblingsFiltered() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
eClassifierLiteralType(EcorePackage.eINSTANCE.getEClassifier()) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(EcorePackage.eINSTANCE
.getEClassifier())) };
assertValidation(expectedReturnTypes, "precedingSiblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE.getName());
}
}
@Test
public void testPrecedingSiblingsFilteredOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE.getEObject()),
eClassifierLiteralType(EcorePackage.eINSTANCE.getEClass()) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(EcorePackage.eINSTANCE
.getEClass())) };
assertValidation(expectedReturnTypes, "precedingSiblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE.getName());
}
}
@Test
public void testPrecedingSiblingsFilteredLoweredByTypes() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
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.getName());
}
}
@Test
public void testPrecedingSiblingsFilteredLoweredByFilter() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
eClassifierLiteralType(EcorePackage.eINSTANCE.getEClass()) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(EcorePackage.eINSTANCE
.getEClass())) };
assertValidation(expectedReturnTypes, "precedingSiblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE.getName());
}
}
@Test
public void testPrecedingSiblingsFilteredNoType() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
ePkg.setNsPrefix("ePkg");
final EClass eCls1 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls1.setName("eCls1");
final EReference ref1 = EcorePackage.eINSTANCE.getEcoreFactory().createEReference();
ref1.setName("ref1");
ref1.setContainment(true);
ref1.setEType(eCls1);
eCls1.getEStructuralFeatures().add(ref1);
ePkg.getEClassifiers().add(eCls1);
final EClass eCls2 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls2.setName("eCls2");
ePkg.getEClassifiers().add(eCls2);
try {
getQueryEnvironment().registerEPackage(ePkg);
final IType[] parameterTypes = new IType[] {eClassifierType(eCls1), eClassifierLiteralType(eCls2) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(nothingType("EClassifierLiteral=eCls2 can't be a preceding sibling of EClassifier=eCls1")) };
final IType[] expectedAllReturnTypes = new IType[] {sequenceType(nothingType("Nothing will be left after calling precedingSiblings:\nEClassifierLiteral=eCls2 can't be a preceding sibling of EClassifier=eCls1")) };
assertValidation(expectedReturnTypes, expectedAllReturnTypes, "precedingSiblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(ePkg.getName());
}
}
@Test
public void testSiblingsNotContainedEClass() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
ePkg.setNsPrefix("ePkg");
final EClass eCls1 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls1.setName("eCls1");
ePkg.getEClassifiers().add(eCls1);
final EClass eCls2 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls2.setName("eCls2");
ePkg.getEClassifiers().add(eCls2);
try {
getQueryEnvironment().registerEPackage(ePkg);
final IType[] parameterTypes = new IType[] {eClassifierType(eCls1) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(nothingType("EClassifier=eCls1 can't have siblings")) };
final IType[] expectedReturnAllTypes = new IType[] {sequenceType(nothingType("Nothing will be left after calling siblings:\nEClassifier=eCls1 can't have siblings")) };
assertValidation(expectedReturnTypes, expectedReturnAllTypes, "siblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(ePkg.getName());
}
}
@Test
public void testSiblings() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {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.getName());
}
}
@Test
public void testSiblingsFilterEClass() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
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.getName());
}
}
@Test
public void testSiblingsFilterSet() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
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.getName());
}
}
@Test
public void testSiblingsOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE.getEObject()) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(EcorePackage.eINSTANCE
.getEObject())) };
assertValidation(expectedReturnTypes, "siblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE.getName());
}
}
@Test
public void testSiblingsFilteredNotContainedEClass() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
ePkg.setNsPrefix("ePkg");
final EClass eCls1 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls1.setName("eCls1");
ePkg.getEClassifiers().add(eCls1);
final EClass eCls2 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls2.setName("eCls2");
ePkg.getEClassifiers().add(eCls2);
try {
getQueryEnvironment().registerEPackage(ePkg);
final IType[] parameterTypes = new IType[] {eClassifierType(eCls2), eClassifierLiteralType(eCls1) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(nothingType("EClassifierLiteral=eCls1 can't be a sibling of EClassifier=eCls2")) };
final IType[] expectedAllReturnTypes = new IType[] {sequenceType(nothingType("Nothing will be left after calling siblings:\nEClassifierLiteral=eCls1 can't be a sibling of EClassifier=eCls2")) };
assertValidation(expectedReturnTypes, expectedAllReturnTypes, "siblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(ePkg.getName());
}
}
@Test
public void testSiblingsFiltered() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
eClassifierLiteralType(EcorePackage.eINSTANCE.getEClassifier()) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(EcorePackage.eINSTANCE
.getEClassifier())) };
assertValidation(expectedReturnTypes, "siblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE.getName());
}
}
@Test
public void testSiblingsFilteredSet() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
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.getName());
}
}
@Test
public void testSiblingsFilteredSetOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEObject()),
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.getName());
}
}
@Test
public void testSiblingsFilteredOnEObject() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {eClassifierType(EcorePackage.eINSTANCE.getEObject()),
eClassifierLiteralType(EcorePackage.eINSTANCE.getEClass()) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(EcorePackage.eINSTANCE
.getEClass())) };
assertValidation(expectedReturnTypes, "siblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE.getName());
}
}
@Test
public void testSiblingsFilteredLoweredByTypes() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
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.getName());
}
}
@Test
public void testSiblingsFilteredLoweredByFilter() {
try {
getQueryEnvironment().registerEPackage(EcorePackage.eINSTANCE);
final IType[] parameterTypes = new IType[] {
eClassifierType(EcorePackage.eINSTANCE.getEPackage()),
eClassifierLiteralType(EcorePackage.eINSTANCE.getEClass()) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(eClassifierType(EcorePackage.eINSTANCE
.getEClass())) };
assertValidation(expectedReturnTypes, "siblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(EcorePackage.eINSTANCE.getName());
}
}
@Test
public void testSiblingsFilteredNoType() {
final EPackage ePkg = EcorePackage.eINSTANCE.getEcoreFactory().createEPackage();
ePkg.setName("ePkg");
ePkg.setNsPrefix("ePkg");
final EClass eCls1 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls1.setName("eCls1");
final EReference ref1 = EcorePackage.eINSTANCE.getEcoreFactory().createEReference();
ref1.setName("ref1");
ref1.setContainment(true);
ref1.setEType(eCls1);
eCls1.getEStructuralFeatures().add(ref1);
ePkg.getEClassifiers().add(eCls1);
final EClass eCls2 = EcorePackage.eINSTANCE.getEcoreFactory().createEClass();
eCls2.setName("eCls2");
ePkg.getEClassifiers().add(eCls2);
final IService service = serviceLookUp("siblings", new Object[] {EcoreUtil.create(eCls1), eCls2 });
assertTrue(service != null);
final List<IType> argTypes = new ArrayList<IType>();
argTypes.add(new EClassifierType(getQueryEnvironment(), eCls1));
argTypes.add(new EClassifierLiteralType(getQueryEnvironment(), eCls2));
try {
getQueryEnvironment().registerEPackage(ePkg);
final IType[] parameterTypes = new IType[] {eClassifierType(eCls1), eClassifierLiteralType(eCls2) };
final IType[] expectedReturnTypes = new IType[] {sequenceType(nothingType("EClassifierLiteral=eCls2 can't be a sibling of EClassifier=eCls1")) };
final IType[] expectedAllReturnTypes = new IType[] {sequenceType(nothingType("Nothing will be left after calling siblings:\nEClassifierLiteral=eCls2 can't be a sibling of EClassifier=eCls1")) };
assertValidation(expectedReturnTypes, expectedAllReturnTypes, "siblings", parameterTypes);
} finally {
getQueryEnvironment().removeEPackage(ePkg.getName());
}
}
}