blob: 0b9f5a039e0c26f21dec6616bdae6c6f70cb00e8 [file] [log] [blame]
/**
* <copyright> Copyright (c) 2008-2009 Jonas Helming, Maximilian Koegel. 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 </copyright>
*/
package org.eclipse.emf.emfstore.client.test.changeTracking.operations;
import static org.junit.Assert.assertTrue;
import org.eclipse.emf.emfstore.client.model.util.EMFStoreCommand;
import org.eclipse.emf.emfstore.client.test.WorkspaceTest;
import org.eclipse.emf.emfstore.client.test.testmodel.TestElement;
import org.eclipse.emf.emfstore.server.model.versioning.operations.AbstractOperation;
import org.eclipse.emf.emfstore.server.model.versioning.operations.MultiAttributeMoveOperation;
import org.junit.Test;
/**
* Tests for multiattributemove operations.
*
* @author wesendon
*/
public class MultiAttributeMoveOperationTest extends WorkspaceTest {
/**
* Simple move element.
*/
@Test
public void moveTest() {
new EMFStoreCommand() {
@Override
protected void doRun() {
TestElement testElement = getTestElement();
testElement.getStrings().add("first");
testElement.getStrings().add("second");
testElement.getStrings().add("third");
getProjectSpace().getOperations().clear();
testElement.getStrings().move(0, 2);
assertTrue(testElement.getStrings().get(0).equals("third"));
assertTrue(testElement.getStrings().get(1).equals("first"));
assertTrue(testElement.getStrings().get(2).equals("second"));
}
}.run(false);
}
/**
* Move and validate operation.
*/
@Test
public void moveAndOperationTest() {
new EMFStoreCommand() {
@Override
protected void doRun() {
TestElement testElement = getTestElement();
testElement.getStrings().add("first");
testElement.getStrings().add("second");
getProjectSpace().getOperations().clear();
testElement.getStrings().move(0, 1);
assertTrue(testElement.getStrings().get(0).equals("second"));
assertTrue(testElement.getStrings().get(1).equals("first"));
assertTrue(getProjectSpace().getOperations().size() == 1);
AbstractOperation tmp = getProjectSpace().getOperations().get(0);
assertTrue(tmp instanceof MultiAttributeMoveOperation);
MultiAttributeMoveOperation operation = (MultiAttributeMoveOperation) tmp;
assertTrue(operation.getNewIndex() == 0);
assertTrue(operation.getOldIndex() == 1);
assertTrue(operation.getReferencedValue().equals("second"));
}
}.run(false);
}
/**
* Move and reverse.
*/
@Test
public void moveAndReverseTest() {
new EMFStoreCommand() {
@Override
protected void doRun() {
TestElement testElement = getTestElement();
testElement.getStrings().add("first");
testElement.getStrings().add("second");
getProjectSpace().getOperations().clear();
assertTrue(testElement.getStrings().size() == 2);
assertTrue(testElement.getStrings().get(0).equals("first"));
assertTrue(testElement.getStrings().get(1).equals("second"));
testElement.getStrings().move(0, 1);
assertTrue(testElement.getStrings().size() == 2);
assertTrue(testElement.getStrings().get(0).equals("second"));
assertTrue(testElement.getStrings().get(1).equals("first"));
AbstractOperation operation = getProjectSpace().getOperations().get(0).reverse();
operation.apply(getProject());
assertTrue(testElement.getStrings().size() == 2);
assertTrue(testElement.getStrings().get(0).equals("first"));
assertTrue(testElement.getStrings().get(1).equals("second"));
}
}.run(false);
}
}