blob: a169ba668963ccc9caccaba053f6b7ac51bd51cb [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2015 1C-Soft LLC.
* 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:
* Vladimir Piskarev (1C) - initial API and implementation
*******************************************************************************/
package org.eclipse.handly.internal.examples.javamodel;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IWorkspaceRunnable;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.Path;
import org.eclipse.handly.examples.javamodel.IJavaModel;
import org.eclipse.handly.examples.javamodel.JavaModelCore;
import org.eclipse.handly.junit.WorkspaceTestCase;
/**
* <code>JavaProject</code> notification tests.
*/
public class JavaProjectNotificationTest
extends WorkspaceTestCase
{
private IJavaModel javaModel = JavaModelCore.getJavaModel();
private JavaModelListener listener = new JavaModelListener();
private IFolder srcFolder;
private IFolder srcGenFolder;
private IFile classpathFile;
private IFile classpath01File;
private IFile classpath02File;
private IFile classpath03File;
@Override
protected void setUp() throws Exception
{
super.setUp();
IProject project = setUpProject("Test004");
srcFolder = project.getFolder("src");
srcGenFolder = project.getFolder("src-gen");
classpathFile = project.getFile(".classpath");
IFolder binFolder = project.getFolder("bin");
classpath01File = binFolder.getFile("classpath01");
classpath02File = binFolder.getFile("classpath02");
classpath03File = binFolder.getFile("classpath03");
javaModel.addElementChangeListener(listener);
}
@Override
protected void tearDown() throws Exception
{
javaModel.removeElementChangeListener(listener);
super.tearDown();
}
public void test001() throws Exception
{
// delete src folder
srcFolder.delete(true, null);
//@formatter:off
listener.assertDelta(
"Java Model[*]: {CHILDREN}\n" +
" Test004[*]: {CHILDREN}\n" +
" src[-]: {}"
);
//@formatter:on
// (re-)create src folder
srcFolder.create(true, true, null);
//@formatter:off
listener.assertDelta(
"Java Model[*]: {CHILDREN}\n" +
" Test004[*]: {CHILDREN}\n" +
" src[+]: {}"
);
//@formatter:on
}
public void test002() throws Exception
{
// remove src-gen from classpath
classpathFile.setContents(classpath01File.getContents(), true, false,
null);
//@formatter:off
listener.assertDelta(
"Java Model[*]: {CHILDREN}\n" +
" Test004[*]: {CONTENT | CLASSPATH_CHANGED}\n" +
" ResourceDelta(/Test004/.classpath)[*]"
);
//@formatter:on
// put src-gen back to classpath
classpathFile.setContents(classpath02File.getContents(), true, false,
null);
//@formatter:off
listener.assertDelta(
"Java Model[*]: {CHILDREN}\n" +
" Test004[*]: {CONTENT | CLASSPATH_CHANGED}\n" +
" ResourceDelta(/Test004/.classpath)[*]"
);
//@formatter:on
}
public void test003() throws Exception
{
// remove src-gen from classpath and delete the underlying folder
javaModel.getWorkspace().run(new IWorkspaceRunnable()
{
public void run(IProgressMonitor monitor) throws CoreException
{
classpathFile.setContents(classpath01File.getContents(), true,
false, null);
srcGenFolder.delete(true, null);
}
}, null);
//@formatter:off
listener.assertDelta(
"Java Model[*]: {CHILDREN}\n" +
" Test004[*]: {CHILDREN | CONTENT | CLASSPATH_CHANGED}\n" +
" src-gen[-]: {}\n" +
" ResourceDelta(/Test004/.classpath)[*]"
);
//@formatter:on
}
public void test004() throws Exception
{
// move src to a non-java resource
srcFolder.move(new Path("src2"), true, null);
//@formatter:off
listener.assertDelta(
"Java Model[*]: {CHILDREN}\n" +
" Test004[*]: {CHILDREN | CONTENT}\n" +
" src[-]: {}\n" +
" ResourceDelta(/Test004/src2)[+]"
);
//@formatter:on
}
public void test005() throws Exception
{
// rename src to src2
javaModel.getWorkspace().run(new IWorkspaceRunnable()
{
public void run(IProgressMonitor monitor) throws CoreException
{
classpathFile.setContents(classpath03File.getContents(), true,
false, null);
srcFolder.move(new Path("src2"), true, null);
}
}, null);
//@formatter:off
listener.assertDelta(
"Java Model[*]: {CHILDREN}\n" +
" Test004[*]: {CHILDREN | CONTENT | CLASSPATH_CHANGED}\n" +
" src[-]: {MOVED_TO(src2 [in Test004])}\n" +
" src2[+]: {MOVED_FROM(src [in Test004])}\n" +
" ResourceDelta(/Test004/.classpath)[*]"
);
//@formatter:on
}
}