blob: d3e999243b43beec7e9d938ed79d7ea70faa83c7 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 2015 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
* Alexander Kurtakov <akurtako@redhat.com> - Bug 459343
*******************************************************************************/
package org.eclipse.core.tests.resources.usecase;
import java.util.ArrayList;
import java.util.List;
import org.eclipse.core.resources.*;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.Path;
/**
* Change some resources mixing full saves and snapshots.
*/
public class Snapshot4Test extends SnapshotTest {
public Snapshot4Test() {
super();
}
public Snapshot4Test(String name) {
super(name);
}
protected static String[] defineHierarchy1() {
List<String> result = new ArrayList<>();
String[] old = Snapshot3Test.defineHierarchy1();
for (String element : old) {
result.add(element);
}
result.remove(new Path(PROJECT_1).append("added file").toString());
result.remove(new Path(PROJECT_1).append("yet another file").toString());
result.remove(new Path(PROJECT_1).append("a folder").addTrailingSeparator().toString());
return result.toArray(new String[result.size()]);
}
protected static String[] defineHierarchy2() {
return new String[0];
}
public void testChangeMyProject() {
// MyProject
IProject project = getWorkspace().getRoot().getProject(PROJECT_1);
assertTrue("0.1", project.exists());
assertTrue("0.2", project.isOpen());
// remove resources
IFile file = project.getFile("added file");
try {
file.delete(true, true, null);
} catch (CoreException e) {
fail("1.0", e);
}
assertDoesNotExistInFileSystem("1.1", file);
assertDoesNotExistInWorkspace("1.2", file);
// full save
try {
getWorkspace().save(true, null);
} catch (CoreException e) {
fail("2.0", e);
}
// remove resources
file = project.getFile("yet another file");
try {
file.delete(true, true, null);
} catch (CoreException e) {
fail("3.0", e);
}
assertDoesNotExistInFileSystem("3.1", file);
assertDoesNotExistInWorkspace("3.2", file);
// snapshot
try {
getWorkspace().save(false, null);
} catch (CoreException e) {
fail("4.0", e);
}
// remove resources
IFolder folder = project.getFolder("a folder");
try {
folder.delete(true, true, null);
} catch (CoreException e) {
fail("5.0", e);
}
assertDoesNotExistInFileSystem("5.1", folder);
assertDoesNotExistInWorkspace("5.2", folder);
// snapshot
try {
getWorkspace().save(false, null);
} catch (CoreException e) {
fail("6.0", e);
}
}
public void testChangeProject2() {
IProject project = getWorkspace().getRoot().getProject(PROJECT_2);
assertTrue("0.1", project.exists());
assertTrue("0.2", project.isOpen());
// remove project
try {
project.delete(true, true, null);
} catch (CoreException e) {
fail("1.0", e);
}
assertTrue("1.1", !project.exists());
// snapshot
try {
getWorkspace().save(false, null);
} catch (CoreException e) {
fail("4.0", e);
}
}
public void testVerifyPreviousSession() {
// MyProject
IProject project = getWorkspace().getRoot().getProject(PROJECT_1);
assertTrue("0.0", project.exists());
assertTrue("0.1", project.isOpen());
// verify existence of children
IResource[] resources = buildResources(project, Snapshot3Test.defineHierarchy1());
assertExistsInFileSystem("2.1", resources);
assertExistsInWorkspace("2.2", resources);
// Project2
project = getWorkspace().getRoot().getProject(PROJECT_2);
assertTrue("3.0", project.exists());
assertTrue("3.1", project.isOpen());
try {
assertEquals("4.0", 4, project.members().length);
assertNotNull("4.1", project.findMember(IProjectDescription.DESCRIPTION_FILE_NAME));
} catch (CoreException e) {
fail("4.2", e);
}
// verify existence of children
resources = buildResources(project, Snapshot3Test.defineHierarchy2());
assertExistsInFileSystem("5.1", resources);
assertExistsInWorkspace("5.2", resources);
}
}