/** | |
* Copyright (c) 2009 Mia-Software. | |
* 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); | |
} | |
} | |
} | |
} | |
} | |
} | |
} |