/******************************************************************************* * Copyright (c) 2007 BEA Systems, Inc. * 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: * wharley@bea.com - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.apt.pluggable.tests; import java.util.Map; import junit.framework.Test; import junit.framework.TestSuite; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.Platform; import org.eclipse.jdt.apt.core.internal.util.FactoryContainer; import org.eclipse.jdt.apt.core.internal.util.FactoryPath; import org.eclipse.jdt.apt.core.util.AptConfig; import org.eclipse.jdt.apt.pluggable.tests.processors.message6.Message6Proc; import org.eclipse.jdt.core.IJavaProject; import org.osgi.framework.Bundle; /** * Ensure that the apt.pluggable code is getting loaded, the test environment is as expected, * and the test utilities themselves are working. * Keeping these "infrastructure" tests separate from the "real" tests helps avoid confusion when * the real tests fail. */ public class InfrastructureTests extends TestBase { public InfrastructureTests(String name) { super(name); } public static Test suite() { return new TestSuite(InfrastructureTests.class); } /** * Test that the apt.pluggable.core plug-in is present. Obviously since this test plug-in * depends on it, this test will never fail; it will either succeed or not run at all. */ public void testPluginLoaded() throws Throwable { Bundle bundle = Platform.getBundle("org.eclipse.jdt.apt.pluggable.core"); assertNotNull("Couldn't get org.eclipse.jdt.apt.pluggable.core bundle", bundle); } /** * Can we create a Java 1.6 test project populated with resources from this plug-in? * If not, there is not much point in testing the rest of annotation processing. */ public void testProjectBuild() throws Throwable { IJavaProject jproj = createJavaProject(_projectName); IProject proj = jproj.getProject(); IdeTestUtils.copyResources(proj, "targets/infrastructure", "src/targets/infrastructure"); // source code fullBuild(); expectingNoProblems(); String[] expectedClasses = { "targets.infrastructure.NoAnno" }; expectingCompiledClasses(expectedClasses); } /** * Does the factory path show Java 6 processors from this plug-in? */ public void testFactoryPathContents() throws Throwable { IJavaProject jproj = createJavaProject(_projectName); FactoryPath fpath = (FactoryPath) AptConfig.getFactoryPath(jproj); Map<FactoryContainer, FactoryPath.Attributes> map = fpath.getAllContainers(); boolean foundThisPlugin = false; for (Map.Entry<FactoryContainer, FactoryPath.Attributes> entry : map.entrySet()) { FactoryContainer fc = entry.getKey(); if (Apt6TestsPlugin.PLUGIN_ID.equals(fc.getId())) { foundThisPlugin = true; Map<String, String> names = fc.getFactoryNames(); String service = names.get(Message6Proc.class.getName()); assertNotNull("Message6Proc was not found in apt.pluggable.tests plug-in", service); break; } } assertTrue("apt.pluggable.tests plug-in was not found in project factory path", foundThisPlugin); } }