blob: 6391283e41a380e202f95bfc2abc1cbf487c10de [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 java.io.ByteArrayInputStream;
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>PackageFragmentRoot</code> notification tests.
*/
public class PackageFragmentRootNotificationTest
extends WorkspaceTestCase
{
private IJavaModel javaModel = JavaModelCore.getJavaModel();
private JavaModelListener listener = new JavaModelListener();
private IFolder srcFolder;
private IFolder fooFolder;
private IFolder barFolder;
private IFolder metainfFolder;
private IFile abcFile;
@Override
protected void setUp() throws Exception
{
super.setUp();
IProject project = setUpProject("Test005");
srcFolder = project.getFolder("src");
fooFolder = srcFolder.getFolder("foo");
barFolder = fooFolder.getFolder("bar");
metainfFolder = srcFolder.getFolder("META-INF");
abcFile = srcFolder.getFile("abc");
javaModel.addElementChangeListener(listener);
}
@Override
protected void tearDown() throws Exception
{
javaModel.removeElementChangeListener(listener);
super.tearDown();
}
public void test001() throws Exception
{
// delete foo.bar
barFolder.delete(true, null);
//@formatter:off
listener.assertDelta(
"Java Model[*]: {CHILDREN}\n" +
" Test005[*]: {CHILDREN}\n" +
" src[*]: {CHILDREN}\n" +
" foo.bar[-]: {}"
);
//@formatter:on
// (re-)create foo.bar
barFolder.create(true, true, null);
//@formatter:off
listener.assertDelta(
"Java Model[*]: {CHILDREN}\n" +
" Test005[*]: {CHILDREN}\n" +
" src[*]: {CHILDREN}\n" +
" foo.bar[+]: {}"
);
//@formatter:on
}
public void test002() throws Exception
{
// delete META-INF and abc
javaModel.getWorkspace().run(new IWorkspaceRunnable()
{
public void run(IProgressMonitor monitor) throws CoreException
{
metainfFolder.delete(true, null);
abcFile.delete(true, null);
}
}, null);
//@formatter:off
listener.assertDelta(
"Java Model[*]: {CHILDREN}\n" +
" Test005[*]: {CHILDREN}\n" +
" src[*]: {CONTENT}\n" +
" ResourceDelta(/Test005/src/META-INF)[-]\n" +
" ResourceDelta(/Test005/src/abc)[-]"
);
//@formatter:on
// (re-)create META-INF and abc
javaModel.getWorkspace().run(new IWorkspaceRunnable()
{
public void run(IProgressMonitor monitor) throws CoreException
{
metainfFolder.create(true, true, null);
abcFile.create(new ByteArrayInputStream(new byte[0]), true,
null);
}
}, null);
//@formatter:off
listener.assertDelta(
"Java Model[*]: {CHILDREN}\n" +
" Test005[*]: {CHILDREN}\n" +
" src[*]: {CONTENT}\n" +
" ResourceDelta(/Test005/src/META-INF)[+]\n" +
" ResourceDelta(/Test005/src/abc)[+]"
);
//@formatter:on
}
public void test003() throws Exception
{
// rename foo to foo2
fooFolder.move(new Path("foo2"), true, null);
//@formatter:off
listener.assertDelta(
"Java Model[*]: {CHILDREN}\n" +
" Test005[*]: {CHILDREN}\n" +
" src[*]: {CHILDREN}\n" +
" foo[-]: {MOVED_TO(foo2 [in src [in Test005]])}\n" +
" foo.bar[-]: {MOVED_TO(foo2.bar [in src [in Test005]])}\n" +
" foo2[+]: {MOVED_FROM(foo [in src [in Test005]])}\n" +
" foo2.bar[+]: {MOVED_FROM(foo.bar [in src [in Test005]])}"
);
//@formatter:on
}
public void test004() throws Exception
{
// move foo to a non-Java resource
IFolder osgiinfFolder = srcFolder.getFolder("OSGI-INF");
fooFolder.move(osgiinfFolder.getFullPath(), true, null);
//@formatter:off
listener.assertDelta(
"Java Model[*]: {CHILDREN}\n" +
" Test005[*]: {CHILDREN}\n" +
" src[*]: {CHILDREN | CONTENT}\n" +
" foo[-]: {}\n" +
" foo.bar[-]: {}\n" +
" ResourceDelta(/Test005/src/OSGI-INF)[+]"
);
//@formatter:on
// move it back
osgiinfFolder.move(fooFolder.getFullPath(), true, null);
//@formatter:off
listener.assertDelta(
"Java Model[*]: {CHILDREN}\n" +
" Test005[*]: {CHILDREN}\n" +
" src[*]: {CHILDREN | CONTENT}\n" +
" foo[+]: {}\n" +
" foo.bar[+]: {}\n" +
" ResourceDelta(/Test005/src/OSGI-INF)[-]"
);
//@formatter:on
}
public void test005() throws Exception
{
// move META-INF, abc and A.java
javaModel.getWorkspace().run(new IWorkspaceRunnable()
{
public void run(IProgressMonitor monitor) throws CoreException
{
metainfFolder.move(new Path("OSGI-INF"), true, null);
abcFile.move(new Path("abc.java"), true, null);
IFile aJavaFile = srcFolder.getFile("A.java");
aJavaFile.move(new Path("A"), true, null);
}
}, null);
//@formatter:off
listener.assertDelta(
"Java Model[*]: {CHILDREN}\n" +
" Test005[*]: {CHILDREN}\n" +
" src[*]: {CHILDREN | CONTENT}\n" +
" <default>[*]: {CHILDREN}\n" +
" A.java[-]: {}\n" +
" abc.java[+]: {}\n" +
" ResourceDelta(/Test005/src/A)[+]\n" +
" ResourceDelta(/Test005/src/META-INF)[-]\n" +
" ResourceDelta(/Test005/src/OSGI-INF)[+]\n" +
" ResourceDelta(/Test005/src/abc)[-]"
);
//@formatter:on
}
}