blob: a7a60d12d9a8c255b191f8de3e6ee5a2440606d7 [file] [log] [blame]
/**
* Copyright (c) 2009, 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:
* Nicolas Guyomar (Mia-Software) - initial API and implementation
*/
package org.eclipse.modisco.java.queries.tests;
import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EObject;
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.infra.query.ModelQuery;
import org.eclipse.modisco.infra.query.ModelQuerySet;
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.java.ClassDeclaration;
import org.eclipse.modisco.java.FieldDeclaration;
import org.eclipse.modisco.java.MethodDeclaration;
import org.eclipse.modisco.java.TypeAccess;
import org.junit.Assert;
import org.junit.Test;
@SuppressWarnings("boxing")
public class ModifierJavaQueriesTest {
private final String name = "modifierJavaQueries"; //$NON-NLS-1$
private final ResourceSet resourceSet = new ResourceSetImpl();
@Test
public void modifierJavaQueriesTest() throws ModelQueryException {
ModelQuerySetCatalog catalog = ModelQuerySetCatalog.getSingleton();
ModelQuerySet querySet = catalog.getModelQuerySet(this.name);
Assert.assertNotNull(querySet);
// Retrieving all the queries for further testing
ModelQuery queryIsAbstract = querySet.getQuery("isAbstract"); //$NON-NLS-1$
Assert.assertNotNull(queryIsAbstract);
ModelQuery queryIsAccess = querySet.getQuery("isAccess"); //$NON-NLS-1$
Assert.assertNotNull(queryIsAccess);
ModelQuery queryIsDefault = querySet.getQuery("isDefault"); //$NON-NLS-1$
Assert.assertNotNull(queryIsDefault);
ModelQuery queryIsDeprecated = querySet.getQuery("isDeprecated"); //$NON-NLS-1$
Assert.assertNotNull(queryIsDeprecated);
ModelQuery queryIsFinal = querySet.getQuery("isFinal"); //$NON-NLS-1$
Assert.assertNotNull(queryIsFinal);
ModelQuery queryIsGenerated = querySet.getQuery("isGenerated"); //$NON-NLS-1$
Assert.assertNotNull(queryIsGenerated);
ModelQuery queryIsNative = querySet.getQuery("isNative"); //$NON-NLS-1$
Assert.assertNotNull(queryIsNative);
ModelQuery queryIsOverridden = querySet.getQuery("isOverridden"); //$NON-NLS-1$
Assert.assertNotNull(queryIsOverridden);
ModelQuery queryIsPrivate = querySet.getQuery("isPrivate"); //$NON-NLS-1$
Assert.assertNotNull(queryIsPrivate);
ModelQuery queryIsProtected = querySet.getQuery("isProtected"); //$NON-NLS-1$
Assert.assertNotNull(queryIsProtected);
ModelQuery queryIsPublic = querySet.getQuery("isPublic"); //$NON-NLS-1$
Assert.assertNotNull(queryIsPublic);
ModelQuery queryIsStatic = querySet.getQuery("isStatic"); //$NON-NLS-1$
Assert.assertNotNull(queryIsStatic);
ModelQuery queryIsSupressWarning = querySet
.getQuery("isSuppressWarnings"); //$NON-NLS-1$
Assert.assertNotNull(queryIsSupressWarning);
ModelQuery queryIsSynchronized = querySet.getQuery("isSynchronized"); //$NON-NLS-1$
Assert.assertNotNull(queryIsSynchronized);
ModelQuery queryIsTransient = querySet.getQuery("isTransient"); //$NON-NLS-1$
Assert.assertNotNull(queryIsTransient);
ModelQuery queryIsUnresolved = querySet.getQuery("isUnresolved"); //$NON-NLS-1$
Assert.assertNotNull(queryIsUnresolved);
ModelQuery queryIsVolatile = querySet.getQuery("isVolatile"); //$NON-NLS-1$
Assert.assertNotNull(queryIsVolatile);
URI modelUri = URI
.createURI("platform:/plugin/org.eclipse.modisco.java.queries.tests/completeModel.javaxmi"); //$NON-NLS-1$
Resource myModel = this.resourceSet.getResource(modelUri, true);
TreeIterator<EObject> treeIterator = myModel.getAllContents();
while (treeIterator.hasNext()) {
EObject eObject = treeIterator.next();
AbstractModelQuery modelQueryImpl;
Boolean result;
if (eObject instanceof MethodDeclaration) {
MethodDeclaration methDecl = (MethodDeclaration) eObject;
if (methDecl.getName() != null) {
if (methDecl.getName().equalsIgnoreCase(
"protectedFinalStaticSynchro")) { //$NON-NLS-1$
// Test query isProtected
modelQueryImpl = catalog
.getModelQueryImpl(queryIsProtected);
result = (Boolean) modelQueryImpl
.basicEvaluate(methDecl);
Assert.assertEquals(result, true);
// Test query isFinal
modelQueryImpl = catalog
.getModelQueryImpl(queryIsFinal);
result = (Boolean) modelQueryImpl
.basicEvaluate(methDecl);
Assert.assertEquals(result, true);
// Test query isStatic
modelQueryImpl = catalog
.getModelQueryImpl(queryIsStatic);
result = (Boolean) modelQueryImpl
.basicEvaluate(methDecl);
Assert.assertEquals(result, true);
// Test query isSynchronized
modelQueryImpl = catalog
.getModelQueryImpl(queryIsSynchronized);
result = (Boolean) modelQueryImpl
.basicEvaluate(methDecl);
Assert.assertEquals(result, true);
} else if (methDecl.getName().equalsIgnoreCase(
"myGeneratedMethod")) { //$NON-NLS-1$
// Test query isGenerated
modelQueryImpl = catalog
.getModelQueryImpl(queryIsGenerated);
result = (Boolean) modelQueryImpl
.basicEvaluate(methDecl);
Assert.assertEquals(result, true);
// Test query isSuppressWarning
modelQueryImpl = catalog
.getModelQueryImpl(queryIsSupressWarning);
result = (Boolean) modelQueryImpl
.basicEvaluate(methDecl);
Assert.assertEquals(result, true);
// Test query isPublic
modelQueryImpl = catalog
.getModelQueryImpl(queryIsPublic);
result = (Boolean) modelQueryImpl
.basicEvaluate(methDecl);
Assert.assertEquals(result, true);
} else if (methDecl.getName().equalsIgnoreCase(
"privateNative")) { //$NON-NLS-1$
// Test query isNative
modelQueryImpl = catalog
.getModelQueryImpl(queryIsNative);
result = (Boolean) modelQueryImpl
.basicEvaluate(methDecl);
Assert.assertEquals(result, true);
// Test query isDeprecated
modelQueryImpl = catalog
.getModelQueryImpl(queryIsDeprecated);
result = (Boolean) modelQueryImpl
.basicEvaluate(methDecl);
Assert.assertEquals(result, true);
} else if (methDecl.getName().equalsIgnoreCase(
"publicAbstractMethod")) { //$NON-NLS-1$
// Test query isAbstract
modelQueryImpl = catalog
.getModelQueryImpl(queryIsAbstract);
result = (Boolean) modelQueryImpl
.basicEvaluate(methDecl);
Assert.assertEquals(result, true);
} else if (methDecl.getName().equalsIgnoreCase(
"protectedAbstract")) { //$NON-NLS-1$
ClassDeclaration classDecl = (ClassDeclaration) methDecl
.eContainer();
if (classDecl.getName().equalsIgnoreCase("MyIconList")) { //$NON-NLS-1$
// Test query isOverride
modelQueryImpl = catalog
.getModelQueryImpl(queryIsOverridden);
result = (Boolean) modelQueryImpl
.basicEvaluate(methDecl);
Assert.assertEquals(result, true);
}
}
}
} else if (eObject instanceof TypeAccess) {
TypeAccess typeAccess = (TypeAccess) eObject;
// Test query isAccess
modelQueryImpl = catalog.getModelQueryImpl(queryIsAccess);
result = (Boolean) modelQueryImpl.basicEvaluate(typeAccess);
Assert.assertEquals(result, true);
} else if (eObject instanceof FieldDeclaration) {
FieldDeclaration fieldDecl = (FieldDeclaration) eObject;
if (!fieldDecl.getFragments().isEmpty()) {
if (fieldDecl.getFragments().get(0).getName() != null) {
if (fieldDecl.getFragments().get(0).getName()
.equalsIgnoreCase("privateVolatileField")) { //$NON-NLS-1$
// Test query isPrivate
modelQueryImpl = catalog
.getModelQueryImpl(queryIsPrivate);
result = (Boolean) modelQueryImpl
.basicEvaluate(fieldDecl);
Assert.assertEquals(result, true);
// Test query isVolatile
modelQueryImpl = catalog
.getModelQueryImpl(queryIsVolatile);
result = (Boolean) modelQueryImpl
.basicEvaluate(fieldDecl);
Assert.assertEquals(result, true);
} else if (fieldDecl.getFragments().get(0).getName()
.equalsIgnoreCase("transientField")) { //$NON-NLS-1$
// Test query isTransient
modelQueryImpl = catalog
.getModelQueryImpl(queryIsTransient);
result = (Boolean) modelQueryImpl
.basicEvaluate(fieldDecl);
Assert.assertEquals(result, true);
// Test query isDefault
modelQueryImpl = catalog
.getModelQueryImpl(queryIsDefault);
result = (Boolean) modelQueryImpl
.basicEvaluate(fieldDecl);
Assert.assertEquals(result, true);
}
}
}
}
}
}
}