blob: 87f412d634852ca1c37eb38ae0c98223ac062259 [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 Common Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/cpl-v10.html
*
* Contributors:
* IBM - Initial API and implementation
*
* $Id: ElementItemProviderTest.java,v 1.7 2005/02/25 02:35:30 khussey Exp $
*/
package org.eclipse.uml2.provider.tests;
import java.lang.ref.PhantomReference;
import java.lang.ref.Reference;
import java.lang.ref.ReferenceQueue;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import junit.framework.TestCase;
import org.eclipse.emf.common.command.BasicCommandStack;
import org.eclipse.emf.common.command.CommandStack;
import org.eclipse.emf.common.notify.Adapter;
import org.eclipse.emf.common.notify.AdapterFactory;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.edit.domain.AdapterFactoryEditingDomain;
import org.eclipse.emf.edit.domain.EditingDomain;
//import org.eclipse.emf.edit.provider.IDisposable;
import org.eclipse.emf.edit.provider.IEditingDomainItemProvider;
import org.eclipse.uml2.Element;
import org.eclipse.uml2.UML2Package;
import org.eclipse.uml2.provider.UML2ItemProviderAdapterFactory;
/**
* <!-- begin-user-doc -->
* A test case for the '<em><b>Element</b></em>' item provider adapter.
* <!-- end-user-doc -->
* @generated
*/
public abstract class ElementItemProviderTest
extends TestCase {
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public static final String copyright = "Copyright (c) 2003, 2005 IBM Corporation and others."; //$NON-NLS-1$
/**
* The adapter factory for this Element item provider adapter test case.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private AdapterFactory adapterFactory = null;
/**
* The command stack for this Element item provider adapter test case.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private CommandStack commandStack = null;
/**
* The editing domain for this Element item provider adapter test case.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private EditingDomain editingDomain = null;
/**
* The model object for this Element item provider adapter test case.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected Element modelObject = null;
/**
* Constructs a new Element item provider adapter test case with the given
* name.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
public ElementItemProviderTest(String name) {
super(name);
}
/**
* Sets the adapter factory for this Element item provider adapter test
* case.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected void setAdapterFactory(AdapterFactory adapterFactory) {
this.adapterFactory = adapterFactory;
}
/**
* Returns the adapter factory for this Element item provider adapter test
* case.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected AdapterFactory getAdapterFactory() {
return adapterFactory;
}
/**
* Sets the command stack for this Element item provider adapter test case.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected void setCommandStack(CommandStack commandStack) {
this.commandStack = commandStack;
}
/**
* Returns the command stack for this Element item provider adapter test
* case.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected CommandStack getCommandStack() {
return commandStack;
}
/**
* Sets the editing domain for this Element item provider adapter test case.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected void setEditingDomain(EditingDomain editingDomain) {
this.editingDomain = editingDomain;
}
/**
* Returns the editing domain for this Element item provider adapter test
* case.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected EditingDomain getEditingDomain() {
return editingDomain;
}
/**
* Sets the model object for this Element item provider adapter test case.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected void setModelObject(Element modelObject) {
this.modelObject = modelObject;
}
/*
* (non-Javadoc)
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see junit.framework.TestCase#setUp()
* @generated
*/
protected void setUp()
throws Exception {
setAdapterFactory(new UML2ItemProviderAdapterFactory());
setCommandStack(new BasicCommandStack());
setEditingDomain(new AdapterFactoryEditingDomain(getAdapterFactory(),
getCommandStack()));
}
/*
* (non-Javadoc)
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @see junit.framework.TestCase#tearDown()
* @generated
*/
protected void tearDown()
throws Exception {
setAdapterFactory(null);
setCommandStack(null);
setEditingDomain(null);
setModelObject(null);
}
/**
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
protected List getEAllSubClasses(EClass eClass) {
List eAllSubClasses = new ArrayList();
for (Iterator eClassifiers = UML2Package.eINSTANCE.getEClassifiers()
.iterator(); eClassifiers.hasNext();) {
EClassifier eClassifier = (EClassifier) eClassifiers.next();
if (EClass.class.isInstance(eClassifier)
&& eClass.isSuperTypeOf((EClass) eClassifier)
&& !((EClass) eClassifier).isAbstract()) {
eAllSubClasses.add(eClassifier);
}
}
return eAllSubClasses;
}
/**
* Returns the model object for this Element item provider adapter test
* case.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
*/
private Element getModelObject() {
return modelObject;
}
public void testSetTarget() {
ReferenceQueue referenceQueue = new ReferenceQueue();
Reference reference = new PhantomReference(getModelObject(),
referenceQueue);
Adapter adapter = adapterFactory.adapt(getModelObject(),
IEditingDomainItemProvider.class);
adapter.setTarget(null);
getModelObject().eAdapters().clear();
setModelObject(null);
System.gc();
if (!reference.isEnqueued()) {
System.runFinalization();
}
assertTrue(reference.isEnqueued());
try {
reference = referenceQueue.remove();
if (null != reference) {
reference.clear();
}
} catch (InterruptedException ie) {
// do nothing
}
}
// public void testDispose() {
// ReferenceQueue referenceQueue = new ReferenceQueue();
// Reference reference = new PhantomReference(getModelObject(),
// referenceQueue);
//
// Adapter adapter = adapterFactory.adapt(getModelObject(),
// IEditingDomainItemProvider.class);
// adapter.setTarget(null);
//
// ((IDisposable) adapter).dispose();
// setModelObject(null);
//
// System.gc();
//
// if (!reference.isEnqueued()) {
// System.runFinalization();
// }
//
// assertTrue(reference.isEnqueued());
//
// try {
// reference = referenceQueue.remove();
//
// if (null != reference) {
// reference.clear();
// }
// } catch (InterruptedException ie) {
// // do nothing
// }
// }
} //ElementItemProviderTest