/******************************************************************************* | |
* Copyright (c) 2011, 2013 Formal Mind GmbH and University of Dusseldorf. | |
* 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: | |
* Michael Jastram - initial API and implementation | |
******************************************************************************/ | |
package org.eclipse.rmf.reqif10.provider; | |
import static org.junit.Assert.assertEquals; | |
import static org.junit.Assert.assertTrue; | |
import java.net.URISyntaxException; | |
import org.eclipse.emf.ecore.EObject; | |
import org.eclipse.emf.ecore.EStructuralFeature; | |
import org.eclipse.emf.edit.provider.ItemProviderAdapter; | |
import org.eclipse.rmf.reqif10.AttributeDefinition; | |
import org.eclipse.rmf.reqif10.ReqIF; | |
import org.eclipse.rmf.reqif10.ReqIF10Factory; | |
import org.eclipse.rmf.reqif10.ReqIF10Package; | |
import org.eclipse.rmf.reqif10.SpecObjectType; | |
import org.eclipse.rmf.reqif10.SpecType; | |
import org.eclipse.rmf.reqif10.pror.util.ProrUtil; | |
import org.junit.After; | |
import org.junit.Assert; | |
import org.junit.Before; | |
import org.junit.Test; | |
/** | |
* A test case for the model object '<em><b>Attribute Definition</b></em>'. | |
*/ | |
public abstract class AttributeDefinitionTest extends IdentifiableTest { | |
private ReqIF reqif; | |
private SpecType specType; | |
/** | |
* Returns the fixture for this Attribute Definition test case. | |
*/ | |
@Override | |
protected AttributeDefinition getFixture() { | |
return (AttributeDefinition)fixture; | |
} | |
@Before public void setupAttributeDefinitionTest() throws URISyntaxException { | |
reqif = getTestReqif("simple.reqif"); | |
specType = reqif.getCoreContent().getSpecTypes().get(0); | |
} | |
@After public void tearDownAttributeDefinitionTest() { | |
reqif = null; | |
specType = null; | |
} | |
/** | |
* When we add an AttributeDefinition, the SpecType must be notified. | |
*/ | |
@Test public void testSpecTypeNotificationOnAdd() { | |
ItemProviderAdapter ip = ProrUtil.getItemProvider(adapterFactory, specType); | |
ip.addListener(listener); | |
specType.getSpecAttributes().add(getFixture()); | |
Assert.assertEquals(1, notifications.size()); | |
} | |
/** | |
* When the AttributeDefinition changes, the Type must be informed. | |
* @throws URISyntaxException | |
*/ | |
@Test | |
public void testSpecTypeNotificationOnNameChange() throws URISyntaxException { | |
ReqIF reqif = getTestReqif("simple.reqif"); | |
SpecType type = reqif.getCoreContent().getSpecTypes().get(0); | |
type.getSpecAttributes().add(getFixture()); | |
getItemProvider(type).addListener(listener); | |
setViaCommand(getFixture(), ReqIF10Package.Literals.IDENTIFIABLE__LONG_NAME, "New Name"); | |
assertEquals("New Name", getFixture().getLongName()); | |
assertEquals(1, notifications.size()); | |
// Make sure the type matches. | |
assertTrue(notifications.get(0).getNotifier() instanceof SpecType); | |
} | |
/** | |
* If a value of AttributeDefinition changes, then the SpecType should be notified | |
*/ | |
@Test | |
public void testAttributeDefinitionChanges() { | |
SpecObjectType specType = ReqIF10Factory.eINSTANCE.createSpecObjectType(); | |
specType.getSpecAttributes().add(getFixture()); | |
ItemProviderAdapter ip = getItemProvider(specType); | |
ip.addListener(listener); | |
setViaCommand(getFixture(), ReqIF10Package.Literals.IDENTIFIABLE__LONG_NAME, "New Name"); | |
assertEquals(1, notifications.size()); | |
} | |
@Override | |
protected EStructuralFeature getParentFeature() { | |
return ReqIF10Package.eINSTANCE.getSpecType_SpecAttributes(); | |
} | |
@Override | |
protected EObject getParent() { | |
return ReqIF10Factory.eINSTANCE.createSpecObjectType(); | |
} | |
} //AttributeDefinitionTest |