| /** |
| * <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.assertEquals; |
| import static org.junit.Assert.assertFalse; |
| import static org.junit.Assert.assertNotNull; |
| import static org.junit.Assert.assertTrue; |
| |
| import java.io.IOException; |
| import java.util.List; |
| import java.util.Set; |
| |
| import org.eclipse.emf.common.util.EList; |
| import org.eclipse.emf.common.util.URI; |
| import org.eclipse.emf.ecore.EClass; |
| import org.eclipse.emf.ecore.EObject; |
| import org.eclipse.emf.ecore.EStructuralFeature; |
| import org.eclipse.emf.ecore.EcoreFactory; |
| import org.eclipse.emf.ecore.resource.Resource; |
| import org.eclipse.emf.ecore.resource.ResourceSet; |
| import org.eclipse.emf.ecore.util.EcoreUtil; |
| import org.eclipse.emf.emfstore.client.model.ModelPackage; |
| import org.eclipse.emf.emfstore.client.model.ProjectSpace; |
| import org.eclipse.emf.emfstore.client.model.exceptions.UnsupportedNotificationException; |
| import org.eclipse.emf.emfstore.client.model.impl.ProjectSpaceImpl; |
| import org.eclipse.emf.emfstore.client.model.util.EMFStoreCommand; |
| import org.eclipse.emf.emfstore.client.test.WorkspaceTest; |
| import org.eclipse.emf.emfstore.common.model.ModelElementId; |
| import org.eclipse.emf.emfstore.common.model.Project; |
| import org.eclipse.emf.emfstore.common.model.impl.ProjectImpl; |
| import org.eclipse.emf.emfstore.common.model.util.ModelUtil; |
| import org.eclipse.emf.emfstore.server.model.versioning.operations.AbstractOperation; |
| import org.eclipse.emf.emfstore.server.model.versioning.operations.CreateDeleteOperation; |
| import org.eclipse.emf.emfstore.server.model.versioning.operations.MultiReferenceOperation; |
| import org.eclipse.emf.emfstore.server.model.versioning.operations.ReferenceOperation; |
| import org.eclipse.emf.emfstore.server.model.versioning.operations.SingleReferenceOperation; |
| import org.junit.Test; |
| |
| /** |
| * Test creating an deleting elements. |
| * |
| * @author koegel |
| */ |
| public class CreateDeleteOperationTest extends WorkspaceTest { |
| |
| /** |
| * Test element creation tracking. |
| * |
| * @throws UnsupportedOperationException on test fail |
| * @throws UnsupportedNotificationException on test fail |
| */ |
| @Test |
| public void createElementTest() throws UnsupportedOperationException, UnsupportedNotificationException { |
| |
| final UseCase useCase = RequirementFactory.eINSTANCE.createUseCase(); |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| getProject().addModelElement(useCase); |
| } |
| }.run(false); |
| |
| List<AbstractOperation> operations = getProjectSpace().getOperations(); |
| |
| assertEquals(1, operations.size()); |
| AbstractOperation operation = operations.get(0); |
| assertEquals(true, operation instanceof CreateDeleteOperation); |
| CreateDeleteOperation createDeleteOperation = (CreateDeleteOperation) operation; |
| |
| ModelElementId useCaseId = ModelUtil.getProject(useCase).getModelElementId(useCase); |
| |
| assertEquals(useCaseId, createDeleteOperation.getModelElementId()); |
| assertEquals(0, createDeleteOperation.getSubOperations().size()); |
| assertEquals(false, createDeleteOperation.isDelete()); |
| } |
| |
| /** |
| * Test adding an element with cross references to an existing element. |
| * |
| * @throws UnsupportedOperationException on test fail |
| * @throws UnsupportedNotificationException on test fail |
| */ |
| @Test |
| public void createElementwithCrossreferencesTest() throws UnsupportedOperationException, |
| UnsupportedNotificationException { |
| final UseCase useCase = RequirementFactory.eINSTANCE.createUseCase(); |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| getProject().addModelElement(useCase); |
| } |
| }.run(false); |
| |
| assertEquals(true, getProject().containsInstance(useCase)); |
| assertEquals(getProject(), ModelUtil.getProject(useCase)); |
| |
| final FunctionalRequirement functionalRequirement = RequirementFactory.eINSTANCE.createFunctionalRequirement(); |
| |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| useCase.getFunctionalRequirements().add(functionalRequirement); |
| clearOperations(); |
| } |
| }.run(false); |
| |
| assertEquals(functionalRequirement, useCase.getFunctionalRequirements().get(0)); |
| assertEquals(useCase, functionalRequirement.getUseCases().get(0)); |
| |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| getProject().addModelElement(functionalRequirement); |
| } |
| }.run(false); |
| |
| assertEquals(true, getProject().containsInstance(functionalRequirement)); |
| assertEquals(getProject(), ModelUtil.getProject(functionalRequirement)); |
| |
| List<AbstractOperation> operations = getProjectSpace().getOperations(); |
| |
| assertEquals(1, operations.size()); |
| AbstractOperation operation = operations.get(0); |
| assertEquals(true, operation instanceof CreateDeleteOperation); |
| CreateDeleteOperation createDeleteOperation = (CreateDeleteOperation) operation; |
| |
| ModelElementId funtionalRQID = ModelUtil.getProject(useCase).getModelElementId(functionalRequirement); |
| |
| assertEquals(funtionalRQID, createDeleteOperation.getModelElementId()); |
| assertEquals(2, createDeleteOperation.getSubOperations().size()); |
| assertEquals(false, createDeleteOperation.isDelete()); |
| |
| MultiReferenceOperation subOperation1 = (MultiReferenceOperation) createDeleteOperation.getSubOperations().get( |
| 0); |
| assertEquals(functionalRequirement, getProject().getModelElement(subOperation1.getModelElementId())); |
| assertEquals(useCase, getProject().getModelElement(subOperation1.getReferencedModelElements().get(0))); |
| |
| MultiReferenceOperation subOperation2 = (MultiReferenceOperation) createDeleteOperation.getSubOperations().get( |
| 1); |
| assertEquals(useCase, getProject().getModelElement(subOperation2.getModelElementId())); |
| assertEquals(functionalRequirement, |
| getProject().getModelElement(subOperation2.getReferencedModelElements().get(0))); |
| } |
| |
| /** |
| * check element deletion tracking. |
| * |
| * @throws UnsupportedOperationException on test fail |
| * @throws UnsupportedNotificationException on test fail |
| */ |
| @Test |
| public void deleteElementTest() throws UnsupportedOperationException, UnsupportedNotificationException { |
| |
| final UseCase useCase = RequirementFactory.eINSTANCE.createUseCase(); |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| getProject().addModelElement(useCase); |
| clearOperations(); |
| } |
| }.run(false); |
| |
| ModelElementId useCaseId = ModelUtil.getProject(useCase).getModelElementId(useCase); |
| |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| getProject().deleteModelElement(useCase); |
| } |
| }.run(false); |
| |
| List<AbstractOperation> operations = getProjectSpace().getOperations(); |
| |
| assertEquals(1, operations.size()); |
| AbstractOperation operation = operations.get(0); |
| assertEquals(true, operation instanceof CreateDeleteOperation); |
| CreateDeleteOperation createDeleteOperation = (CreateDeleteOperation) operation; |
| |
| assertEquals(useCaseId, createDeleteOperation.getModelElementId()); |
| assertEquals(0, createDeleteOperation.getSubOperations().size()); |
| assertEquals(true, createDeleteOperation.isDelete()); |
| } |
| |
| /** |
| * check complex element deletion tracking. |
| * |
| * @throws UnsupportedOperationException on test fail |
| * @throws UnsupportedNotificationException on test fail |
| * @throws IOException |
| */ |
| @Test |
| // BEGIN COMPLEX CODE |
| public void complexDeleteElementTest() throws UnsupportedOperationException, UnsupportedNotificationException, |
| IOException { |
| |
| final LeafSection section = DocumentFactory.eINSTANCE.createLeafSection(); |
| final UseCase useCase = RequirementFactory.eINSTANCE.createUseCase(); |
| final Actor oldActor = RequirementFactory.eINSTANCE.createActor(); |
| final Actor newActor = RequirementFactory.eINSTANCE.createActor(); |
| final Actor otherActor = RequirementFactory.eINSTANCE.createActor(); |
| |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| getProject().addModelElement(section); |
| section.getModelElements().add(useCase); |
| section.getModelElements().add(oldActor); |
| getProject().addModelElement(newActor); |
| getProject().addModelElement(otherActor); |
| useCase.setInitiatingActor(oldActor); |
| useCase.getParticipatingActors().add(newActor); |
| useCase.getParticipatingActors().add(otherActor); |
| assertEquals(true, getProject().containsInstance(useCase)); |
| assertEquals(getProject(), ModelUtil.getProject(useCase)); |
| clearOperations(); |
| } |
| }.run(false); |
| |
| ModelElementId useCaseId = ModelUtil.getProject(useCase).getModelElementId(useCase); |
| |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| getProject().deleteModelElement(useCase); |
| } |
| }.run(false); |
| |
| assertEquals(false, getProject().containsInstance(useCase)); |
| // assertEquals(null, useCase.eContainer()); |
| |
| List<AbstractOperation> operations = getProjectSpace().getOperations(); |
| |
| assertEquals(1, operations.size()); |
| AbstractOperation operation = operations.get(0); |
| assertEquals(true, operation instanceof CreateDeleteOperation); |
| CreateDeleteOperation createDeleteOperation = (CreateDeleteOperation) operation; |
| assertEquals(true, createDeleteOperation.isDelete()); |
| |
| assertEquals(useCaseId, createDeleteOperation.getModelElementId()); |
| EList<ReferenceOperation> subOperations = createDeleteOperation.getSubOperations(); |
| |
| assertEquals(7, subOperations.size()); |
| AbstractOperation subOperation0 = subOperations.get(0); |
| AbstractOperation subOperation1 = subOperations.get(1); |
| AbstractOperation subOperation2 = subOperations.get(2); |
| AbstractOperation subOperation3 = subOperations.get(3); |
| AbstractOperation subOperation4 = subOperations.get(4); |
| AbstractOperation subOperation5 = subOperations.get(5); |
| AbstractOperation subOperation6 = subOperations.get(6); |
| |
| assertEquals(true, subOperation0 instanceof MultiReferenceOperation); |
| assertEquals(true, subOperation1 instanceof SingleReferenceOperation); |
| assertEquals(true, subOperation2 instanceof MultiReferenceOperation); |
| assertEquals(true, subOperation3 instanceof MultiReferenceOperation); |
| assertEquals(true, subOperation4 instanceof MultiReferenceOperation); |
| assertEquals(true, subOperation5 instanceof SingleReferenceOperation); |
| assertEquals(true, subOperation6 instanceof MultiReferenceOperation); |
| |
| MultiReferenceOperation mrSubOperation0 = (MultiReferenceOperation) subOperation0; |
| SingleReferenceOperation mrSubOperation1 = (SingleReferenceOperation) subOperation1; |
| MultiReferenceOperation mrSubOperation2 = (MultiReferenceOperation) subOperation2; |
| MultiReferenceOperation mrSubOperation3 = (MultiReferenceOperation) subOperation3; |
| MultiReferenceOperation mrSubOperation4 = (MultiReferenceOperation) subOperation4; |
| SingleReferenceOperation mrSubOperation5 = (SingleReferenceOperation) subOperation5; |
| MultiReferenceOperation mrSubOperation6 = (MultiReferenceOperation) subOperation6; |
| |
| assertEquals("initiatedUseCases", mrSubOperation0.getFeatureName()); |
| assertEquals(0, mrSubOperation0.getIndex()); |
| |
| ModelElementId oldActorId = ModelUtil.getProject(oldActor).getModelElementId(oldActor); |
| ModelElementId otherActorId = ModelUtil.getProject(otherActor).getModelElementId(otherActor); |
| ModelElementId newActorId = ModelUtil.getProject(newActor).getModelElementId(newActor); |
| ModelElementId sectionId = ModelUtil.getProject(section).getModelElementId(section); |
| |
| assertEquals(oldActorId, mrSubOperation0.getModelElementId()); |
| assertEquals("initiatingActor", mrSubOperation0.getOppositeFeatureName()); |
| assertEquals(false, mrSubOperation0.isAdd()); |
| assertEquals(true, mrSubOperation0.isBidirectional()); |
| Set<ModelElementId> otherInvolvedModelElements0 = mrSubOperation0.getOtherInvolvedModelElements(); |
| assertEquals(1, otherInvolvedModelElements0.size()); |
| EList<ModelElementId> referencedModelElements0 = mrSubOperation0.getReferencedModelElements(); |
| assertEquals(1, referencedModelElements0.size()); |
| assertEquals(useCaseId, referencedModelElements0.get(0)); |
| |
| assertEquals(oldActorId, mrSubOperation1.getOldValue()); |
| assertEquals(null, mrSubOperation1.getNewValue()); |
| assertEquals("initiatingActor", mrSubOperation1.getFeatureName()); |
| assertEquals(useCaseId, mrSubOperation1.getModelElementId()); |
| assertEquals("initiatedUseCases", mrSubOperation1.getOppositeFeatureName()); |
| assertEquals(true, mrSubOperation1.isBidirectional()); |
| Set<ModelElementId> otherInvolvedModelElements = mrSubOperation1.getOtherInvolvedModelElements(); |
| assertEquals(1, otherInvolvedModelElements.size()); |
| assertEquals(oldActorId, otherInvolvedModelElements.iterator().next()); |
| |
| assertEquals(newActorId, mrSubOperation2.getModelElementId()); |
| assertEquals("participatedUseCases", mrSubOperation2.getFeatureName()); |
| assertEquals(false, mrSubOperation2.isAdd()); |
| assertEquals(1, mrSubOperation2.getReferencedModelElements().size()); |
| assertEquals(useCaseId, mrSubOperation2.getReferencedModelElements().get(0)); |
| |
| assertEquals(otherActorId, mrSubOperation3.getModelElementId()); |
| assertEquals("participatedUseCases", mrSubOperation3.getFeatureName()); |
| assertEquals(false, mrSubOperation3.isAdd()); |
| assertEquals(1, mrSubOperation3.getReferencedModelElements().size()); |
| assertEquals(useCaseId, mrSubOperation3.getReferencedModelElements().get(0)); |
| |
| assertEquals("participatingActors", mrSubOperation4.getFeatureName()); |
| assertEquals(0, mrSubOperation4.getIndex()); |
| assertEquals(useCaseId, mrSubOperation4.getModelElementId()); |
| assertEquals("participatedUseCases", mrSubOperation4.getOppositeFeatureName()); |
| assertEquals(false, mrSubOperation4.isAdd()); |
| assertEquals(true, mrSubOperation4.isBidirectional()); |
| Set<ModelElementId> otherInvolvedModelElements2 = mrSubOperation4.getOtherInvolvedModelElements(); |
| assertEquals(2, otherInvolvedModelElements2.size()); |
| EList<ModelElementId> referencedModelElements = mrSubOperation4.getReferencedModelElements(); |
| assertEquals(2, referencedModelElements.size()); |
| assertEquals(newActorId, referencedModelElements.get(0)); |
| assertEquals(otherActorId, referencedModelElements.get(1)); |
| |
| assertEquals(useCaseId, mrSubOperation5.getModelElementId()); |
| assertEquals("leafSection", mrSubOperation5.getFeatureName()); |
| assertEquals(sectionId, mrSubOperation5.getOldValue()); |
| assertEquals(null, mrSubOperation5.getNewValue()); |
| |
| assertEquals("modelElements", mrSubOperation6.getFeatureName()); |
| assertEquals(0, mrSubOperation6.getIndex()); |
| assertEquals(sectionId, mrSubOperation6.getModelElementId()); |
| assertEquals("leafSection", mrSubOperation6.getOppositeFeatureName()); |
| assertEquals(false, mrSubOperation6.isAdd()); |
| assertEquals(true, mrSubOperation6.isBidirectional()); |
| Set<ModelElementId> otherInvolvedModelElements3 = mrSubOperation6.getOtherInvolvedModelElements(); |
| assertEquals(1, otherInvolvedModelElements3.size()); |
| EList<ModelElementId> referencedModelElements3 = mrSubOperation6.getReferencedModelElements(); |
| assertEquals(1, referencedModelElements3.size()); |
| assertEquals(useCaseId, referencedModelElements3.get(0)); |
| |
| // ((ProjectSpaceImpl) getProjectSpace()).saveProjectSpaceOnly(); |
| ProjectSpace loadedProjectSpace = ModelUtil.loadEObjectFromResource(ModelPackage.eINSTANCE.getProjectSpace(), |
| getProjectSpace().eResource().getURI(), false); |
| Project loadedProject = loadedProjectSpace.getProject(); |
| |
| assertEquals(false, loadedProject.containsInstance(useCase)); |
| operations = loadedProjectSpace.getOperations(); |
| |
| assertEquals(1, operations.size()); |
| operation = operations.get(0); |
| assertEquals(true, operation instanceof CreateDeleteOperation); |
| createDeleteOperation = (CreateDeleteOperation) operation; |
| assertEquals(true, createDeleteOperation.isDelete()); |
| |
| assertEquals(useCaseId, createDeleteOperation.getModelElementId()); |
| subOperations = createDeleteOperation.getSubOperations(); |
| |
| assertEquals(7, subOperations.size()); |
| subOperation0 = subOperations.get(0); |
| subOperation1 = subOperations.get(1); |
| subOperation2 = subOperations.get(2); |
| subOperation3 = subOperations.get(3); |
| subOperation4 = subOperations.get(4); |
| subOperation5 = subOperations.get(5); |
| subOperation6 = subOperations.get(6); |
| |
| assertEquals(true, subOperation0 instanceof MultiReferenceOperation); |
| assertEquals(true, subOperation1 instanceof SingleReferenceOperation); |
| assertEquals(true, subOperation2 instanceof MultiReferenceOperation); |
| assertEquals(true, subOperation3 instanceof MultiReferenceOperation); |
| assertEquals(true, subOperation4 instanceof MultiReferenceOperation); |
| assertEquals(true, subOperation5 instanceof SingleReferenceOperation); |
| assertEquals(true, subOperation6 instanceof MultiReferenceOperation); |
| |
| mrSubOperation0 = (MultiReferenceOperation) subOperation0; |
| mrSubOperation1 = (SingleReferenceOperation) subOperation1; |
| mrSubOperation2 = (MultiReferenceOperation) subOperation2; |
| mrSubOperation3 = (MultiReferenceOperation) subOperation3; |
| mrSubOperation4 = (MultiReferenceOperation) subOperation4; |
| mrSubOperation5 = (SingleReferenceOperation) subOperation5; |
| mrSubOperation6 = (MultiReferenceOperation) subOperation6; |
| |
| assertEquals("initiatedUseCases", mrSubOperation0.getFeatureName()); |
| assertEquals(0, mrSubOperation0.getIndex()); |
| |
| assertEquals(oldActorId, mrSubOperation0.getModelElementId()); |
| assertEquals("initiatingActor", mrSubOperation0.getOppositeFeatureName()); |
| assertEquals(false, mrSubOperation0.isAdd()); |
| assertEquals(true, mrSubOperation0.isBidirectional()); |
| otherInvolvedModelElements0 = mrSubOperation0.getOtherInvolvedModelElements(); |
| assertEquals(1, otherInvolvedModelElements0.size()); |
| referencedModelElements0 = mrSubOperation0.getReferencedModelElements(); |
| assertEquals(1, referencedModelElements0.size()); |
| assertEquals(useCaseId, referencedModelElements0.get(0)); |
| |
| assertEquals(oldActorId, mrSubOperation1.getOldValue()); |
| assertEquals(null, mrSubOperation1.getNewValue()); |
| assertEquals("initiatingActor", mrSubOperation1.getFeatureName()); |
| assertEquals(useCaseId, mrSubOperation1.getModelElementId()); |
| assertEquals("initiatedUseCases", mrSubOperation1.getOppositeFeatureName()); |
| assertEquals(true, mrSubOperation1.isBidirectional()); |
| otherInvolvedModelElements = mrSubOperation1.getOtherInvolvedModelElements(); |
| assertEquals(1, otherInvolvedModelElements.size()); |
| assertEquals(oldActorId, otherInvolvedModelElements.iterator().next()); |
| |
| assertEquals(newActorId, mrSubOperation2.getModelElementId()); |
| assertEquals("participatedUseCases", mrSubOperation2.getFeatureName()); |
| assertEquals(false, mrSubOperation2.isAdd()); |
| assertEquals(1, mrSubOperation2.getReferencedModelElements().size()); |
| assertEquals(useCaseId, mrSubOperation2.getReferencedModelElements().get(0)); |
| |
| assertEquals(otherActorId, mrSubOperation3.getModelElementId()); |
| assertEquals("participatedUseCases", mrSubOperation3.getFeatureName()); |
| assertEquals(false, mrSubOperation3.isAdd()); |
| assertEquals(1, mrSubOperation3.getReferencedModelElements().size()); |
| assertEquals(useCaseId, mrSubOperation3.getReferencedModelElements().get(0)); |
| |
| assertEquals("participatingActors", mrSubOperation4.getFeatureName()); |
| assertEquals(0, mrSubOperation4.getIndex()); |
| assertEquals(useCaseId, mrSubOperation4.getModelElementId()); |
| assertEquals("participatedUseCases", mrSubOperation4.getOppositeFeatureName()); |
| assertEquals(false, mrSubOperation4.isAdd()); |
| assertEquals(true, mrSubOperation4.isBidirectional()); |
| otherInvolvedModelElements2 = mrSubOperation4.getOtherInvolvedModelElements(); |
| assertEquals(2, otherInvolvedModelElements2.size()); |
| referencedModelElements = mrSubOperation4.getReferencedModelElements(); |
| assertEquals(2, referencedModelElements.size()); |
| assertEquals(newActorId, referencedModelElements.get(0)); |
| assertEquals(otherActorId, referencedModelElements.get(1)); |
| |
| assertEquals(useCaseId, mrSubOperation5.getModelElementId()); |
| assertEquals("leafSection", mrSubOperation5.getFeatureName()); |
| assertEquals(sectionId, mrSubOperation5.getOldValue()); |
| assertEquals(null, mrSubOperation5.getNewValue()); |
| |
| assertEquals("modelElements", mrSubOperation6.getFeatureName()); |
| assertEquals(0, mrSubOperation6.getIndex()); |
| assertEquals(sectionId, mrSubOperation6.getModelElementId()); |
| assertEquals("leafSection", mrSubOperation6.getOppositeFeatureName()); |
| assertEquals(false, mrSubOperation6.isAdd()); |
| assertEquals(true, mrSubOperation6.isBidirectional()); |
| otherInvolvedModelElements3 = mrSubOperation6.getOtherInvolvedModelElements(); |
| assertEquals(1, otherInvolvedModelElements3.size()); |
| referencedModelElements3 = mrSubOperation6.getReferencedModelElements(); |
| assertEquals(1, referencedModelElements3.size()); |
| assertEquals(useCaseId, referencedModelElements3.get(0)); |
| } |
| |
| /** |
| * check complex element deletion tracking. |
| * |
| * @throws UnsupportedOperationException on test fail |
| * @throws UnsupportedNotificationException on test fail |
| * @throws IOException |
| */ |
| @Test |
| public void complexDeleteElementReverseTest() throws UnsupportedOperationException, |
| UnsupportedNotificationException, IOException { |
| final LeafSection section = DocumentFactory.eINSTANCE.createLeafSection(); |
| final UseCase useCase = RequirementFactory.eINSTANCE.createUseCase(); |
| final Actor oldActor = RequirementFactory.eINSTANCE.createActor(); |
| final Actor newActor = RequirementFactory.eINSTANCE.createActor(); |
| final Actor otherActor = RequirementFactory.eINSTANCE.createActor(); |
| |
| new EMFStoreCommand() { |
| |
| @Override |
| protected void doRun() { |
| getProject().addModelElement(section); |
| section.getModelElements().add(useCase); |
| section.getModelElements().add(oldActor); |
| getProject().addModelElement(newActor); |
| getProject().addModelElement(otherActor); |
| useCase.setInitiatingActor(oldActor); |
| useCase.getParticipatingActors().add(newActor); |
| useCase.getParticipatingActors().add(otherActor); |
| assertEquals(true, getProject().containsInstance(useCase)); |
| assertEquals(true, getProject().containsInstance(oldActor)); |
| assertEquals(true, getProject().containsInstance(newActor)); |
| assertEquals(true, getProject().containsInstance(otherActor)); |
| assertEquals(1, oldActor.getInitiatedUseCases().size()); |
| assertEquals(1, newActor.getParticipatedUseCases().size()); |
| assertEquals(1, otherActor.getParticipatedUseCases().size()); |
| assertEquals(useCase, oldActor.getInitiatedUseCases().get(0)); |
| assertEquals(useCase, newActor.getParticipatedUseCases().get(0)); |
| assertEquals(useCase, otherActor.getParticipatedUseCases().get(0)); |
| |
| clearOperations(); |
| } |
| }.run(false); |
| |
| ModelElementId useCaseId = getProject().getModelElementId(useCase); |
| |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| getProject().deleteModelElement(useCase); |
| } |
| }.run(false); |
| |
| assertEquals(false, getProject().containsInstance(useCase)); |
| assertEquals(0, oldActor.getInitiatedUseCases().size()); |
| assertEquals(0, newActor.getParticipatedUseCases().size()); |
| assertEquals(0, otherActor.getParticipatedUseCases().size()); |
| |
| List<AbstractOperation> operations = getProjectSpace().getOperations(); |
| |
| assertEquals(1, operations.size()); |
| AbstractOperation operation = operations.get(0); |
| |
| final AbstractOperation reverse = operation.reverse(); |
| |
| assertEquals(true, reverse instanceof CreateDeleteOperation); |
| CreateDeleteOperation createDeleteOperation = (CreateDeleteOperation) reverse; |
| assertEquals(false, createDeleteOperation.isDelete()); |
| |
| assertEquals(useCaseId, createDeleteOperation.getModelElementId()); |
| EList<ReferenceOperation> subOperations = createDeleteOperation.getSubOperations(); |
| |
| assertEquals(7, subOperations.size()); |
| AbstractOperation subOperation0 = subOperations.get(6); |
| AbstractOperation subOperation1 = subOperations.get(5); |
| AbstractOperation subOperation2 = subOperations.get(4); |
| AbstractOperation subOperation3 = subOperations.get(3); |
| AbstractOperation subOperation4 = subOperations.get(2); |
| AbstractOperation subOperation5 = subOperations.get(1); |
| AbstractOperation subOperation6 = subOperations.get(0); |
| |
| assertEquals(true, subOperation0 instanceof MultiReferenceOperation); |
| assertEquals(true, subOperation1 instanceof SingleReferenceOperation); |
| assertEquals(true, subOperation2 instanceof MultiReferenceOperation); |
| assertEquals(true, subOperation3 instanceof MultiReferenceOperation); |
| assertEquals(true, subOperation4 instanceof MultiReferenceOperation); |
| assertEquals(true, subOperation5 instanceof SingleReferenceOperation); |
| assertEquals(true, subOperation6 instanceof MultiReferenceOperation); |
| |
| MultiReferenceOperation mrSubOperation0 = (MultiReferenceOperation) subOperation0; |
| SingleReferenceOperation mrSubOperation1 = (SingleReferenceOperation) subOperation1; |
| MultiReferenceOperation mrSubOperation2 = (MultiReferenceOperation) subOperation2; |
| MultiReferenceOperation mrSubOperation3 = (MultiReferenceOperation) subOperation3; |
| MultiReferenceOperation mrSubOperation4 = (MultiReferenceOperation) subOperation4; |
| SingleReferenceOperation mrSubOperation5 = (SingleReferenceOperation) subOperation5; |
| MultiReferenceOperation mrSubOperation6 = (MultiReferenceOperation) subOperation6; |
| |
| ModelElementId oldActorId = ModelUtil.getProject(oldActor).getModelElementId(oldActor); |
| ModelElementId newActorId = ModelUtil.getProject(newActor).getModelElementId(newActor); |
| ModelElementId otherActorId = ModelUtil.getProject(otherActor).getModelElementId(otherActor); |
| ModelElementId sectionId = ModelUtil.getProject(section).getModelElementId(section); |
| |
| assertEquals("initiatedUseCases", mrSubOperation0.getFeatureName()); |
| assertEquals(0, mrSubOperation0.getIndex()); |
| assertEquals(oldActorId, mrSubOperation0.getModelElementId()); |
| assertEquals("initiatingActor", mrSubOperation0.getOppositeFeatureName()); |
| assertEquals(true, mrSubOperation0.isAdd()); |
| assertEquals(true, mrSubOperation0.isBidirectional()); |
| Set<ModelElementId> otherInvolvedModelElements0 = mrSubOperation0.getOtherInvolvedModelElements(); |
| assertEquals(1, otherInvolvedModelElements0.size()); |
| EList<ModelElementId> referencedModelElements0 = mrSubOperation0.getReferencedModelElements(); |
| assertEquals(1, referencedModelElements0.size()); |
| assertEquals(useCaseId, referencedModelElements0.get(0)); |
| |
| assertEquals(oldActorId, mrSubOperation1.getNewValue()); |
| assertEquals(null, mrSubOperation1.getOldValue()); |
| assertEquals("initiatingActor", mrSubOperation1.getFeatureName()); |
| assertEquals(useCaseId, mrSubOperation1.getModelElementId()); |
| assertEquals("initiatedUseCases", mrSubOperation1.getOppositeFeatureName()); |
| assertEquals(true, mrSubOperation1.isBidirectional()); |
| Set<ModelElementId> otherInvolvedModelElements = mrSubOperation1.getOtherInvolvedModelElements(); |
| assertEquals(1, otherInvolvedModelElements.size()); |
| assertEquals(oldActorId, otherInvolvedModelElements.iterator().next()); |
| |
| assertEquals(newActorId, mrSubOperation2.getModelElementId()); |
| assertEquals("participatedUseCases", mrSubOperation2.getFeatureName()); |
| assertEquals(true, mrSubOperation2.isAdd()); |
| assertEquals(1, mrSubOperation2.getReferencedModelElements().size()); |
| assertEquals(useCaseId, mrSubOperation2.getReferencedModelElements().get(0)); |
| |
| assertEquals(otherActorId, mrSubOperation3.getModelElementId()); |
| assertEquals("participatedUseCases", mrSubOperation3.getFeatureName()); |
| assertEquals(true, mrSubOperation3.isAdd()); |
| assertEquals(1, mrSubOperation3.getReferencedModelElements().size()); |
| assertEquals(useCaseId, mrSubOperation3.getReferencedModelElements().get(0)); |
| |
| assertEquals("participatingActors", mrSubOperation4.getFeatureName()); |
| assertEquals(0, mrSubOperation4.getIndex()); |
| assertEquals(useCaseId, mrSubOperation4.getModelElementId()); |
| assertEquals("participatedUseCases", mrSubOperation4.getOppositeFeatureName()); |
| assertEquals(true, mrSubOperation4.isAdd()); |
| assertEquals(true, mrSubOperation4.isBidirectional()); |
| Set<ModelElementId> otherInvolvedModelElements2 = mrSubOperation4.getOtherInvolvedModelElements(); |
| assertEquals(2, otherInvolvedModelElements2.size()); |
| EList<ModelElementId> referencedModelElements = mrSubOperation4.getReferencedModelElements(); |
| assertEquals(2, referencedModelElements.size()); |
| assertEquals(newActorId, referencedModelElements.get(0)); |
| assertEquals(otherActorId, referencedModelElements.get(1)); |
| |
| assertEquals(useCaseId, mrSubOperation5.getModelElementId()); |
| assertEquals("leafSection", mrSubOperation5.getFeatureName()); |
| assertEquals(sectionId, mrSubOperation5.getNewValue()); |
| assertEquals(null, mrSubOperation5.getOldValue()); |
| |
| assertEquals("modelElements", mrSubOperation6.getFeatureName()); |
| assertEquals(0, mrSubOperation6.getIndex()); |
| assertEquals(sectionId, mrSubOperation6.getModelElementId()); |
| assertEquals("leafSection", mrSubOperation6.getOppositeFeatureName()); |
| assertEquals(true, mrSubOperation6.isAdd()); |
| assertEquals(true, mrSubOperation6.isBidirectional()); |
| Set<ModelElementId> otherInvolvedModelElements3 = mrSubOperation6.getOtherInvolvedModelElements(); |
| assertEquals(1, otherInvolvedModelElements3.size()); |
| EList<ModelElementId> referencedModelElements3 = mrSubOperation6.getReferencedModelElements(); |
| assertEquals(1, referencedModelElements3.size()); |
| assertEquals(useCaseId, referencedModelElements3.get(0)); |
| |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| reverse.apply(getProject()); |
| } |
| }.run(false); |
| |
| assertEquals(true, getProject().contains(useCaseId)); |
| assertEquals(true, getProject().containsInstance(oldActor)); |
| assertEquals(true, getProject().containsInstance(newActor)); |
| assertEquals(true, getProject().containsInstance(otherActor)); |
| assertEquals(1, oldActor.getInitiatedUseCases().size()); |
| assertEquals(1, newActor.getParticipatedUseCases().size()); |
| assertEquals(1, otherActor.getParticipatedUseCases().size()); |
| EObject useCaseClone = getProject().getModelElement(useCaseId); |
| assertEquals(useCaseClone, oldActor.getInitiatedUseCases().get(0)); |
| assertEquals(useCaseClone, newActor.getParticipatedUseCases().get(0)); |
| assertEquals(useCaseClone, otherActor.getParticipatedUseCases().get(0)); |
| |
| Project loadedProject = ModelUtil.loadEObjectFromResource( |
| org.eclipse.emf.emfstore.common.model.ModelFactory.eINSTANCE.getModelPackage().getProject(), getProject() |
| .eResource().getURI(), false); |
| |
| assertTrue(ModelUtil.areEqual(loadedProject, getProject())); |
| assertEquals(true, loadedProject.contains(useCaseId)); |
| assertEquals(true, loadedProject.contains(oldActorId)); |
| assertEquals(true, loadedProject.contains(newActorId)); |
| assertEquals(true, loadedProject.contains(otherActorId)); |
| } |
| |
| /** |
| * check complex element deletion tracking. |
| * |
| * @throws UnsupportedOperationException on test fail |
| * @throws UnsupportedNotificationException on test fail |
| * @throws IOException |
| */ |
| @Test |
| public void complexCreateTest() throws UnsupportedOperationException, UnsupportedNotificationException, IOException { |
| for (int i = 0; i < 10; i++) { |
| final CompositeSection createCompositeSection = DocumentFactory.eINSTANCE.createCompositeSection(); |
| createCompositeSection.setName("Helmut" + i); |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| getProject().addModelElement(createCompositeSection); |
| LeafSection createLeafSection = DocumentFactory.eINSTANCE.createLeafSection(); |
| createCompositeSection.getSubsections().add(createLeafSection); |
| |
| for (int j = 0; j < 10; j++) { |
| ActionItem createActionItem = TaskFactory.eINSTANCE.createActionItem(); |
| createActionItem.setName("Max tu dies" + j); |
| createLeafSection.getModelElements().add(createActionItem); |
| } |
| } |
| }.run(false); |
| } |
| assertEquals(230, getProjectSpace().getOperations().size()); |
| |
| ((ProjectSpaceImpl) getProjectSpace()).saveProjectSpaceOnly(); |
| ProjectSpace loadedProjectSpace = ModelUtil.loadEObjectFromResource(ModelPackage.eINSTANCE.getProjectSpace(), |
| getProjectSpace().eResource().getURI(), false); |
| |
| assertTrue(ModelUtil.areEqual(getProjectSpace(), loadedProjectSpace)); |
| } |
| |
| /** |
| * Delete a parent with a child contained in a single reference. |
| * |
| * @throws IOException |
| */ |
| @Test |
| public void deleteWithSingleReferenceChildTest() throws IOException { |
| final Issue issue = RationaleFactory.eINSTANCE.createIssue(); |
| final Solution solution = RationaleFactory.eINSTANCE.createSolution(); |
| |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| issue.setSolution(solution); |
| getProject().addModelElement(issue); |
| |
| assertEquals(true, getProject().containsInstance(issue)); |
| assertEquals(true, getProject().containsInstance(solution)); |
| assertEquals(solution, issue.getSolution()); |
| assertEquals(issue, solution.getIssue()); |
| |
| clearOperations(); |
| } |
| }.run(false); |
| |
| ModelElementId solutionId = ModelUtil.getProject(solution).getModelElementId(solution); |
| |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| getProject().deleteModelElement(solution); |
| } |
| }.run(false); |
| |
| assertEquals(true, getProject().containsInstance(issue)); |
| assertEquals(false, getProject().containsInstance(solution)); |
| assertEquals(null, issue.getSolution()); |
| assertEquals(null, solution.getIssue()); |
| |
| List<AbstractOperation> operations = getProjectSpace().getOperations(); |
| assertEquals(1, operations.size()); |
| AbstractOperation operation = operations.get(0); |
| assertEquals(true, operation instanceof CreateDeleteOperation); |
| CreateDeleteOperation createDeleteOperation = (CreateDeleteOperation) operation; |
| assertEquals(true, createDeleteOperation.isDelete()); |
| |
| assertEquals(solutionId, createDeleteOperation.getModelElementId()); |
| |
| EList<ReferenceOperation> subOperations = createDeleteOperation.getSubOperations(); |
| assertEquals(2, subOperations.size()); |
| |
| ((ProjectSpaceImpl) getProjectSpace()).saveProjectSpaceOnly(); |
| ProjectSpace loadedProjectSpace = ModelUtil.loadEObjectFromResource(ModelPackage.eINSTANCE.getProjectSpace(), |
| getProjectSpace().eResource().getURI(), false); |
| |
| // perform asserts with loaded project space |
| assertTrue(ModelUtil.areEqual(getProjectSpace(), loadedProjectSpace)); |
| operations = loadedProjectSpace.getOperations(); |
| assertEquals(1, operations.size()); |
| operation = operations.get(0); |
| assertEquals(true, operation instanceof CreateDeleteOperation); |
| createDeleteOperation = (CreateDeleteOperation) operation; |
| assertEquals(true, createDeleteOperation.isDelete()); |
| } |
| |
| /** |
| * Test creation of element with cross references. |
| * |
| * @throws UnsupportedOperationException on test fail |
| * @throws UnsupportedNotificationException on test fail |
| */ |
| public void createWithCrossReferencesTest() throws UnsupportedOperationException, UnsupportedNotificationException { |
| |
| final UseCase useCase = RequirementFactory.eINSTANCE.createUseCase(); |
| final UseCase useCase2 = RequirementFactory.eINSTANCE.createUseCase(); |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| getProject().addModelElement(useCase2); |
| useCase.getIncludedUseCases().add(useCase2); |
| clearOperations(); |
| } |
| }.run(false); |
| |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| getProject().addModelElement(useCase); |
| assertEquals(true, getProject().containsInstance(useCase)); |
| assertEquals(true, getProject().containsInstance(useCase2)); |
| assertEquals(1, getProjectSpace().getOperations().size()); |
| assertEquals(true, getProjectSpace().getOperations().get(0) instanceof CreateDeleteOperation); |
| CreateDeleteOperation operation = (CreateDeleteOperation) getProjectSpace().getOperations().get(0); |
| assertEquals(getProject().getModelElementId(useCase), operation.getModelElementId()); |
| assertEquals(2, operation.getSubOperations().size()); |
| assertEquals(true, operation.getSubOperations().get(0) instanceof MultiReferenceOperation); |
| } |
| }.run(false); |
| |
| } |
| |
| /** |
| * Test creating an element in a non project containment. |
| * |
| * @throws IOException |
| */ |
| @Test |
| public void createInNonProjectContainmentTest() throws IOException { |
| final LeafSection section = DocumentFactory.eINSTANCE.createLeafSection(); |
| final UseCase useCase = RequirementFactory.eINSTANCE.createUseCase(); |
| new EMFStoreCommand() { |
| |
| @Override |
| protected void doRun() { |
| getProject().addModelElement(section); |
| |
| assertEquals(true, getProject().containsInstance(section)); |
| |
| clearOperations(); |
| |
| section.getModelElements().add(useCase); |
| } |
| }.run(false); |
| |
| assertEquals(true, getProject().containsInstance(useCase)); |
| assertEquals(true, getProject().containsInstance(section)); |
| assertEquals(1, section.getModelElements().size()); |
| assertEquals(section, useCase.getLeafSection()); |
| assertEquals(useCase, section.getModelElements().iterator().next()); |
| |
| List<AbstractOperation> operations = getProjectSpace().getOperations(); |
| |
| assertEquals(2, operations.size()); |
| |
| AbstractOperation operation1 = operations.get(0); |
| AbstractOperation operation2 = operations.get(1); |
| assertEquals(true, operation1 instanceof CreateDeleteOperation); |
| assertEquals(true, operation2 instanceof MultiReferenceOperation); |
| CreateDeleteOperation createOperation = (CreateDeleteOperation) operation1; |
| MultiReferenceOperation multiReferenceOperation = (MultiReferenceOperation) operation2; |
| assertEquals(false, createOperation.isDelete()); |
| |
| ModelElementId useCaseId = ModelUtil.getProject(useCase).getModelElementId(useCase); |
| ModelElementId sectionId = ModelUtil.getProject(section).getModelElementId(section); |
| |
| assertEquals(useCaseId, createOperation.getModelElementId()); |
| assertEquals(sectionId, multiReferenceOperation.getModelElementId()); |
| |
| ((ProjectSpaceImpl) getProjectSpace()).saveProjectSpaceOnly(); |
| ProjectSpace loadedProjectSpace = ModelUtil.loadEObjectFromResource(ModelPackage.eINSTANCE.getProjectSpace(), |
| getProjectSpace().eResource().getURI(), false); |
| |
| // perform asserts with loaded project space |
| assertTrue(ModelUtil.areEqual(getProjectSpace(), loadedProjectSpace)); |
| operations = loadedProjectSpace.getOperations(); |
| assertEquals(2, operations.size()); |
| |
| operation1 = operations.get(0); |
| operation2 = operations.get(1); |
| assertEquals(true, operation1 instanceof CreateDeleteOperation); |
| assertEquals(true, operation2 instanceof MultiReferenceOperation); |
| createOperation = (CreateDeleteOperation) operation1; |
| multiReferenceOperation = (MultiReferenceOperation) operation2; |
| assertEquals(false, createOperation.isDelete()); |
| |
| } |
| |
| @Test |
| public void createEAttributes() throws IOException { |
| final EClass clazz = EcoreFactory.eINSTANCE.createEClass(); |
| EStructuralFeature attribute = EcoreFactory.eINSTANCE.createEAttribute(); |
| EStructuralFeature attribute2 = EcoreFactory.eINSTANCE.createEAttribute(); |
| attribute.setName("attribute1"); |
| attribute2.setName("attribute2"); |
| clazz.getEStructuralFeatures().add(attribute); |
| clazz.getEStructuralFeatures().add(attribute2); |
| |
| assertEquals(2, clazz.eContents().size()); |
| |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| getProject().addModelElement(clazz); |
| } |
| }.run(false); |
| |
| ((ProjectSpaceImpl) getProjectSpace()).saveProjectSpaceOnly(); |
| ProjectSpace loadedProjectSpace = ModelUtil.loadEObjectFromResource(ModelPackage.eINSTANCE.getProjectSpace(), |
| getProjectSpace().eResource().getURI(), false); |
| |
| // perform asserts with loaded project space |
| assertTrue(ModelUtil.areEqual(getProjectSpace(), loadedProjectSpace)); |
| } |
| |
| @Test |
| public void testECoreUtilCopyWithMeetings() { |
| // create a meeting with composite and subsections including intra - cross references |
| CompositeMeetingSection compMeetingSection = MeetingFactory.eINSTANCE.createCompositeMeetingSection(); |
| IssueMeetingSection issueMeeting = MeetingFactory.eINSTANCE.createIssueMeetingSection(); |
| WorkItemMeetingSection workItemMeetingSecion = MeetingFactory.eINSTANCE.createWorkItemMeetingSection(); |
| compMeetingSection.getSubsections().add(issueMeeting); |
| compMeetingSection.getSubsections().add(workItemMeetingSecion); |
| final Meeting meeting = MeetingFactory.eINSTANCE.createMeeting(); |
| meeting.getSections().add(compMeetingSection); |
| meeting.setIdentifiedIssuesSection(issueMeeting); |
| meeting.setIdentifiedWorkItemsSection(workItemMeetingSecion); |
| |
| // copy meeting and check if the intra cross references were actually copied |
| Meeting copiedMeeting = (Meeting) EcoreUtil.copy(meeting); |
| assertFalse(copiedMeeting.getIdentifiedIssuesSection() == meeting.getIdentifiedIssuesSection()); |
| assertFalse(copiedMeeting.getIdentifiedWorkItemsSection() == meeting.getIdentifiedWorkItemsSection()); |
| |
| // add original element to project |
| new EMFStoreCommand() { |
| |
| @Override |
| protected void doRun() { |
| getProject().addModelElement(meeting); |
| } |
| }.run(false); |
| |
| List<AbstractOperation> operations = getProjectSpace().getOperations(); |
| assertEquals(1, operations.size()); |
| |
| AbstractOperation operation1 = operations.get(0); |
| assertTrue(operation1 instanceof CreateDeleteOperation); |
| CreateDeleteOperation createDeleteOperation = (CreateDeleteOperation) operation1; |
| assertFalse(createDeleteOperation.isDelete()); |
| |
| Meeting meetingSection = (Meeting) createDeleteOperation.getModelElement(); |
| assertFalse(meeting.getIdentifiedIssuesSection() == meetingSection.getIdentifiedIssuesSection()); |
| |
| } |
| |
| @Test |
| public void testCopyProject() { |
| final CompositeMeetingSection compMeetingSection = MeetingFactory.eINSTANCE.createCompositeMeetingSection(); |
| IssueMeetingSection issueMeeting = MeetingFactory.eINSTANCE.createIssueMeetingSection(); |
| WorkItemMeetingSection workItemMeetingSecion = MeetingFactory.eINSTANCE.createWorkItemMeetingSection(); |
| compMeetingSection.getSubsections().add(issueMeeting); |
| compMeetingSection.getSubsections().add(workItemMeetingSecion); |
| |
| new EMFStoreCommand() { |
| |
| @Override |
| protected void doRun() { |
| getProject().addModelElement(compMeetingSection); |
| } |
| }.run(false); |
| |
| Project p = ((ProjectImpl) getProject()).copy(); |
| assertNotNull(p); |
| } |
| |
| @Test |
| public void testRemoveChildFromParentWithSplittedResource() throws IOException { |
| final CompositeSection compositeSection = DocumentFactory.eINSTANCE.createCompositeSection(); |
| |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| getProject().addModelElement(compositeSection); |
| } |
| }.run(false); |
| |
| final LeafSection leafSection = DocumentFactory.eINSTANCE.createLeafSection(); |
| ResourceSet rs = getProjectSpace().eResource().getResourceSet(); |
| Resource compositeResource = compositeSection.eResource(); |
| final Resource leafResource = rs.createResource(URI.createFileURI(compositeResource.getURI().toFileString() |
| + "leaf")); |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| leafResource.getContents().add(leafSection); |
| } |
| }.run(true); |
| |
| new EMFStoreCommand() { |
| @Override |
| protected void doRun() { |
| compositeSection.getSubsections().add(leafSection); |
| } |
| }.run(false); |
| |
| assertTrue(compositeSection.eResource() != leafSection.eResource()); |
| |
| new EMFStoreCommand() { |
| |
| @Override |
| protected void doRun() { |
| getProject().deleteModelElement(compositeSection); |
| } |
| }.run(false); |
| |
| assertTrue(getProject().getModelElements().size() == 0); |
| assertTrue(leafResource.getContents().size() == 0); |
| } |
| |
| /** |
| * Test creating an element in a non project containment. |
| */ |
| // commenting out, too exotic to happen |
| /* |
| * @Test public void createTreeAndAddNonRootToProject() { WorkPackage root = |
| * TaskFactory.eINSTANCE.createWorkPackage(); WorkPackage child = TaskFactory.eINSTANCE.createWorkPackage(); |
| * WorkPackage existing = TaskFactory.eINSTANCE.createWorkPackage(); root.getContainedWorkItems().add(child); |
| * getProject().getModelElements().add(existing); child.getContainedWorkItems().add(existing); |
| * getProject().getModelElements().add(root); assertTrue(getProject().contains(child)); |
| * assertTrue(getProject().contains(root)); assertTrue(getProject().contains(existing)); assertSame(root, |
| * child.getContainingWorkpackage()); assertSame(child, existing.getContainingWorkpackage()); |
| * assertEquals(getProject().getAllModelElements().size(), 3); } |
| */ |
| } |