blob: 9697856d1e406b198c774449a5ff63d7d43696a6 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2010, 2011 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.pde.api.tools.apiusescan.tests;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.fail;
import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.jdt.core.IField;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.pde.api.tools.internal.provisional.IApiMarkerConstants;
import org.junit.Before;
import org.junit.Test;
public class ExternalDependencyProblemMarkerTests {
private IJavaProject fProject;
@Before
public void setUp() throws Exception {
IProject setupProject = ExternalDependencyTestUtils.setupProject();
if (setupProject == null) {
fail("Unable to setup the project. Can not run the test cases"); //$NON-NLS-1$
return;
}
fProject = JavaCore.create(setupProject);
String location = ExternalDependencyTestUtils.setupReport("reportAll", true); //$NON-NLS-1$
if (location == null) {
fail("Could not setup the report : reportAll.zip"); //$NON-NLS-1$
}
}
@Test
public void testMissingType() throws CoreException {
IType type = fProject.findType("tests.apiusescan.coretestproject.IConstants"); //$NON-NLS-1$
type.rename("IConstants1", true, null); //$NON-NLS-1$
IProject project = fProject.getProject();
ExternalDependencyTestUtils.waitForBuild();
IMarker[] markers = project.findMarkers(IApiMarkerConstants.API_USESCAN_PROBLEM_MARKER, false,
IResource.DEPTH_ZERO);
assertEquals("No API Use Scan problem marker found for missing type IConstants", 1, markers.length); //$NON-NLS-1$
String typeName = markers[0].getAttribute(IApiMarkerConstants.API_USESCAN_TYPE, null);
assertEquals("Marker for missing type IConstants not found", "tests.apiusescan.coretestproject.IConstants", //$NON-NLS-1$ //$NON-NLS-2$
typeName);
type = fProject.findType("tests.apiusescan.coretestproject.IConstants1"); //$NON-NLS-1$
type.rename("IConstants", true, null); //$NON-NLS-1$
ExternalDependencyTestUtils.waitForBuild();
markers = project.findMarkers(IApiMarkerConstants.API_USESCAN_PROBLEM_MARKER, false, IResource.DEPTH_ZERO);
assertEquals("API Use Scan problem marker for missing type IConstants did not clear", 0, markers.length); //$NON-NLS-1$
}
@Test
public void testMissingMethod() throws CoreException {
IType type = fProject.findType("tests.apiusescan.coretestproject.ITestInterface"); //$NON-NLS-1$
IMethod method = type.getMethods()[0];
method.rename("performTask1", true, null); //$NON-NLS-1$
ExternalDependencyTestUtils.waitForBuild();
IMarker[] markers = type.getUnderlyingResource().findMarkers(IApiMarkerConstants.API_USESCAN_PROBLEM_MARKER,
false, IResource.DEPTH_ZERO);
assertEquals("No API Use Scan problem marker found for missing method ITestInterface.performTask()", 1, //$NON-NLS-1$
markers.length);
String typeName = markers[0].getAttribute(IApiMarkerConstants.API_USESCAN_TYPE, null);
assertEquals("Marker for missing method ITestInterface.performTask() not found", //$NON-NLS-1$
"tests.apiusescan.coretestproject.ITestInterface", typeName); //$NON-NLS-1$
type = fProject.findType("tests.apiusescan.coretestproject.ITestInterface"); //$NON-NLS-1$
method = type.getMethods()[0];
method.rename("performTask", true, null); //$NON-NLS-1$
ExternalDependencyTestUtils.waitForBuild();
markers = type.getUnderlyingResource().findMarkers(IApiMarkerConstants.API_USESCAN_PROBLEM_MARKER, false,
IResource.DEPTH_ZERO);
assertEquals("API Use Scan problem marker for missing method ITestInterface.performTask() did not clear.", 0, //$NON-NLS-1$
markers.length);
}
@Test
public void testMissingField() throws CoreException {
IType type = fProject.findType("tests.apiusescan.coretestproject.TestInterfaceImpl"); //$NON-NLS-1$
IField field = type.getField("fField"); //$NON-NLS-1$
field.rename("fField1", true, null); //$NON-NLS-1$
ExternalDependencyTestUtils.waitForBuild();
IMarker[] markers = type.getUnderlyingResource().findMarkers(IApiMarkerConstants.API_USESCAN_PROBLEM_MARKER,
false, IResource.DEPTH_ZERO);
assertEquals("No API Use Scan problem marker found for missing field TestInterfaceImpl.fField", 1, //$NON-NLS-1$
markers.length);
String typeName = markers[0].getAttribute(IApiMarkerConstants.API_USESCAN_TYPE, null);
assertEquals("Marker for missing field TestInterfaceImpl.fField not found", //$NON-NLS-1$
"tests.apiusescan.coretestproject.TestInterfaceImpl", typeName); //$NON-NLS-1$
type = fProject.findType("tests.apiusescan.coretestproject.TestInterfaceImpl"); //$NON-NLS-1$
field = type.getField("fField1"); //$NON-NLS-1$
field.rename("fField", true, null); //$NON-NLS-1$
ExternalDependencyTestUtils.waitForBuild();
markers = type.getUnderlyingResource().findMarkers(IApiMarkerConstants.API_USESCAN_PROBLEM_MARKER, false,
IResource.DEPTH_ZERO);
assertEquals("API Use Scan problem marker for missing field TestInterfaceImpl.fField did not clear.", 0, //$NON-NLS-1$
markers.length);
}
@Test
public void testMissingInnerType() throws CoreException {
IType type = fProject.findType("tests.apiusescan.coretestproject.ClassWithInnerType.InnerType"); //$NON-NLS-1$
type.rename("InnerType1", true, null); //$NON-NLS-1$
IProject project = fProject.getProject();
ExternalDependencyTestUtils.waitForBuild();
IMarker[] markers = project.findMarkers(IApiMarkerConstants.API_USESCAN_PROBLEM_MARKER, false,
IResource.DEPTH_ZERO);
assertEquals("No API Use Scan problem marker found for missing type IConstants", 1, markers.length); //$NON-NLS-1$
String typeName = markers[0].getAttribute(IApiMarkerConstants.API_USESCAN_TYPE, null);
assertEquals("Marker for missing type InnerType not found", //$NON-NLS-1$
"tests.apiusescan.coretestproject.ClassWithInnerType.InnerType", typeName); //$NON-NLS-1$
type = fProject.findType("tests.apiusescan.coretestproject.ClassWithInnerType.InnerType1"); //$NON-NLS-1$
type.rename("InnerType", true, null); //$NON-NLS-1$
ExternalDependencyTestUtils.waitForBuild();
markers = project.findMarkers(IApiMarkerConstants.API_USESCAN_PROBLEM_MARKER, false, IResource.DEPTH_ZERO);
assertEquals("API Use Scan problem marker for missing type InnerType did not clear", 0, markers.length); //$NON-NLS-1$
}
}