blob: 13b8a140ac51f8b4e7a21f3a2f2c41d53f44f61e [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2012-2013 EclipseSource Muenchen GmbH 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:
******************************************************************************/
package org.eclipse.emf.emfstore.client.test.persistence;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import java.io.File;
import java.io.IOException;
import junit.framework.Assert;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.emf.emfstore.client.ESLocalProject;
import org.eclipse.emf.emfstore.client.ESProject;
import org.eclipse.emf.emfstore.client.test.WorkspaceTest;
import org.eclipse.emf.emfstore.internal.client.importexport.ExportImportControllerExecutor;
import org.eclipse.emf.emfstore.internal.client.importexport.ExportImportControllerFactory;
import org.eclipse.emf.emfstore.internal.client.importexport.impl.ExportImportDataUnits;
import org.eclipse.emf.emfstore.internal.client.model.ESWorkspaceProviderImpl;
import org.eclipse.emf.emfstore.internal.client.model.ProjectSpace;
import org.eclipse.emf.emfstore.internal.common.model.util.ModelUtil;
import org.junit.Test;
public class ImportExportTest extends WorkspaceTest {
@Override
protected void configureCompareAtEnd() {
setCompareAtEnd(false);
}
@Test
public void testExportImportChangesController() throws IOException {
final ProjectSpace clonedProjectSpace = ModelUtil.clone(getProjectSpace());
createTestElement("A");
Assert.assertTrue(getProjectSpace().getOperations().size() > 0);
// TODO: assert file extension is correct
final File temp = File.createTempFile("changes", ExportImportDataUnits.Change.getExtension());
new ExportImportControllerExecutor(temp, new NullProgressMonitor())
.execute(ExportImportControllerFactory.Export.getExportChangesController(getProjectSpace()));
// TODO: assert file was written
new ExportImportControllerExecutor(temp, new NullProgressMonitor())
.execute(ExportImportControllerFactory.Import.getImportChangesController(clonedProjectSpace));
Assert.assertTrue(ModelUtil.areEqual(getProjectSpace().getProject(), clonedProjectSpace.getProject()));
}
@Test
public void testExportImportProjectController() throws IOException {
createTestElement("A");
Assert.assertTrue(getProjectSpace().getOperations().size() > 0);
// TODO: assert file extension is correct
final File temp = File.createTempFile("project", ExportImportDataUnits.Project.getExtension());
new ExportImportControllerExecutor(temp, new NullProgressMonitor())
.execute(ExportImportControllerFactory.Export.getExportProjectController(getProjectSpace()));
// TODO: assert file was written
new ExportImportControllerExecutor(temp, new NullProgressMonitor())
.execute(ExportImportControllerFactory.Import.getImportProjectController("importedProject"));
ProjectSpace newProjectSpace = null;
for (final ESProject project : ESWorkspaceProviderImpl.getInstance().getWorkspace().getLocalProjects()) {
if (project.getProjectName().equals("importedProject")) {
newProjectSpace = getProjectSpace();
break;
}
}
assertTrue(newProjectSpace != null);
}
@Test
public void testDuplicateImportOfProjectSpace() throws IOException {
final String tmpDir = System.getProperty("java.io.tmpdir") + "ieTest" + System.currentTimeMillis();
final File tmpDirFile = new File(tmpDir);
final boolean bo = tmpDirFile.mkdir();
if (!bo) {
fail("Could not create temp folder for test");
}
final File temp = File.createTempFile("projectSpace", ExportImportDataUnits.ProjectSpace.getExtension(),
tmpDirFile);
new ExportImportControllerExecutor(temp, new NullProgressMonitor())
.execute(ExportImportControllerFactory.Export.getExportProjectSpaceController(getProjectSpace()));
new ExportImportControllerExecutor(temp, new NullProgressMonitor())
.execute(ExportImportControllerFactory.Import.getImportProjectSpaceController());
new ExportImportControllerExecutor(temp, new NullProgressMonitor())
.execute(ExportImportControllerFactory.Import.getImportProjectSpaceController());
Assert.assertEquals(3, ESWorkspaceProviderImpl.getInstance().getWorkspace().getLocalProjects().size());
final ProjectSpace projectSpace = ESWorkspaceProviderImpl.getInstance().getInternalWorkspace()
.getProjectSpaces().get(1);
final ProjectSpace projectSpace2 = ESWorkspaceProviderImpl.getInstance().getInternalWorkspace()
.getProjectSpaces().get(2);
assertFalse(projectSpace.getIdentifier().equals(projectSpace2.getIdentifier()));
}
@Test
public void testExportImportProjectSpaceController() throws IOException {
createTestElement("A");
Assert.assertTrue(getProjectSpace().getOperations().size() > 0);
final String tmpDir = System.getProperty("java.io.tmpdir") + "ieTest" + System.currentTimeMillis();
final File tmpDirFile = new File(tmpDir);
final boolean bo = tmpDirFile.mkdir();
if (!bo) {
fail("Could not create temp folder for test");
}
// TODO: assert file extension is correct
final File temp = File.createTempFile("projectSpace", ExportImportDataUnits.ProjectSpace.getExtension(),
tmpDirFile);
new ExportImportControllerExecutor(temp, new NullProgressMonitor())
.execute(ExportImportControllerFactory.Export.getExportProjectSpaceController(getProjectSpace()));
// TODO: assert file was written
new ExportImportControllerExecutor(temp, new NullProgressMonitor())
.execute(ExportImportControllerFactory.Import.getImportProjectSpaceController());
Assert.assertEquals(2, ESWorkspaceProviderImpl.getInstance().getWorkspace().getLocalProjects().size());
final ESLocalProject a = ESWorkspaceProviderImpl.getInstance().getWorkspace().getLocalProjects().get(0);
final ESLocalProject b = ESWorkspaceProviderImpl.getInstance().getWorkspace().getLocalProjects().get(1);
// TODO: are the imported IDs supposed to be the same as in the original project?
// Assert.assertTrue(ModelUtil.areEqual(a.getProject(), b.getProject()));
}
}