blob: aee470e928b72c88cf816fc357ae07566568a6da [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2009 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.builder.tests.compatibility;
import junit.framework.Test;
import org.eclipse.core.runtime.IPath;
import org.eclipse.pde.api.tools.internal.problems.ApiProblemFactory;
import org.eclipse.pde.api.tools.internal.provisional.comparator.IDelta;
import org.eclipse.pde.api.tools.internal.provisional.problems.IApiProblem;
/**
* Tests that the builder correctly finds and reports missing since tags
*
* @since 1.0
*/
public class MissingSinceTagTests extends SinceTagTest {
/**
* Constructor
* @param name
*/
public MissingSinceTagTests(String name) {
super(name);
}
/**
* @return the tests for this class
*/
public static Test suite() {
return buildTestSuite(MissingSinceTagTests.class);
}
protected void configureExpectedProblems(int elementType, String messageArg) {
int[] ids = new int[] {
ApiProblemFactory.createProblemId(
IApiProblem.CATEGORY_SINCETAGS,
elementType,
IApiProblem.SINCE_TAG_MISSING,
0)
};
setExpectedProblemIds(ids);
String[][] args = new String[1][];
args[0] = new String[]{messageArg};
setExpectedMessageArgs(args);
}
/**
* Tests adding a generic method
*/
private void xAddMethod2(boolean incremental) throws Exception {
IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddMethod2.java"); //$NON-NLS-1$
configureExpectedProblems(IDelta.METHOD_ELEMENT_TYPE, "foo(List<?>)"); //$NON-NLS-1$
performCompatibilityTest(filePath, incremental);
}
public void testAddMethod2I() throws Exception {
xAddMethod2(true);
}
public void testAddMethod2F() throws Exception {
xAddMethod2(false);
}
/**
* Tests adding a non-visible method
*/
private void xAddNonVisibleMethod2(boolean incremental) throws Exception {
IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddNonVisibleMethod2.java"); //$NON-NLS-1$
configureExpectedProblems(IDelta.METHOD_ELEMENT_TYPE, "method()"); //$NON-NLS-1$
performCompatibilityTest(filePath, incremental);
}
public void testAddNonVisibleMethod2I() throws Exception {
xAddNonVisibleMethod2(true);
}
public void testAddNonVisibleMethod2F() throws Exception {
xAddNonVisibleMethod2(false);
}
/**
* Tests adding a field
*/
private void xAddField(boolean incremental) throws Exception {
IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddField.java"); //$NON-NLS-1$
configureExpectedProblems(IDelta.FIELD_ELEMENT_TYPE, "FIELD"); //$NON-NLS-1$
performCompatibilityTest(filePath, incremental);
}
public void testAddFieldI() throws Exception {
xAddField(true);
}
public void testAddFieldF() throws Exception {
xAddField(false);
}
/**
* Tests adding a private field
*/
private void xAddPrivateField(boolean incremental) throws Exception {
IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddPrivateField.java"); //$NON-NLS-1$
// no problems expected
performCompatibilityTest(filePath, incremental);
}
public void testPrivateAddFieldI() throws Exception {
xAddPrivateField(true);
}
public void testPrivateAddFieldF() throws Exception {
xAddPrivateField(false);
}
/**
* Tests adding a member type
*/
private void xAddMemberType(boolean incremental) throws Exception {
IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddMemberType.java"); //$NON-NLS-1$
configureExpectedProblems(IDelta.CLASS_ELEMENT_TYPE, "MemberType"); //$NON-NLS-1$
performCompatibilityTest(filePath, incremental);
}
public void testAddMemberTypeI() throws Exception {
xAddMemberType(true);
}
public void testAddMemberTypeF() throws Exception {
xAddMemberType(false);
}
/**
* Tests adding a method
*/
private void xAddMethod(boolean incremental) throws Exception {
IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddMethod.java"); //$NON-NLS-1$
configureExpectedProblems(IDelta.METHOD_ELEMENT_TYPE, "method()"); //$NON-NLS-1$
performCompatibilityTest(filePath, incremental);
}
public void testAddMethodI() throws Exception {
xAddMethod(true);
}
public void testAddMethodF() throws Exception {
xAddMethod(false);
}
/**
* Tests adding a method that is part of a newly implemented interface
*/
private void xAddNewInterfaceMethod(boolean incremental) throws Exception {
IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddNewInterfaceMethod.java"); //$NON-NLS-1$
configureExpectedProblems(IDelta.METHOD_ELEMENT_TYPE, "methodA()"); //$NON-NLS-1$
performCompatibilityTest(filePath, incremental);
}
public void testAddNewInterfaceMethodI() throws Exception {
xAddNewInterfaceMethod(true);
}
public void testAddNewInterfaceMethodF() throws Exception {
xAddNewInterfaceMethod(false);
}
/**
* Tests adding a method inherited/overridden from a super type. There should be no since tag
* required.
*/
private void xAddInheritedMethod(boolean incremental) throws Exception {
IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddInheritedMethod.java"); //$NON-NLS-1$
// no problem expected
performCompatibilityTest(filePath, incremental);
}
public void testAddInheritedMethodI() throws Exception {
xAddInheritedMethod(true);
}
public void testAddInheritedMethodF() throws Exception {
xAddInheritedMethod(false);
}
/**
* Tests adding a non-visible method
*/
private void xAddNonVisibleMethod(boolean incremental) throws Exception {
IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddNonVisibleMethod.java"); //$NON-NLS-1$
// no problems expected
performCompatibilityTest(filePath, incremental);
}
public void testAddNonVisibleMethodI() throws Exception {
xAddNonVisibleMethod(true);
}
public void testAddNonVisibleMethodF() throws Exception {
xAddNonVisibleMethod(false);
}
/**
* Tests adding a class
*/
private void xAddType(boolean incremental) throws Exception {
IPath filePath = WORKSPACE_CLASSES_PACKAGE_A.append("AddType.java"); //$NON-NLS-1$
configureExpectedProblems(IDelta.CLASS_ELEMENT_TYPE, PACKAGE_PREFIX + "AddType"); //$NON-NLS-1$
performCreationCompatibilityTest(filePath, incremental);
}
public void testAddTypeI() throws Exception {
xAddType(true);
}
public void testAddTypeF() throws Exception {
xAddType(false);
}
}