blob: a8fbfda894ddc4dfe822c1ac3311f57ca1eedb03 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008-2011 Chair for Applied Software Engineering,
* Technische Universitaet Muenchen.
* 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:
* Edgar Mueller - intial API and implementation
******************************************************************************/
package org.eclipse.emf.emfstore.client.conflictdetection.test;
import static org.junit.Assert.assertFalse;
import java.util.List;
import java.util.concurrent.Callable;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.emfstore.client.util.RunESCommand;
import org.eclipse.emf.emfstore.internal.client.model.ProjectSpace;
import org.eclipse.emf.emfstore.internal.common.model.ModelElementId;
import org.eclipse.emf.emfstore.internal.server.conflictDetection.ConflictBucket;
import org.eclipse.emf.emfstore.internal.server.model.versioning.operations.AbstractOperation;
import org.eclipse.emf.emfstore.test.model.TestElement;
import org.eclipse.emf.emfstore.test.model.TestmodelFactory;
import org.eclipse.emf.emfstore.test.model.TestmodelPackage;
import org.junit.Ignore;
import org.junit.Test;
/**
* @author emueller
*/
public class ConflictDetectionCreateTest extends ConflictDetectionTest {
private static final String QUUX = "quux"; //$NON-NLS-1$
private static final String BAR = "bar"; //$NON-NLS-1$
private static final String FOO = "foo"; //$NON-NLS-1$
@Test
public void readAnnotation() {
final EClass testElement = TestmodelPackage.eINSTANCE.getTestElement();
final EList<EAttribute> eAllAttributes = testElement.getEAllAttributes();
for (final EAttribute eAttribute : eAllAttributes) {
System.out.println(eAttribute.getEAnnotations().size());
}
}
/**
* Tests if creating map entries with the same key conflict.
*/
@Ignore
@Test
public void conflictCreateMapEntry() {
final TestElement testElement = TestmodelFactory.eINSTANCE.createTestElement();
RunESCommand.run(new Callable<Void>() {
public Void call() throws Exception {
getProject().addModelElement(testElement);
clearOperations();
return null;
}
});
final ModelElementId modelElementId = getProjectSpace().getProject().getModelElementId(testElement);
final ProjectSpace secondProjectSpace = cloneProjectSpace(getProjectSpace());
final TestElement clonedTestElement = (TestElement) secondProjectSpace.getProject().getModelElement(
modelElementId);
RunESCommand.run(new Callable<Void>() {
public Void call() throws Exception {
testElement.getStringToStringMap().put(FOO, BAR);
return null;
}
});
RunESCommand.run(new Callable<Void>() {
public Void call() throws Exception {
clonedTestElement.getStringToStringMap().put(FOO, QUUX);
return null;
}
});
final List<AbstractOperation> ops1 = forceGetOperations();
final List<AbstractOperation> ops2 = forceGetOperations(secondProjectSpace);
final List<ConflictBucket> conflicts = getConflicts(ops1, ops2);
assertFalse(conflicts.isEmpty());
}
@Ignore
@Test
public void conflictCreateAttribute() {
final TestElement testElement = TestmodelFactory.eINSTANCE.createTestElement();
RunESCommand.run(new Callable<Void>() {
public Void call() throws Exception {
getProject().addModelElement(testElement);
clearOperations();
return null;
}
});
final ModelElementId modelElementId = getProjectSpace().getProject().getModelElementId(testElement);
final ProjectSpace secondProjectSpace = cloneProjectSpace(getProjectSpace());
final TestElement clonedTestElement = (TestElement) secondProjectSpace.getProject().getModelElement(
modelElementId);
RunESCommand.run(new Callable<Void>() {
public Void call() throws Exception {
testElement.setName(FOO);
return null;
}
});
RunESCommand.run(new Callable<Void>() {
public Void call() throws Exception {
clonedTestElement.setName(FOO);
return null;
}
});
final List<AbstractOperation> ops1 = forceGetOperations();
final List<AbstractOperation> ops2 = forceGetOperations(secondProjectSpace);
final List<ConflictBucket> conflicts = getConflicts(ops1, ops2);
assertFalse(conflicts.isEmpty());
}
}