/******************************************************************************* * 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.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.Path; /** * This session add some resources to MyProject. All resources * from Project2 are removed and some resources are added to it * but not written to disk (only in the tree). * Only snapshots are taken. No full saves. */ public class Snapshot2Test extends SnapshotTest { public Snapshot2Test() { super(); } public Snapshot2Test(String name) { super(name); } protected static String[] defineHierarchy1() { List<String> result = new ArrayList<>(); String[] old = Snapshot1Test.defineHierarchy1(); for (String element : old) { result.add(element); } result.add(new Path(PROJECT_1).append("added file").toString()); result.add(new Path(PROJECT_1).append("yet another file").toString()); result.add(new Path(PROJECT_1).append("a folder").addTrailingSeparator().toString()); return result.toArray(new String[result.size()]); } protected static String[] defineHierarchy2() { return new String[] {"/added file", "/yet another file", "/a folder/"}; } public void testChangeMyProject() { // MyProject IProject project = getWorkspace().getRoot().getProject(PROJECT_1); assertTrue("0.1", project.exists()); assertTrue("0.2", project.isOpen()); // create some children IResource[] resources = buildResources(project, defineHierarchy1()); ensureExistsInWorkspace(resources, true); assertExistsInFileSystem("1.1", resources); assertExistsInWorkspace("1.2", resources); } public void testChangeProject2() { IProject project = getWorkspace().getRoot().getProject("Project2"); assertTrue("0.1", project.exists()); assertTrue("0.2", project.isOpen()); // remove all resources try { IResource[] children = project.members(); getWorkspace().delete(children, true, null); } catch (CoreException e) { fail("0.5", e); } // create some children IResource[] resources = buildResources(project, defineHierarchy2()); ensureExistsInWorkspace(resources, true); assertExistsInFileSystem("1.1", resources); assertExistsInWorkspace("1.2", resources); } public void testSnapshotWorkspace() { try { getWorkspace().save(false, null); } catch (CoreException e) { fail("1.0", e); } } public void testVerifyPreviousSession() { // MyProject IProject project = getWorkspace().getRoot().getProject(PROJECT_1); assertTrue("0.0", project.exists()); assertTrue("0.1", !project.isOpen()); try { project.open(null); } catch (CoreException e) { fail("1.0", e); } assertTrue("1.2", project.isOpen()); // verify existence of children IResource[] resources = buildResources(project, Snapshot1Test.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()); // verify existence of children resources = buildResources(project, Snapshot1Test.defineHierarchy2()); assertExistsInFileSystem("5.1", resources); assertExistsInWorkspace("5.2", resources); } }