/******************************************************************************* * Copyright (c) 2014-2016 IncQuery Labs Ltd. * 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: * Akos Horvath, Abel Hegedus, Zoltan Ujhelyi - initial API and implementation *******************************************************************************/ package org.eclipse.viatra.examples.cps.xform.m2t.serializer.test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.io.IOException; import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.viatra.examples.cps.tests.util.CPSTestBase; import org.eclipse.viatra.examples.cps.xform.serializer.eclipse.EclipseBasedFileAccessor; import org.junit.Test; public class EclipseBasedAccessorTestTest extends CPSTestBase{ private static final String TEST_FILE_NAME = "test.java"; private static final String TEST_CONSTANT = "Test Test Test File Apple"; @Test public void createProject() throws CoreException, IOException { EclipseBasedFileAccessor accessor = new EclipseBasedFileAccessor(); accessor.createProject("", "org.alma.test"); IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("org.alma.test"); assertTrue("Project does not exist!", project.exists()); } @Test public void createFile() throws CoreException, IOException { createTestFile(); } @Test public void writeFile() throws CoreException, IOException { EclipseBasedFileAccessor accessor = new EclipseBasedFileAccessor(); // Create test file IFile file = createTestFile(); long localTimeStamp = file.getModificationStamp(); // Try to create existing file with same content IFolder folder = ((IFolder)file.getParent()); accessor.createFile(folder.getLocation().toOSString(), TEST_FILE_NAME, TEST_CONSTANT); IFile createdFile = folder.getFile(TEST_FILE_NAME); // Check modification stamp long newTimeStamp = file.getModificationStamp(); assertEquals(file, createdFile); assertEquals(newTimeStamp, localTimeStamp); // Modify accessor.createFile(folder.getLocation().toOSString(), TEST_FILE_NAME, "NEW CONTENT"); IFile modifiedFile = folder.getFile(TEST_FILE_NAME); assertTrue(localTimeStamp != file.getModificationStamp()); assertEquals(file, modifiedFile); } private IFile createTestFile() throws CoreException, IOException { EclipseBasedFileAccessor accessor = new EclipseBasedFileAccessor(); accessor.createProject("", "org.alma.test"); IProject project = ResourcesPlugin.getWorkspace().getRoot().getProject("org.alma.test"); assertTrue("Project does not exist!", project.exists()); IFolder srcFolder = project.getFolder("src"); NullProgressMonitor monitor = new NullProgressMonitor(); if(!srcFolder.exists()){ srcFolder.create(true, true, monitor); } assertTrue("Folder does not exist!", srcFolder.exists()); accessor.createFile(srcFolder.getLocation().toOSString(), TEST_FILE_NAME, TEST_CONSTANT); IContainer container = ResourcesPlugin.getWorkspace().getRoot().getContainerForLocation(new Path(srcFolder.getLocation().toOSString())); IFile createdFile = null; if (container instanceof IFolder) { createdFile = ((IFolder)container).getFile(TEST_FILE_NAME); } assertTrue("File does not exist!", createdFile.exists()); return createdFile; } }