/******************************************************************************* * Copyright (c) 2000, 2008 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.jdt.text.tests; import junit.framework.TestCase; import org.eclipse.jdt.testplugin.JavaProjectHelper; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.Path; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IWorkspaceRoot; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.filebuffers.tests.ResourceHelper; import org.eclipse.ui.IEditorInput; import org.eclipse.ui.part.FileEditorInput; import org.eclipse.jdt.core.IBuffer; import org.eclipse.jdt.core.ICompilationUnit; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.IType; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; import org.eclipse.jdt.internal.ui.JavaPlugin; import org.eclipse.jdt.internal.ui.javaeditor.ICompilationUnitDocumentProvider; public class CompilationUnitDocumentProviderTest extends TestCase { private IJavaProject fJavaProject; private IProject fLinkedProject; public CompilationUnitDocumentProviderTest(String name) { super(name); } private void setupProject() throws CoreException, JavaModelException { fJavaProject= JavaProjectHelper.createJavaProject("P", "bin"); IPackageFragmentRoot root= JavaProjectHelper.addSourceContainer(fJavaProject, "src"); IPackageFragment pack= root.createPackageFragment("testA.testB", true, null); ICompilationUnit cu= pack.getCompilationUnit("A.java"); IType type= cu.createType("public class A {\n}\n", null, true, null); type.createMethod("public void a() {}\n", null, true, null); type.createMethod("public void b(java.util.Vector v) {}\n", null, true, null); } /** * Removes the test java project. * * @throws CoreException if deletion fails */ @Override protected void tearDown() throws CoreException { if (fJavaProject != null) JavaProjectHelper.delete(fJavaProject); if (fLinkedProject != null) ResourceHelper.delete(fLinkedProject, false); } public void test1() throws Exception { setupProject(); IFile file= ResourcesPlugin.getWorkspace().getRoot().getFile(new Path("/P/src/testA/testB/A.java")); checkFile(file); } public void test2() throws Exception { setupProject(); IProject project= (IProject) fJavaProject.getUnderlyingResource(); IFolder folder= ResourceHelper.createLinkedFolder(project, new Path("src2"), JdtTextTestPlugin.getDefault(), new Path("testResources/folderLinkTarget1")); assertNotNull(folder); assertTrue(folder.exists()); IWorkspaceRoot root= ResourcesPlugin.getWorkspace().getRoot(); IFile file= root.getFile(new Path("/P/src2/test1/test2/C.java")); checkFile(file); } public void test3() throws Exception { fLinkedProject= ResourceHelper.createLinkedProject("P2", JdtTextTestPlugin.getDefault(), new Path("testResources/folderLinkTarget1")); assertNotNull(fLinkedProject); assertTrue(fLinkedProject.exists()); IWorkspaceRoot root= ResourcesPlugin.getWorkspace().getRoot(); IFile file= root.getFile(new Path("/P2/test1/test2/C.java")); checkFile(file); } public void testNewFile() throws Exception { setupProject(); String source= "// some source"; IFolder folder= ResourcesPlugin.getWorkspace().getRoot().getFolder(new Path("/P/src/testA/testB/")); IPackageFragment frag= (IPackageFragment)JavaCore.create(folder); ICompilationUnit cu= frag.getCompilationUnit("New.java"); cu.becomeWorkingCopy(null); IBuffer b= cu.getBuffer(); b.setContents(source); cu.reconcile(ICompilationUnit.NO_AST, true, null, null); cu.commitWorkingCopy(true, null); cu.discardWorkingCopy(); cu= frag.getCompilationUnit("New.java"); assertEquals(source, cu.getSource()); } private void checkFile(IFile file) throws CoreException { assertNotNull(file); IEditorInput input= new FileEditorInput(file); ICompilationUnitDocumentProvider provider= JavaPlugin.getDefault().getCompilationUnitDocumentProvider(); assertNotNull(provider); provider.connect(input); assertNotNull(provider.getDocument(input)); assertNotNull(provider.getAnnotationModel(input)); provider.disconnect(input); assertNull(provider.getDocument(input)); assertNull(provider.getAnnotationModel(input)); } }