blob: 3f60e100e69579763e168c16007974fbfe610a4d [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2018 SAP AG and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v2.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v20.html
*
* Contributors:
* SAP AG - initial API and implementation
******************************************************************************/
package org.eclipse.ocl.examples.eventmanager.tests.filters;
import junit.textui.TestRunner;
import org.eclipse.emf.common.notify.Notification;
import org.eclipse.emf.common.util.BasicEList;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EPackage;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EcoreFactory;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.DynamicEObjectImpl;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.emf.ecore.resource.impl.ResourceImpl;
import org.eclipse.ocl.examples.eventmanager.EventFilter;
import org.eclipse.ocl.examples.eventmanager.EventManagerFactory;
import org.eclipse.ocl.examples.eventmanager.filters.ContainmentFilter;
/**
* <!-- begin-user-doc --> A test case for the model object '<em><b>Containment Filter</b></em>'. <!-- end-user-doc -->
*
*/
public class ContainmentFilterTest extends EventFilterTest {
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
*/
public static void main(String[] args) {
TestRunner.run(ContainmentFilterTest.class);
}
private DynamicEObjectImpl containedObject;
private ENotificationImpl matchingNotification;
/**
* Constructs a new Containment Filter test case with the given name. <!-- begin-user-doc --> <!-- end-user-doc -->
*
*/
public ContainmentFilterTest() {
super();
}
/**
* Returns the fixture for this Containment Filter test case. <!-- begin-user-doc --> <!-- end-user-doc -->
*
*/
@Override
protected ContainmentFilter getFixture() {
return (ContainmentFilter) fixture;
}
@SuppressWarnings("unchecked")
@Override
public void setUp() {
setFixture(EventManagerFactory.eINSTANCE.createContainmentFilter());
EReference cFeature = EcoreFactory.eINSTANCE.createEReference();
cFeature.setName("test");
cFeature.setContainment(true);
cFeature.setLowerBound(0);
cFeature.setUpperBound(-1);
EPackage p = EcoreFactory.eINSTANCE.createEPackage();
p.setName("test");
p.setNsPrefix("test");
p.setNsURI("uri");
EClass notiClass = EcoreFactory.eINSTANCE.createEClass();
p.getEClassifiers().add(notiClass);
notiClass.setName("testClass");
cFeature.setEType(notiClass);
notiClass.getEStructuralFeatures().add(cFeature);
EObject testObject = new DynamicEObjectImpl(notiClass);
containedObject = new DynamicEObjectImpl(notiClass);
((EList<EObject>) testObject.eGet(cFeature)).add(containedObject);
matchingNotification = new ENotificationImpl((InternalEObject) testObject, Notification.ADD_MANY, cFeature,
new BasicEList<EObject>(), testObject.eGet(cFeature));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @see junit.framework.TestCase#tearDown()
*/
@Override
public void tearDown() {
setFixture(null);
containedObject = null;
matchingNotification = null;
}
@Override
public void testMatchesFor__Notification() {
assertTrue(getFixture().matchesFor(matchingNotification));
}
@Override
EventFilter getFilterFor(Object f) {
return EventManagerFactory.eINSTANCE.createContainmentFilter();
}
@Override
Object getFilterCriterion1() {
return null;
}
@Override
Object getFilterCriterion2() {
return null;
}
@Override
public Notification[] giveMatchingNotifications() {
EReference r = EcoreFactory.eINSTANCE.createEReference();
r.setContainment(true);
Notification n = new ENotificationImpl(null, 0, null, null, null){
@Override
public Object getNotifier() {
return new ResourceImpl();
}
};
return new Notification[]{ new ENotificationImpl(null, 0, r, null, null),
n };
}
@Override
public Notification giveNotMatchingNotifcation() {
return new ENotificationImpl(null, 0, EcoreFactory.eINSTANCE.createEReference(), null, null);
}
@Override
public EventFilter giveTestFilter() {
return EventManagerFactory.eINSTANCE.createContainmentFilter();
}
} // ContainmentFilterTest