blob: 1af46de658b0655a7620b7dffa2cb6eefce070b6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2019 Mia-Software and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* Gregoire DUPE (Mia-Software)
* Nicolas Bros (Mia-Software)
* Grégoire Dupé (Mia-Software) - Bug 470578 - [Depercated] org.eclipse.modisco.infra.query
*******************************************************************************/
package org.eclipse.modisco.infra.query.tests;
import java.io.IOException;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.core.runtime.Status;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.modisco.facet.util.core.DebugUtils;
import org.eclipse.modisco.facet.util.pde.core.internal.exported.TargetPlatformUtils;
import org.eclipse.modisco.facet.util.pde.core.internal.exported.exception.PdeCoreUtilsException;
import org.eclipse.modisco.infra.common.core.internal.builder.AbstractMoDiscoCatalog;
import org.eclipse.modisco.infra.common.core.internal.utils.FileUtils;
import org.eclipse.modisco.infra.common.core.internal.utils.ProjectUtils;
import org.eclipse.modisco.infra.common.core.internal.validation.ValidationJob;
import org.eclipse.modisco.infra.query.JavaModelQuery;
import org.eclipse.modisco.infra.query.ModelQuery;
import org.eclipse.modisco.infra.query.ModelQueryParameter;
import org.eclipse.modisco.infra.query.ModelQuerySet;
import org.eclipse.modisco.infra.query.QueryFactory;
import org.eclipse.modisco.infra.query.core.AbstractModelQuery;
import org.eclipse.modisco.infra.query.core.ModelQuerySetCatalog;
import org.eclipse.modisco.infra.query.core.exception.ModelQueryException;
import org.eclipse.modisco.infra.query.core.exception.ModelQueryTypeCheckingException;
import org.eclipse.modisco.infra.query.runtime.ModelQueryContext;
import org.eclipse.modisco.infra.query.runtime.ModelQueryResult;
import org.eclipse.modisco.infra.query.runtime.RuntimeFactory;
import org.eclipse.modisco.infra.query.tests.samples.Bug303036Test003Query;
import org.junit.Assert;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;
@SuppressWarnings("nls")
public class UnitTests {
private static final String FILE_EXT = ".querySet"; //$NON-NLS-1$
private static final int NB_MARKERS_Q_FILE = 6;
private final ResourceSet resourceSet = new ResourceSetImpl();
private final Utils utils = new Utils(Activator.getDefault());
private final EPackage ecorePackage = this.utils.getEcorePackage();
@BeforeClass
public static void loadTarget() throws PdeCoreUtilsException {
// TargetPlatformUtils.loadTargetPlatform();
}
@Ignore // FIXME Bug 552989 temporary disable of inadequate Tycho pltaform init
@Test
public void test001() throws Exception {
final String name = "test001"; //$NON-NLS-1$
IProject projectToCreate = this.utils.createProject(name);
IFile file = projectToCreate.getFile(name + UnitTests.FILE_EXT);
createQueryFile(name, projectToCreate);
IFile javaFile = FileUtils.copyFileFromBundle(
"src/org/eclipse/modisco/infra/query/tests/samples/Test001.java", //$NON-NLS-1$
projectToCreate,
"src/org/eclipse/modisco/infra/query/tests/samples/Test001.java", //$NON-NLS-1$
Activator.getDefault().getBundle());
ProjectUtils.refresh(projectToCreate);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
FileUtils.checkNoMoreMarkerOn(javaFile, NB_MARKERS_Q_FILE);
FileUtils.checkNoMarkerOn(file);
List<ModelQueryResult> result = executeJavaQuery(name);
Assert.assertTrue(((String) result.get(0).getValue()) == "Test001"); //$NON-NLS-1$
changeQueryFile(projectToCreate, name);
javaFile = FileUtils
.copyFileFromBundle(
"src/org/eclipse/modisco/infra/query/tests/samples/Test002.java", //$NON-NLS-1$
projectToCreate,
"src/org/eclipse/modisco/infra/query/tests/samples/Test002.java", Activator.getDefault().getBundle()); //$NON-NLS-1$
ProjectUtils.refresh(projectToCreate);
FileUtils.checkNoMoreMarkerOn(javaFile, NB_MARKERS_Q_FILE);
FileUtils.checkNoMarkerOn(file);
List<ModelQueryResult> result2 = executeJavaQuery(name);
Assert.assertTrue(((String) result2.get(0).getValue()) == "Test002"); //$NON-NLS-1$
javaFile = FileUtils
.copyFileFromBundle(
"resources/Test002bis.java", //$NON-NLS-1$
projectToCreate,
"src/org/eclipse/modisco/infra/query/tests/samples/Test002.java", Activator.getDefault().getBundle()); //$NON-NLS-1$
ProjectUtils.refresh(projectToCreate);
FileUtils.checkNoMoreMarkerOn(javaFile, NB_MARKERS_Q_FILE);
FileUtils.checkNoMarkerOn(file);
List<ModelQueryResult> result3 = executeJavaQuery(name);
Assert.assertTrue(((String) result3.get(0).getValue()) == "Test002bis"); //$NON-NLS-1$
}
@Ignore // FIXME Bug 552989 temporary disable of inadequate Tycho pltaform init
@Test
public void simpleEval() throws Exception {
final String name = "test001"; //$NON-NLS-1$
IProject projectToCreate = this.utils.createProject(name);
IFile file = createQueryFile(name, projectToCreate);
IFile javaFile = FileUtils.copyFileFromBundle(
"src/org/eclipse/modisco/infra/query/tests/samples/Test001.java", //$NON-NLS-1$
projectToCreate,
"src/org/eclipse/modisco/infra/query/tests/samples/Test001.java", //$NON-NLS-1$
Activator.getDefault().getBundle());
ProjectUtils.refresh(projectToCreate);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
FileUtils.checkNoMoreMarkerOn(javaFile, NB_MARKERS_Q_FILE);
FileUtils.checkNoMarkerOn(file);
ModelQuerySetCatalog catalog = ModelQuerySetCatalog.getSingleton();
ModelQuerySet mqs = catalog.getModelQuerySet(name);
ModelQuery mq = mqs.getQueries().get(0);
AbstractModelQuery amq = catalog.getModelQueryImpl(mq);
ModelQueryResult mqr = amq.evaluate(this.ecorePackage, null);
Assert.assertTrue(((String) mqr.getValue()) == "Test001"); //$NON-NLS-1$
Assert.assertTrue(mqr.getException() == null);
ModelQueryResult mqr2 = amq.evaluate(this.ecorePackage);
Assert.assertTrue(((String) mqr2.getValue()) == "Test001"); //$NON-NLS-1$
Assert.assertTrue(mqr2.getException() == null);
}
private List<ModelQueryResult> executeJavaQuery(final String modelQuerySetName)
throws Exception {
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
Assert.assertTrue("Query catalog must not be empty.", //$NON-NLS-1$
ModelQuerySetCatalog.getSingleton().getAllModelQuerySets().size() > 0);
ModelQuerySet querySet = ModelQuerySetCatalog.getSingleton().getModelQuerySet(
modelQuerySetName);
if (querySet == null) {
Iterator<ModelQuerySet> mqSets = ModelQuerySetCatalog.getSingleton()
.getAllModelQuerySets().iterator();
StringBuffer mesg = new StringBuffer();
while (mqSets.hasNext()) {
ModelQuerySet modelQuerySet = mqSets.next();
mesg.append(modelQuerySet.getName());
if (mqSets.hasNext()) {
mesg.append(", "); //$NON-NLS-1$
}
}
IStatus status = new Status(IStatus.WARNING, Activator.PLUGIN_ID, mesg.toString());
Activator.getDefault().getLog().log(status);
throw new CoreException(status);
}
Assert.assertNotNull(querySet);
List<ModelQueryResult> result = null;
JavaModelQuery modelQuery = (JavaModelQuery) querySet.getQueries().get(0);
AbstractModelQuery modelQueryInst = ModelQuerySetCatalog.getSingleton().getModelQueryImpl(
modelQuery);
ModelQueryContext context = RuntimeFactory.eINSTANCE.createModelQueryContext();
context.getSelectedModelElements().add(this.ecorePackage);
result = modelQueryInst.evaluate(context, null);
Assert.assertEquals("Should have one result.", 1, result.size()); //$NON-NLS-1$
Assert.assertTrue("Source must be null.", //$NON-NLS-1$
result.get(0).getSource() == this.ecorePackage);
return result;
}
private void changeQueryFile(final IProject projectToCreate, final String name)
throws IOException {
IFile file = projectToCreate.getFile(name + UnitTests.FILE_EXT);
URI uri = URI.createFileURI(file.getLocation().toFile().toString());
Resource resource = this.resourceSet.getResource(uri, true);
ModelQuerySet modelQuerySet = (ModelQuerySet) resource.getContents().get(0);
JavaModelQuery modelQuery = (JavaModelQuery) modelQuerySet.getQueries().get(0);
modelQuery
.setImplementationClassName("org.eclipse.modisco.infra.query.tests.samples.Test002"); //$NON-NLS-1$
resource.save(new HashMap<String, String>());
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
}
private IFile createQueryFile(final String name, final IProject projectToCreate)
throws IOException {
IFile file = projectToCreate.getFile(name + UnitTests.FILE_EXT);
URI uri = URI.createFileURI(file.getLocation().toFile().toString());
Resource resource = this.resourceSet.createResource(uri);
ModelQuerySet modelQuerySet = QueryFactory.eINSTANCE.createModelQuerySet();
resource.getContents().add(modelQuerySet);
modelQuerySet.setDescription("my query set"); //$NON-NLS-1$
modelQuerySet.setIsEditable(true);
modelQuerySet.setName(name);
modelQuerySet.getAssociatedMetamodels().add(this.ecorePackage);
JavaModelQuery modelQuery = QueryFactory.eINSTANCE.createJavaModelQuery();
modelQuerySet.getQueries().add(modelQuery);
modelQuery.setDescription("my query"); //$NON-NLS-1$
modelQuery.setName("myQuery"); //$NON-NLS-1$
modelQuery.setReturnType(this.ecorePackage.getEClassifier("EString")); //$NON-NLS-1$
modelQuery
.setImplementationClassName("org.eclipse.modisco.infra.query.tests.samples.Test001"); //$NON-NLS-1$
modelQuery.getScope().add((EClass) this.ecorePackage.getEClassifier("EPackage")); //$NON-NLS-1$
ModelQueryParameter parameter = QueryFactory.eINSTANCE.createModelQueryParameter();
modelQuery.getParameters().add(parameter);
parameter.setName("p1"); //$NON-NLS-1$
parameter.setType(this.ecorePackage.getEClassifier("EBoolean")); //$NON-NLS-1$
Map<String, String> options = new HashMap<String, String>();
resource.save(options);
return file;
}
/**
* Tests that when the implementation of a Java query is modified, the new
* implementation is used instead of the old
*/
@Ignore // FIXME Bug 552989 temporary disable of inadequate Tycho pltaform init
@Test
public void osgiReload() throws Exception {
String name = "test002"; //$NON-NLS-1$
IProject projectToCreate = this.utils.createProject(name);
IFile file = FileUtils.copyFileFromBundle("resources/" + name //$NON-NLS-1$
+ UnitTests.FILE_EXT, projectToCreate, name + UnitTests.FILE_EXT, Activator
.getDefault().getBundle());
IFile javaFile = FileUtils.copyFileFromBundle(
"src/org/eclipse/modisco/infra/query/tests/samples/Test002.java", //$NON-NLS-1$
projectToCreate,
"src/org/eclipse/modisco/infra/query/tests/samples/Test002.java", //$NON-NLS-1$
Activator.getDefault().getBundle());
ProjectUtils.refresh(projectToCreate);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
FileUtils.checkNoMoreMarkerOn(javaFile, NB_MARKERS_Q_FILE);
FileUtils.checkNoMarkerOn(file);
AbstractModelQuery modelQueryInst = null;
Assert.assertTrue("Query catalog must not be empty.", //$NON-NLS-1$
ModelQuerySetCatalog.getSingleton().getAllModelQuerySets().size() > 1);
ModelQuerySet modelQuerySet = ModelQuerySetCatalog.getSingleton().getModelQuerySet(name);
JavaModelQuery modelQuery = (JavaModelQuery) modelQuerySet.getQueries().get(0);
modelQueryInst = ModelQuerySetCatalog.getSingleton().getModelQueryImpl(modelQuery);
ModelQueryContext context = RuntimeFactory.eINSTANCE.createModelQueryContext();
context.getSelectedModelElements().add(this.ecorePackage);
List<ModelQueryResult> result = modelQueryInst.evaluate(context, null);
Assert.assertEquals("Should have one result.", 1, result.size()); //$NON-NLS-1$
Assert.assertTrue("Source must be null.", //$NON-NLS-1$
result.get(0).getSource() == this.ecorePackage);
Assert.assertTrue(result.get(0) != null);
Assert.assertTrue(((String) result.get(0).getValue()) == "Test002"); //$NON-NLS-1$
javaFile = FileUtils.copyFileFromBundle(
"resources/Test002bis.java", //$NON-NLS-1$
projectToCreate,
"src/org/eclipse/modisco/infra/query/tests/samples/Test002.java", //$NON-NLS-1$
Activator.getDefault().getBundle());
ProjectUtils.refresh(projectToCreate);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
FileUtils.checkNoMoreMarkerOn(javaFile, NB_MARKERS_Q_FILE);
List<ModelQueryResult> result3 = executeJavaQuery(name);
Assert.assertTrue(((String) result3.get(0).getValue()) == "Test002bis"); //$NON-NLS-1$
ModelQueryContext context2 = RuntimeFactory.eINSTANCE.createModelQueryContext();
context2.getSelectedModelElements().add(this.ecorePackage);
List<ModelQueryResult> result4 = modelQueryInst.evaluate(context2, null);
Assert.assertTrue(((String) result4.get(0).getValue()) == "Test002"); //$NON-NLS-1$
}
@Test
public void oclQueryTest() throws Exception {
String name = "oclQueryTest"; //$NON-NLS-1$
IProject projectToCreate = this.utils.createProject(name);
IFile file = FileUtils.copyFileFromBundle("resources/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
projectToCreate, name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
ProjectUtils.refresh(projectToCreate);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
FileUtils.checkNoMarkerOn(file);
ModelQuerySetCatalog catalog = ModelQuerySetCatalog.getSingleton();
ModelQuerySet modelQuerySet = catalog.getModelQuerySet(name);
ModelQuery modelQuery = modelQuerySet.getQuery("oclQueryTest"); //$NON-NLS-1$
AbstractModelQuery modelQueryInst = catalog.getModelQueryImpl(modelQuery);
ModelQueryContext context = RuntimeFactory.eINSTANCE.createModelQueryContext();
context.getSelectedModelElements().add(this.ecorePackage);
List<ModelQueryResult> result = modelQueryInst.evaluate(context, null);
Assert.assertEquals(this.ecorePackage, result.get(0).getValue());
}
@Test
public void oclQueryTest2() throws Exception {
String name = "oclQueryTest2"; //$NON-NLS-1$
IProject projectToCreate = this.utils.createProject(name);
IFile file = FileUtils.copyFileFromBundle("resources/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
projectToCreate, name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
ProjectUtils.refresh(projectToCreate);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
FileUtils.checkNoMarkerOn(file);
ModelQuerySetCatalog catalog = ModelQuerySetCatalog.getSingleton();
ModelQuerySet modelQuerySet = catalog.getModelQuerySet(name);
ModelQuery modelQuery = modelQuerySet.getQuery("oclQueryTest"); //$NON-NLS-1$
AbstractModelQuery modelQueryInst = catalog.getModelQueryImpl(modelQuery);
ModelQueryContext context = RuntimeFactory.eINSTANCE.createModelQueryContext();
context.getSelectedModelElements().add(this.ecorePackage);
modelQueryInst.evaluate(context, null);
List<ModelQueryResult> result = modelQueryInst.evaluate(context, null);
Assert.assertTrue(result.get(0).getException() instanceof ModelQueryTypeCheckingException);
}
@Test
public void oclQueryTest3() throws Exception {
String name = "oclQueryTest3"; //$NON-NLS-1$
IProject projectToCreate = this.utils.createProject(name);
IFile file = FileUtils.copyFileFromBundle("resources/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
projectToCreate, name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
ProjectUtils.refresh(projectToCreate);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
FileUtils.checkNoMarkerOn(file);
ModelQuerySetCatalog catalog = ModelQuerySetCatalog.getSingleton();
ModelQuerySet modelQuerySet = catalog.getModelQuerySet(name);
ModelQuery modelQuery = modelQuerySet.getQuery("oclQueryTest"); //$NON-NLS-1$
AbstractModelQuery modelQueryInst = catalog.getModelQueryImpl(modelQuery);
ModelQueryContext context = RuntimeFactory.eINSTANCE.createModelQueryContext();
context.getSelectedModelElements().add(this.ecorePackage);
List<ModelQueryResult> result = modelQueryInst.evaluate(context, null);
Assert.assertTrue(result.get(0).getException() instanceof ModelQueryTypeCheckingException);
}
private static final int EMFMQQUERYTEST_EXPECTED_RESULT = 5;
@Ignore // FIXME Bug 552989 temporary disable of inadequate Tycho pltaform init
@Test
public void emfmqQueryTest() throws Exception {
String name = "emfmqQueryTest"; //$NON-NLS-1$
IProject projectToCreate = this.utils.createProject(name);
IFile file = FileUtils.copyFileFromBundle("resources/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
projectToCreate, name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
IFile javaFile = FileUtils.copyFileFromBundle(
"src/org/eclipse/modisco/infra/query/tests/samples/EmfmqQueryTest.java", //$NON-NLS-1$
projectToCreate,
"src/org/eclipse/modisco/infra/query/tests/samples/EmfmqQueryTest.java", //$NON-NLS-1$
Activator.getDefault().getBundle());
ProjectUtils.refresh(projectToCreate);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
FileUtils.checkNoMoreMarkerOn(javaFile, NB_MARKERS_Q_FILE);
FileUtils.checkNoMarkerOn(file);
ModelQuerySetCatalog catalog = ModelQuerySetCatalog.getSingleton();
ModelQuerySet modelQuerySet = catalog.getModelQuerySet(name);
ModelQuery modelQuery = modelQuerySet.getQueries().get(0);
AbstractModelQuery modelQueryInst = catalog.getModelQueryImpl(modelQuery);
ModelQueryContext context = RuntimeFactory.eINSTANCE.createModelQueryContext();
context.getSelectedModelElements().add(this.ecorePackage);
List<ModelQueryResult> result = modelQueryInst.evaluate(context, null);
if (result.get(0).getException() != null) {
throw new Exception(result.get(0).getException());
}
Assert.assertEquals(UnitTests.EMFMQQUERYTEST_EXPECTED_RESULT, ((Collection<?>) result
.get(0).getValue()).size());
}
@Test
public void jxpathQueryTest() throws Exception {
String name = "jxpathQueryTest"; //$NON-NLS-1$
IProject projectToCreate = this.utils.createProject(name);
IFile file = FileUtils.copyFileFromBundle("resources/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
projectToCreate, name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
ProjectUtils.refresh(projectToCreate);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
FileUtils.checkNoMarkerOn(file);
ModelQuerySetCatalog catalog = ModelQuerySetCatalog.getSingleton();
ModelQuerySet modelQuerySet = catalog.getModelQuerySet(name);
ModelQuery modelQuery = modelQuerySet.getQueries().get(0);
AbstractModelQuery modelQueryInst = catalog.getModelQueryImpl(modelQuery);
ModelQueryContext context = RuntimeFactory.eINSTANCE.createModelQueryContext();
context.getSelectedModelElements().add(this.ecorePackage);
List<ModelQueryResult> result = modelQueryInst.evaluate(context, null);
Assert.assertEquals("ecore", result.get(0).getValue()); //$NON-NLS-1$
// Assert.assertEquals(5,((Collection<?>)result.get(0).getValue()).size());
}
/**
* Using platform protocol to refer Ecore model.
*
* @throws ModelQueryException
*/
@Test
public void installedQuery01() throws ModelQueryException {
ModelQuerySetCatalog catalog = ModelQuerySetCatalog.getSingleton();
ModelQuerySet modelQuerySet = catalog.getModelQuerySet("modisco.infra.query.tests.01"); //$NON-NLS-1$
ModelQuery modelQuery = modelQuerySet.getQueries().get(0);
AbstractModelQuery modelQueryInst = catalog.getModelQueryImpl(modelQuery);
ModelQueryContext context = RuntimeFactory.eINSTANCE.createModelQueryContext();
context.getSelectedModelElements().add(this.ecorePackage);
List<ModelQueryResult> result = modelQueryInst.evaluate(context, null);
if (result.get(0).getException() != null) {
Exception e = result.get(0).getException();
IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
Activator.getDefault().getLog().log(status);
Assert.fail("No exception is expected."); //$NON-NLS-1$
}
Assert.assertEquals("", "Test001", result.get(0) //$NON-NLS-1$ //$NON-NLS-2$
.getValue());
}
/**
* Using http protocol to refer Ecore model.
*
* @throws ModelQueryException
*/
@Test
public void installedQuery02() throws ModelQueryException {
ModelQuerySetCatalog catalog = ModelQuerySetCatalog.getSingleton();
ModelQuerySet modelQuerySet = catalog.getModelQuerySet("modisco.infra.query.tests.02"); //$NON-NLS-1$
ModelQuery modelQuery = modelQuerySet.getQueries().get(0);
AbstractModelQuery modelQueryInst = catalog.getModelQueryImpl(modelQuery);
ModelQueryContext context = RuntimeFactory.eINSTANCE.createModelQueryContext();
context.getSelectedModelElements().add(this.ecorePackage);
List<ModelQueryResult> result = modelQueryInst.evaluate(context, null);
if (result.get(0).getException() != null) {
Exception e = result.get(0).getException();
IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
Activator.getDefault().getLog().log(status);
Assert.fail("No exception is expected."); //$NON-NLS-1$
}
Assert.assertEquals("", "Test001", result.get(0) //$NON-NLS-1$ //$NON-NLS-2$
.getValue());
}
@Test
public void wrongName() throws Exception {
String name = "wrongName"; //$NON-NLS-1$
wrongX(name, 1);
}
@Test
public void wrongResultType() throws Exception {
String name = "wrongResultType"; //$NON-NLS-1$
wrongX(name, 1);
}
@Test
public void wrongScope() throws Exception {
String name = "wrongScope"; //$NON-NLS-1$
wrongX(name, 1);
}
@Test
public void nullResultType() throws Exception {
String name = "nullResultType"; //$NON-NLS-1$
wrongX(name, 2);
}
@Test
public void uniqueName() throws Exception {
String name = "uniqueName"; //$NON-NLS-1$
wrongX(name, 2);
}
@Test
public void parameterUniqueName() throws Exception {
String name = "parameterUniqueName"; //$NON-NLS-1$
wrongX(name, 2);
}
/**
* The query declares that it returns EBoolean, whereas the implementation
* class returns an Integer
*/
@Test
public void returnType() throws Exception {
String name = "returnType"; //$NON-NLS-1$
wrongX(name, 1);
}
/**
* The query declares that it returns a collection of EClass, whereas the
* implementation class returns a collection of Boolean
*/
@Test
public void returnTypeMulti() throws Exception {
String name = "returnTypeMulti"; //$NON-NLS-1$
wrongX(name, 1);
}
/**
* The query declares EObject as a scope, whereas the implementation class
* defines EClass (which is more restrictive)
*/
@Test
public void scope() throws Exception {
String name = "scope"; //$NON-NLS-1$
wrongX(name, 1);
}
private IMarker[] wrongX(final String name, final int nbOfExpectedMarkers) throws Exception {
return wrongX(name, nbOfExpectedMarkers, new Runnable() {
public void run(final IProject project) throws Exception {
// Empty
}
});
}
private IMarker[] wrongX(final String name, final int nbOfExpectedMarkers,
final Runnable runnable) throws Exception {
IMarker[] markers = null;
IProject projectToCreate = this.utils.createProject(name);
FileUtils.copyFileFromBundle("resources/validation/" + name //$NON-NLS-1$
+ UnitTests.FILE_EXT, projectToCreate, name + UnitTests.FILE_EXT, Activator
.getDefault().getBundle());
runnable.run(projectToCreate);
ProjectUtils.refresh(projectToCreate);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
ModelQuerySetCatalog catalog = ModelQuerySetCatalog.getSingleton();
Assert.assertEquals(null, catalog.getModelQuerySet(name));
IFile file = projectToCreate.getFile(name + UnitTests.FILE_EXT);
markers = file
.findMarkers(ValidationJob.EMF_PROBLEM_MARKER, true, IResource.DEPTH_INFINITE);
if (nbOfExpectedMarkers != markers.length) {
StringBuilder errorMessage = new StringBuilder();
errorMessage.append("Wrong number of markers. Expected " + nbOfExpectedMarkers
+ ", got " + markers.length + ":\n");
for (IMarker marker : markers) {
errorMessage.append(marker.getAttribute("message") + "\n");
}
Assert.assertTrue(errorMessage.toString(), false);
}
return markers;
}
@Test
public void wrongNameInInstalledQuerySet() {
ModelQuerySetCatalog catalog = ModelQuerySetCatalog.getSingleton();
Assert.assertEquals(null, catalog.getModelQuerySet("modisco.infra.query.tests.03.querySet")); //$NON-NLS-1$
}
@Ignore // FIXME Bug 552989 temporary disable of inadequate Tycho pltaform init
@Test
public void resourceSet() throws Exception {
String name = "test002"; //$NON-NLS-1$
IProject projectToCreate = this.utils.createProject(name);
IFile file = FileUtils.copyFileFromBundle("resources/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
projectToCreate, name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
IFile javaFile = FileUtils.copyFileFromBundle(
"src/org/eclipse/modisco/infra/query/tests/samples/Test002.java", //$NON-NLS-1$
projectToCreate,
"src/org/eclipse/modisco/infra/query/tests/samples/Test002.java", //$NON-NLS-1$
Activator.getDefault().getBundle());
ProjectUtils.refresh(projectToCreate);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
FileUtils.checkNoMoreMarkerOn(javaFile, NB_MARKERS_Q_FILE);
FileUtils.checkNoMarkerOn(file);
ModelQuerySet mqs = ModelQuerySetCatalog.getSingleton().getModelQuerySet(name);
URI ecoreMmUri = URI.createURI("http://www.eclipse.org/MoDisco/infra/query/0.8.incubation"); //$NON-NLS-1$
Resource queryMmResource = this.resourceSet.getResource(ecoreMmUri, true);
EPackage queryPackage = (EPackage) queryMmResource.getContents().get(0);
EClass mqsEClass = (EClass) queryPackage.getEClassifier("ModelQuerySet"); //$NON-NLS-1$
Assert.assertEquals("", mqs.eClass(), mqsEClass); //$NON-NLS-1$
}
@Test
public void resourceSet2() throws Exception {
String name = "resourceSet2"; //$NON-NLS-1$
IProject projectToCreate = this.utils.createProject(name);
IFile file = FileUtils.copyFileFromBundle("resources/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
projectToCreate, name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
ProjectUtils.refresh(projectToCreate);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
FileUtils.checkNoMarkerOn(file);
ModelQuerySet mqs = ModelQuerySetCatalog.getSingleton().getModelQuerySet(name);
EClass mqsEClass = getMqsMetaClass("platform:/plugin/org.eclipse.modisco.infra.query/model/query.ecore"); //$NON-NLS-1$
Assert.assertNotNull(mqs);
Assert.assertNotSame("", mqs.eClass(), mqsEClass); //$NON-NLS-1$
}
@Test
public void resourceSet3() {
EClass mqsEClass = getMqsMetaClass("platform:/plugin/org.eclipse.modisco.infra.query/model/query.ecore"); //$NON-NLS-1$
EClass mqsEClass2 = getMqsMetaClass("http://www.eclipse.org/MoDisco/infra/query/0.8.incubation"); //$NON-NLS-1$
Assert.assertNotSame("", mqsEClass, mqsEClass2); //$NON-NLS-1$
}
private EClass getMqsMetaClass(final String uri) {
URI ecoreMmUri = URI.createURI(uri);
Resource queryMmResource = this.resourceSet.getResource(ecoreMmUri, true);
EPackage queryPackage = (EPackage) queryMmResource.getContents().get(0);
EClass mqsEClass = (EClass) queryPackage.getEClassifier("ModelQuerySet"); //$NON-NLS-1$
return mqsEClass;
}
@Test
public void modiscoProtocol() {
URI uri = URI.createURI("modisco:/query/modisco.infra.query.tests.01"); //$NON-NLS-1$
Resource r = this.resourceSet.getResource(uri, true);
EObject root = r.getContents().get(0);
if (root instanceof ModelQuerySet) {
ModelQuerySet mqs = (ModelQuerySet) root;
Assert.assertEquals("modisco.infra.query.tests.01", mqs.getName()); //$NON-NLS-1$
} else {
Assert.fail("A ModelQuerySet instance is expected as root element."); //$NON-NLS-1$
}
}
// //@Test
// public void propertiesTest() {
// try {
// String name = "propertiesTest";
// IProject projectToCreate = this.utils.createProject(name);
// this.utils.copyFileFormBundle("resources/" + name + UnitTests.FILE_EXT,
// projectToCreate, name + UnitTests.FILE_EXT);
// this.utils.copyFileFormBundle("resources/" + name + ".mdProperties",
// projectToCreate, name + ".mdProperties");
// ProjectUtils.refresh(projectToCreate);
//
// ModelQuerySetCatalog catalog = ModelQuerySetCatalog.getSingleton();
// ModelQuerySet modelQuerySet = catalog.getModelQuerySet(name);
//
// List<Object> objectList = modelQuerySet.getValue("simpleProperty");
// Assert.assertEquals(2, objectList.size());
// Assert.assertTrue(objectList.contains("a"));
// Assert.assertTrue(objectList.contains("b"));
// List<Object> objectList2 = modelQuerySet.getValue("propertyType1");
// Assert.assertEquals(1, objectList2.size());
// Assert.assertTrue(objectList2.contains("val1"));
// List<Object> objectList3 = modelQuerySet.getValue("object");
// Assert.assertEquals(1, objectList3.size());
// Assert.assertTrue(objectList3.contains(this.ecorePackage));
// } catch (Exception e) {
// IStatus status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e
// .getMessage(), e);
// Activator.getDefault().getLog().log(status);
// Assert.fail(e.getMessage());
// }
// }
/** Bug 303036 - implements IJavaModelQuery may be done by a superclass */
@Test
public void bug303036() throws ModelQueryException {
ModelQuerySetCatalog catalog = ModelQuerySetCatalog.getSingleton();
ModelQuerySet modelQuerySet = catalog.getModelQuerySet("Bug303036"); //$NON-NLS-1$
ModelQuery modelQueryDescription = null;
for (ModelQuery modelQuery : modelQuerySet.getQueries()) {
if (modelQuery.getName().equals("bug303036")) { //$NON-NLS-1$
modelQueryDescription = modelQuery;
break;
}
}
Assert.assertNotNull(modelQueryDescription);
AbstractModelQuery myModelQuery = catalog.getModelQueryImpl(modelQueryDescription);
String result = (String) myModelQuery.basicEvaluate(modelQuerySet);
Assert.assertEquals(result, Bug303036Test003Query.RESULT);
}
@Test
public void wrongImplementationClassName() throws Exception {
String name = "wrongImplementationClassName"; //$NON-NLS-1$
wrongX(name, 1);
}
@Test
public void wrongImplementationClassInterface() throws Exception {
String name = "wrongImplementationClassInterface"; //$NON-NLS-1$
wrongX(name, 1, new Runnable() {
public void run(final IProject project) throws Exception {
FileUtils
.copyFileFromBundle(
"src/org/eclipse/modisco/infra/query/tests/samples/WrongImplementationClassInterface.java", //$NON-NLS-1$
project,
"src/org/eclipse/modisco/infra/query/tests/samples/WrongImplementationClassInterface.java", //$NON-NLS-1$
Activator.getDefault().getBundle());
}
});
}
private interface Runnable {
public void run(IProject project) throws Exception;
}
/**
* Bug 306724 - deleting a project containing a query set does not remove
* the query set from its catalog
*/
@Test
public void bug306724() throws Exception {
String name = "bug306724"; //$NON-NLS-1$
IProject project = this.utils.createProject(name);
IFile file = FileUtils.copyFileFromBundle("resources/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
project, name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
ProjectUtils.refresh(project);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
FileUtils.checkNoMarkerOn(file);
ModelQuerySet querySet = ModelQuerySetCatalog.getSingleton().getModelQuerySet(name);
Assert.assertNotNull(querySet);
project.close(new NullProgressMonitor());
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
querySet = ModelQuerySetCatalog.getSingleton().getModelQuerySet(name);
Assert.assertNull(querySet);
project.open(new NullProgressMonitor());
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
FileUtils.checkNoMarkerOn(file);
querySet = ModelQuerySetCatalog.getSingleton().getModelQuerySet(name);
Assert.assertNotNull(querySet);
project.delete(true, new NullProgressMonitor());
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
querySet = ModelQuerySetCatalog.getSingleton().getModelQuerySet(name);
Assert.assertNull(querySet);
}
/**
* Bug 307095 - the validation state of a Java query is not updated when the
* Java class is fixed
*/
@Ignore // FIXME Bug 552989 temporary disable of inadequate Tycho pltaform init
@Test
public void bug307095() throws Exception {
final String name = "bug307095"; //$NON-NLS-1$
IProject project = this.utils.createProject(name);
FileUtils.copyFileFromBundle("resources/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
project, name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
ProjectUtils.refresh(project);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
IFile queryFile = project.getFile(name + UnitTests.FILE_EXT);
IMarker[] markers = queryFile.findMarkers(ValidationJob.EMF_PROBLEM_MARKER, true,
IResource.DEPTH_INFINITE);
Assert.assertEquals(1, markers.length);
FileUtils.copyFileFromBundle(
"src/org/eclipse/modisco/infra/query/tests/samples/Test001.java", //$NON-NLS-1$
project, "src/org/eclipse/modisco/infra/query/tests/samples/Test001.java", //$NON-NLS-1$
Activator.getDefault().getBundle());
ProjectUtils.refresh(project);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
markers = queryFile.findMarkers(ValidationJob.EMF_PROBLEM_MARKER, true,
IResource.DEPTH_INFINITE);
Assert.assertEquals(0, markers.length);
}
/**
* Bug 307095 - the validation state of a Java query is not updated when the
* Java class is fixed
*/
@Ignore // FIXME Bug 552989 temporary disable of inadequate Tycho pltaform init
@Test
public void bug307095v2() throws Exception {
final String name = "bug307095v2"; //$NON-NLS-1$
IProject project = this.utils.createProject(name);
FileUtils.copyFileFromBundle("resources/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
project, name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
FileUtils.copyFileFromBundle("resources/bug307095v2_Test001.java", //$NON-NLS-1$
project, "src/org/eclipse/modisco/infra/query/tests/samples/Test001.java", //$NON-NLS-1$
Activator.getDefault().getBundle());
ProjectUtils.refresh(project);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
IFile queryFile = project.getFile(name + UnitTests.FILE_EXT);
IMarker[] markers = queryFile.findMarkers(ValidationJob.EMF_PROBLEM_MARKER, true,
IResource.DEPTH_INFINITE);
Assert.assertEquals(1, markers.length);
FileUtils.copyFileFromBundle(
"src/org/eclipse/modisco/infra/query/tests/samples/Test001.java", //$NON-NLS-1$
project, "src/org/eclipse/modisco/infra/query/tests/samples/Test001.java", //$NON-NLS-1$
Activator.getDefault().getBundle());
ProjectUtils.refresh(project);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
markers = queryFile.findMarkers(ValidationJob.EMF_PROBLEM_MARKER, true,
IResource.DEPTH_INFINITE);
Assert.assertEquals(0, markers.length);
FileUtils.copyFileFromBundle("resources/bug307095v2_Test001.java", //$NON-NLS-1$
project, "src/org/eclipse/modisco/infra/query/tests/samples/Test001.java", //$NON-NLS-1$
Activator.getDefault().getBundle());
ProjectUtils.refresh(project);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
markers = queryFile.findMarkers(ValidationJob.EMF_PROBLEM_MARKER, true,
IResource.DEPTH_INFINITE);
Assert.assertEquals(1, markers.length);
}
/**
* Bug 307095 - the validation state of a Java query is not updated when the
* Java class is fixed
*/
@Ignore // FIXME Bug 552989 temporary disable of inadequate Tycho pltaform init
@Test
public void bug307095v3() throws Exception {
final String name = "bug307095v3"; //$NON-NLS-1$
// Create MoDisco project
IProject project = this.utils.createProject(name);
FileUtils.copyFileFromBundle("resources/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
project, name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
FileUtils.copyFileFromBundle(
"src/org/eclipse/modisco/infra/query/tests/samples/Bug307095v3.java", //$NON-NLS-1$
project, "src/org/eclipse/modisco/infra/query/tests/samples/Bug307095v3.java", //$NON-NLS-1$
Activator.getDefault().getBundle());
ProjectUtils.refresh(project);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
IFile queryFile = project.getFile(name + UnitTests.FILE_EXT);
IMarker[] markers = queryFile.findMarkers(ValidationJob.EMF_PROBLEM_MARKER, true,
IResource.DEPTH_INFINITE);
Assert.assertEquals(1, markers.length);
// Create helper project
IProject projectHelper = ProjectUtils.createTestPluginProject(
name + "helper", Activator.getDefault().getBundle(), "."); //$NON-NLS-1$ //$NON-NLS-2$
FileUtils
.copyFileFromBundle(
"src/org/eclipse/modisco/infra/query/tests/samples/bug307095/HelperBug307095v3.java", //$NON-NLS-1$
projectHelper,
"src/org/eclipse/modisco/infra/query/tests/samples/bug307095/HelperBug307095v3.java", //$NON-NLS-1$
Activator.getDefault().getBundle());
ProjectUtils.refresh(projectHelper);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
markers = queryFile.findMarkers(ValidationJob.EMF_PROBLEM_MARKER, true,
IResource.DEPTH_INFINITE);
Assert.assertEquals(0, markers.length);
}
/**
* Bug 307187 - AbstractMoDiscoCatalog and name conflicts : If two querySets
* have the same name, only one will be registered in the catalog and the
* user will never be informed about this problem.
*/
@Test
public void bug307187() throws Exception {
final String name = "bug307187"; //$NON-NLS-1$
final String dir1 = "1/"; //$NON-NLS-1$
final String dir2 = "2/"; //$NON-NLS-1$
IProject project = this.utils.createProject(name);
FileUtils.copyFileFromBundle("resources/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
project, dir1 + name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
FileUtils.copyFileFromBundle("resources/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
project, dir2 + name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
ProjectUtils.refresh(project);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
IFile queryFile1 = project.getFile(new Path(dir1 + name + UnitTests.FILE_EXT));
IFile queryFile2 = project.getFile(new Path(dir2 + name + UnitTests.FILE_EXT));
IMarker[] markers1 = queryFile1.findMarkers(null, true, IResource.DEPTH_INFINITE);
IMarker[] markers2 = queryFile2.findMarkers(null, true, IResource.DEPTH_INFINITE);
Assert.assertEquals(1, markers1.length + markers2.length);
}
/**
* Bug 309657 - Moving facet or query models generates wrong problem
* messages
*/
@Test
public void bug309657() throws Exception {
final String name = "bug309657"; //$NON-NLS-1$
IProject project = this.utils.createProject(name);
FileUtils.copyFileFromBundle("resources/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
project, name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
ProjectUtils.refresh(project);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
IFolder folder = project.getFolder("f1");
folder.create(true, true, new NullProgressMonitor());
// for (int i = 0; i < 5; i++) {
IFile sourceFile = project.getFile(name + UnitTests.FILE_EXT);
IPath sourcePath = sourceFile.getFullPath();
IPath targetPath = new Path(folder.getFullPath() + "/" + name + UnitTests.FILE_EXT);
sourceFile.move(targetPath, true, new NullProgressMonitor());
ProjectUtils.refresh(project);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
IFile targetFile = ResourcesPlugin.getWorkspace().getRoot().getFile(targetPath);
IMarker[] markers = targetFile.findMarkers(AbstractMoDiscoCatalog.NAME_CONFLICTS_MARKER,
true, IResource.DEPTH_INFINITE);
Assert.assertEquals(0, markers.length);
targetFile.move(sourcePath, true, new NullProgressMonitor());
ProjectUtils.refresh(project);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
markers = sourceFile.findMarkers(AbstractMoDiscoCatalog.NAME_CONFLICTS_MARKER, true,
IResource.DEPTH_INFINITE);
Assert.assertEquals(0, markers.length);
// }
}
/**
* Check that a model stored in the catalog in contained in resource.
*
* @throws Exception
*/
@Test
public void bug310269() throws Exception {
final String name = "bug310269"; //$NON-NLS-1$
IProject project = this.utils.createProject(name);
IFile file = FileUtils.copyFileFromBundle("modisco/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
project, name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
ProjectUtils.refresh(project);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
FileUtils.checkNoMarkerOn(file);
ModelQuerySet mqs = ModelQuerySetCatalog.getSingleton().getModelQuerySet(name);
Assert.assertNotNull(mqs);
Assert.assertNotNull(mqs.eResource());
project.getFile(name + UnitTests.FILE_EXT).delete(true, new NullProgressMonitor());
ProjectUtils.refresh(project);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
mqs = ModelQuerySetCatalog.getSingleton().getModelQuerySet(name);
Assert.assertNotNull(mqs);
Assert.assertNotNull(mqs.eResource());
}
/**
* Name conflict markers not cleared when closing or deleting other project
*
* @throws Exception
*/
@Test
public void bug310599() throws Exception {
final String name = "bug310599"; //$NON-NLS-1$
IProject project1 = this.utils.createProject(name + "_1");
IFile file1 = FileUtils.copyFileFromBundle("resources/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
project1, name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
ProjectUtils.refresh(project1);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
IProject project2 = this.utils.createProject(name + "_2");
IFile file2 = FileUtils.copyFileFromBundle("resources/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
project2, name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
ProjectUtils.refresh(project2);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
IMarker[] markers1 = file1.findMarkers(null, true, IResource.DEPTH_INFINITE);
IMarker[] markers2 = file2.findMarkers(null, true, IResource.DEPTH_INFINITE);
Assert.assertEquals(1, markers1.length + markers2.length);
if (markers2.length == 1) {
project1.close(new NullProgressMonitor());
ProjectUtils.refresh(project2);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
FileUtils.checkNoMarkerOn(file2);
} else {
project2.close(new NullProgressMonitor());
ProjectUtils.refresh(project1);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
FileUtils.checkNoMarkerOn(file1);
}
}
/**
* Name conflict markers not cleared when closing or deleting other project
*
* @throws Exception
*/
@Test
public void bug310599v2() throws Exception {
final String name = "bug310599"; //$NON-NLS-1$
IProject project1 = this.utils.createProject(name + "_1");
IFile file1 = FileUtils.copyFileFromBundle("resources/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
project1, name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
ProjectUtils.refresh(project1);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
IProject project2 = this.utils.createProject(name + "_2");
IFile file2 = FileUtils.copyFileFromBundle("resources/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
project2, name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
ProjectUtils.refresh(project2);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
IProject project3 = this.utils.createProject(name + "_3");
IFile file3 = FileUtils.copyFileFromBundle("resources/" + name + UnitTests.FILE_EXT, //$NON-NLS-1$
project3, name + UnitTests.FILE_EXT, Activator.getDefault().getBundle());
ProjectUtils.refresh(project3);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
IMarker[] markers1 = file1.findMarkers(null, true, IResource.DEPTH_INFINITE);
IMarker[] markers2 = file2.findMarkers(null, true, IResource.DEPTH_INFINITE);
IMarker[] markers3 = file3.findMarkers(null, true, IResource.DEPTH_INFINITE);
Assert.assertEquals(2, markers1.length + markers2.length + markers3.length);
if (markers1.length == 0) {
project1.close(new NullProgressMonitor());
project2.close(new NullProgressMonitor());
ProjectUtils.refresh(project3);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
FileUtils.checkNoMarkerOn(file3);
} else if (markers2.length == 0) {
project2.close(new NullProgressMonitor());
project3.close(new NullProgressMonitor());
ProjectUtils.refresh(project1);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
FileUtils.checkNoMarkerOn(file1);
} else {
project3.close(new NullProgressMonitor());
project1.close(new NullProgressMonitor());
ProjectUtils.refresh(project2);
ModelQuerySetCatalog.getSingleton().waitUntilBuilt();
FileUtils.checkNoMarkerOn(file2);
}
}
}