package com.dubture.composer.test; import java.io.IOException; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IProjectDescription; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IncrementalProjectBuilder; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.dltk.core.IScriptProject; import org.eclipse.php.internal.core.PHPVersion; import org.eclipse.php.internal.core.facet.PHPFacets; import org.eclipse.php.internal.core.project.PHPNature; import org.eclipse.php.internal.core.project.ProjectOptions; import org.junit.Test; import com.dubture.composer.core.ComposerNature; import com.dubture.composer.core.ComposerPlugin; import com.dubture.composer.core.facet.FacetManager; import com.dubture.composer.core.resources.IComposerProject; @SuppressWarnings("restriction") public class NamespaceResolverTest extends ComposerModelTests { public NamespaceResolverTest() { super("Namespace Resolver tests"); } @Test public void testNamespaceResolver() throws CoreException, IOException { IScriptProject scriptProject = ensureScriptProject("namespace-resolver"); assertNotNull(scriptProject); IProjectDescription desc = scriptProject.getProject().getDescription(); desc.setNatureIds(new String[] { PHPNature.ID }); scriptProject.getProject().setDescription(desc, null); ProjectOptions.setPhpVersion(PHPVersion.PHP5_3, scriptProject.getProject()); PHPFacets.setFacetedVersion(scriptProject.getProject(), PHPVersion.PHP5_3); FacetManager.installFacets(scriptProject.getProject(), PHPVersion.PHP5_3, new NullProgressMonitor()); scriptProject.getProject().refreshLocal(IResource.DEPTH_INFINITE, null); scriptProject.getProject().build(IncrementalProjectBuilder.FULL_BUILD, null); ComposerCoreTestPlugin.waitForIndexer(); ComposerCoreTestPlugin.waitForAutoBuild(); IComposerProject project = ComposerPlugin.getDefault().getComposerProject(scriptProject); IFile composerJson = project.getComposerJson(); assertNotNull(composerJson); assertTrue(scriptProject.getProject().hasNature(PHPNature.ID)); assertTrue(scriptProject.getProject().hasNature(ComposerNature.NATURE_ID)); assertEquals("Foo\\Bar", project.getNamespace(new Path("src/Foo/Bar"))); assertEquals("Foo\\Bar\\Baz", project.getNamespace(new Path("src/Foo/Bar/Baz"))); assertEquals("Hello\\World", project.getNamespace(new Path("src/HelloWorld"))); assertEquals("", project.getNamespace(new Path("src/Null/"))); assertEquals("Wurst", project.getNamespace(new Path("src/Null/Wurst"))); assertEquals("Blut\\Wurst", project.getNamespace(new Path("src/Null/Blut/Wurst"))); // IResource resource = scriptProject.getProject().getFolder(new Path("src/Foobar/Sub")); // IPath path = ModelAccess.getInstance().resolve(resource); // assertNotNull(path); // assertEquals("Foobar/Sub", path.toString()); } }