diff options
author | Vikas Chandra | 2014-05-13 18:59:29 +0000 |
---|---|---|
committer | Curtis Windatt | 2014-05-13 18:59:29 +0000 |
commit | 9944c7397a08bd865c48dc16621dadabc06f3c28 (patch) | |
tree | f33c1b763d41ae5a068de2d9a09fc503d4c013e2 /apitools | |
parent | e70006a1f7c6a68aa6b0fc96c9b8a973f970b83f (diff) | |
download | eclipse.pde.ui-9944c7397a08bd865c48dc16621dadabc06f3c28.tar.gz eclipse.pde.ui-9944c7397a08bd865c48dc16621dadabc06f3c28.tar.xz eclipse.pde.ui-9944c7397a08bd865c48dc16621dadabc06f3c28.zip |
Bug 427495 - [1.8] Support default methods
Add usage tests
Change-Id: I3c0787b1696e16c83d44ff3d6a31ab899fd44aac
Signed-off-by: Vikas Chandra <Vikas.Chandra@in.ibm.com>
Diffstat (limited to 'apitools')
2 files changed, 214 insertions, 0 deletions
diff --git a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/Java8DefaultMethodUsageTests.java b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/Java8DefaultMethodUsageTests.java new file mode 100644 index 0000000000..753b0b811a --- /dev/null +++ b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/Java8DefaultMethodUsageTests.java @@ -0,0 +1,212 @@ +package org.eclipse.pde.api.tools.builder.tests.usage; + +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.descriptors.IElementDescriptor; +import org.eclipse.pde.api.tools.internal.provisional.problems.IApiProblem; + +public class Java8DefaultMethodUsageTests extends Java8UsageTest { + + /** + * Constructor + * + * @param name + */ + public Java8DefaultMethodUsageTests(String name) { + super(name); + } + + /** + * @return the test class for this suite + */ + public static Test suite() { + return buildTestSuite(Java8DefaultMethodUsageTests.class); + } + + @Override + protected IPath getTestSourcePath() { + return super.getTestSourcePath().append("interface"); //$NON-NLS-1$ + } + + // /** + /** + * Returns the problem id with the given kind + * + * @param kind + * @return the problem id + */ + protected int getProblemId(int kind, int flags) { + return ApiProblemFactory.createProblemId(IApiProblem.CATEGORY_USAGE, IElementDescriptor.METHOD, kind, flags); + } + + + /** + * Tests implementing an interface with a default method and calling + * it(full) + */ + public void testNoRefAnnotationOnInterfaceWithDefaultMethodF() { + x1(false); + } + + /** + * Tests implementing an interface with a default method and calling + * it (incremental) + */ + public void testNoRefAnnotationOnInterfaceWithDefaultMethodI() { + x1(true); + } + + private void x1(boolean inc) { + int[] pids = new int[] { + + getProblemId(IApiProblem.ILLEGAL_REFERENCE, IApiProblem.METHOD) }; + + setExpectedProblemIds(pids); + String typename = "test1"; //$NON-NLS-1$ + + String[][] args = new String[][] { { + "INoRefDefaultInterface", typename, "m1()" } //$NON-NLS-1$//$NON-NLS-2$ + + }; + setExpectedMessageArgs(args); + setExpectedLineMappings(new LineMapping[] { + new LineMapping(20, pids[0], args[0]) + + }); + deployUsageTest(typename, inc); + } + + /** + * Tests an interface ref for a restricted default method (full) + */ + public void testNoRefAnnotationOnInterfaceWithDefaultMethod2F() { + x2(false); + } + + /** + * Tests an interface ref for a restricted default method (incremental) + */ + public void testNoRefAnnotationOnInterfaceWithDefaultMethod2I() { + x2(true); + } + + private void x2(boolean inc) { + int[] pids = new int[] { + + getProblemId(IApiProblem.ILLEGAL_REFERENCE, IApiProblem.METHOD) }; + + setExpectedProblemIds(pids); + String typename = "test2"; //$NON-NLS-1$ + + String[][] args = new String[][] { { + "INoRefDefaultInterface", typename, "m1()" } //$NON-NLS-1$//$NON-NLS-2$ + + }; + setExpectedMessageArgs(args); + setExpectedLineMappings(new LineMapping[] { new LineMapping(22, pids[0], args[0]) + + }); + deployUsageTest(typename, inc); + } + + /** + * Tests an impl and direct ref to a restricted default method (full) + */ + public void testNoRefAnnotationDefaultMethodF() { + x3(false); + } + + /** + * Tests an impl and direct ref to a restricted default method (incremental) + */ + public void testNoRefAnnotationDefaultMethodI() { + x3(true); + } + + private void x3(boolean inc) { + int[] pids = new int[] { + + getProblemId(IApiProblem.ILLEGAL_REFERENCE, IApiProblem.METHOD) }; + + setExpectedProblemIds(pids); + String typename = "test3"; //$NON-NLS-1$ + + String[][] args = new String[][] { { + "INoRefDefaultInterface2", typename, "m1()" } //$NON-NLS-1$//$NON-NLS-2$ + + }; + setExpectedMessageArgs(args); + setExpectedLineMappings(new LineMapping[] { new LineMapping(21, pids[0], args[0]) + + }); + deployUsageTest(typename, inc); + } + + /** + * Tests an impl and interface ref to a restricted default method (full) + */ + public void testNoRefAnnotationDefaultMethod2F() { + x4(false); + } + + /** + * Tests an impl and interface ref to a restricted default method + * (incremental) + */ + public void testNoRefAnnotationDefaultMethod2I() { + x4(true); + } + + private void x4(boolean inc) { + int[] pids = new int[] { + + getProblemId(IApiProblem.ILLEGAL_REFERENCE, IApiProblem.METHOD) }; + + setExpectedProblemIds(pids); + String typename = "test4"; //$NON-NLS-1$ + + String[][] args = new String[][] { { + "INoRefDefaultInterface2", typename, "m1()" } //$NON-NLS-1$//$NON-NLS-2$ + + }; + setExpectedMessageArgs(args); + setExpectedLineMappings(new LineMapping[] { new LineMapping(22, pids[0], args[0]) + + }); + deployUsageTest(typename, inc); + } + + // TODO uncomment this after fixing bug below. + // see https://bugs.eclipse.org/bugs/show_bug.cgi?id=433528 + // there should be 1 error + // /** + // * Tests no overriding restricted default methods (full) + // */ + // public void testOverrideDefaultMethodF() { + // x5(false); + // } + // + // /** + // * Test no overriding restricted default methods (incremental) + // */ + // public void testOverrideDefaultMethodI() { + // x5(true); + // } + // + // private void x5(boolean inc) { + // int[] pids = null; + // + // setExpectedProblemIds(pids); + // String typename = "test5"; //$NON-NLS-1$ + // + // String[][] args = null; + // setExpectedMessageArgs(args); + // setExpectedLineMappings(null); + // deployUsageTest(typename, inc); + // } + + // TODO to add javadoc tag test cases + +} diff --git a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/Java8UsageTest.java b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/Java8UsageTest.java index e5243b184f..0caeb9d227 100644 --- a/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/Java8UsageTest.java +++ b/apitools/org.eclipse.pde.api.tools.tests/src/org/eclipse/pde/api/tools/builder/tests/usage/Java8UsageTest.java @@ -169,6 +169,7 @@ public class Java8UsageTest extends ApiBuilderTest { } /** + * * @return all of the child test classes of this class */ private static Class<?>[] getAllTestClasses() { @@ -176,6 +177,7 @@ public class Java8UsageTest extends ApiBuilderTest { classes.add(Java8LambdaUsageTests.class); classes.add(Java8MethodConstRefUsageTests.class); classes.add(Java8ConsRefInstantiateUsageTests.class); + classes.add(Java8DefaultMethodUsageTests.class); return classes.toArray(new Class[classes.size()]); } } |