blob: 7a7342315d4477258ed4b27eb805563fbe2d8eab [file] [log] [blame]
/*
* Copyright (c) 2003, 2005 IBM Corporation 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:
* IBM - initial API and implementation
*
* $Id: ElementOperationsTest.java,v 1.7 2005/12/23 06:49:32 khussey Exp $
*/
package org.eclipse.uml2.internal.operation.tests;
import java.util.Date;
import java.util.Iterator;
import junit.textui.TestRunner;
import org.eclipse.emf.common.util.URI;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.resource.ResourceSet;
import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
import org.eclipse.uml2.Comment;
import org.eclipse.uml2.Element;
import org.eclipse.uml2.Model;
import org.eclipse.uml2.PackageableElement;
import org.eclipse.uml2.UML2Factory;
import org.eclipse.uml2.UML2Package;
import org.eclipse.uml2.internal.operation.ElementOperations;
import org.eclipse.uml2.util.UML2Resource;
import org.eclipse.uml2.util.UML2Switch;
/**
* A test case for the '<em><b>Element Operations</b></em>' utility.
*/
public class ElementOperationsTest
extends UML2OperationsTest {
public static void main(String[] args) {
TestRunner.run(ElementOperationsTest.class);
}
/**
* Constructs a new Element Operations test case with the given name.
*/
public ElementOperationsTest(String name) {
super(name);
}
/*
* (non-Javadoc)
*
* @see junit.framework.TestCase#setUp()
*/
protected void setUp()
throws Exception {
super.setUp();
Resource.Factory.Registry.INSTANCE.getExtensionToFactoryMap().put(
UML2Resource.FILE_EXTENSION, UML2Resource.Factory.INSTANCE);
}
/**
* Returns the element for this Element Operations test case.
*/
protected Element getElement() {
return element;
}
/**
* Tests the '
* {@link org.eclipse.uml2.internal.operation.ElementOperations#getModel() <em>Get Model</em>}'
* method.
*
* @see org.eclipse.uml2.internal.operation.ElementOperations#getModel()
*/
public void testGetModel() {
assertNull(ElementOperations.getModel(null));
final Model model = UML2Factory.eINSTANCE.createModel();
for (Iterator eAllSubClasses = getEAllSubClasses(
UML2Package.eINSTANCE.getElement()).iterator(); eAllSubClasses
.hasNext();) {
setElement((Element) UML2Factory.eINSTANCE
.create((EClass) eAllSubClasses.next()));
new UML2Switch() {
public Object caseElement(Element object) {
assertNull(ElementOperations.getModel(null));
return this;
}
public Object caseModel(Model object) {
assertSame(getElement(), ElementOperations
.getModel(getElement()));
return this;
}
public Object casePackageableElement(PackageableElement object) {
assertNull(ElementOperations.getModel(getElement()));
model.getOwnedMembers().add(getElement());
assertSame(model, ElementOperations.getModel(getElement()));
return this;
}
}.doSwitch(getElement());
}
}
/**
* Tests the '
* {@link org.eclipse.uml2.internal.operation.ElementOperations#getNearestPackage() <em>Get Nearest Package</em>}'
* method.
*
* @see org.eclipse.uml2.internal.operation.ElementOperations#getNearestPackage()
*/
public void testGetNearestPackage() {
assertNull(ElementOperations.getNearestPackage(null));
final org.eclipse.uml2.Package package_ = UML2Factory.eINSTANCE
.createPackage();
for (Iterator eAllSubClasses = getEAllSubClasses(
UML2Package.eINSTANCE.getElement()).iterator(); eAllSubClasses
.hasNext();) {
setElement((Element) UML2Factory.eINSTANCE
.create((EClass) eAllSubClasses.next()));
new UML2Switch() {
public Object caseElement(Element object) {
assertNull(ElementOperations.getNearestPackage(null));
return this;
}
public Object casePackage(org.eclipse.uml2.Package object) {
assertSame(getElement(), ElementOperations
.getNearestPackage(getElement()));
return this;
}
public Object casePackageableElement(PackageableElement object) {
assertNull(ElementOperations
.getNearestPackage(getElement()));
package_.getOwnedMembers().add(getElement());
assertSame(package_, ElementOperations
.getNearestPackage(getElement()));
return this;
}
}.doSwitch(getElement());
}
}
/**
* Tests the '
* {@link org.eclipse.uml2.internal.operation.ElementOperations#destroy(Element) <em>Destroy</em>}'
* method.
*
* @see org.eclipse.uml2.internal.operation.ElementOperations#destroy(Element)
*/
public void testDestroy() {
try {
ElementOperations.destroy(null);
fail();
} catch (IllegalArgumentException iae) {
// pass
}
final Comment comment1 = UML2Factory.eINSTANCE.createComment();
new ResourceSetImpl().createResource(
URI.createFileURI(String.valueOf(new Date().getTime()))
.appendFileExtension(UML2Resource.FILE_EXTENSION))
.getContents().add(comment1);
ResourceSet resourceSet = new ResourceSetImpl();
final Comment comment2 = UML2Factory.eINSTANCE.createComment();
resourceSet.createResource(
URI.createFileURI(String.valueOf(new Date().getTime()))
.appendFileExtension(UML2Resource.FILE_EXTENSION))
.getContents().add(comment2);
final Model model = UML2Factory.eINSTANCE.createModel();
resourceSet.createResource(
URI.createFileURI(String.valueOf(new Date().getTime()))
.appendFileExtension(UML2Resource.FILE_EXTENSION))
.getContents().add(model);
for (Iterator eAllSubClasses = getEAllSubClasses(
UML2Package.eINSTANCE.getElement()).iterator(); eAllSubClasses
.hasNext();) {
setElement((Element) UML2Factory.eINSTANCE
.create((EClass) eAllSubClasses.next()));
model.eResource().getContents().add(getElement());
assertTrue(model.eResource().getContents().contains(getElement()));
ElementOperations.destroy(getElement());
assertFalse(model.eResource().getContents().contains(getElement()));
comment1.getAnnotatedElements().add(getElement());
comment2.getAnnotatedElements().add(getElement());
new UML2Switch() {
public Object caseElement(Element object) {
assertTrue(comment1.getAnnotatedElements().contains(
getElement()));
assertTrue(comment2.getAnnotatedElements().contains(
getElement()));
ElementOperations.destroy(getElement());
assertFalse(comment1.getAnnotatedElements().contains(
getElement()));
assertFalse(comment2.getAnnotatedElements().contains(
getElement()));
return this;
}
public Object casePackageableElement(PackageableElement object) {
caseElement(object);
model.getOwnedMembers().add(getElement());
assertTrue(model.getOwnedMembers().contains(getElement()));
ElementOperations.destroy(getElement());
assertFalse(model.getOwnedMembers().contains(getElement()));
return this;
}
}.doSwitch(getElement());
}
}
}