blob: a888a8098a25ad896314c9a0f6e703d605cd069a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2011 SAP AG 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:
* 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.notify.impl.NotificationImpl;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EcoreFactory;
import org.eclipse.emf.ecore.impl.DynamicEObjectImpl;
import org.eclipse.emf.ecore.impl.ENotificationImpl;
import org.eclipse.ocl.examples.eventmanager.EventFilter;
import org.eclipse.ocl.examples.eventmanager.EventManagerFactory;
import org.eclipse.ocl.examples.eventmanager.filters.ClassFilter;
/**
* <!-- begin-user-doc --> A test case for the model object '<em><b>Class Filter</b></em>'. <!-- end-user-doc -->
*/
public class ClassFilterTest extends EventFilterTest {
private EClass cls;
private DynamicEObjectImpl inst;
private NotificationImpl noti;
private EClass superCls;
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*/
public static void main(String[] args) {
TestRunner.run(ClassFilterTest.class);
}
/**
* Constructs a new Class Filter test case with the given name. <!-- begin-user-doc --> <!-- end-user-doc -->
*/
public ClassFilterTest() {
super();
}
/**
* Returns the fixture for this Class Filter test case. <!-- begin-user-doc --> <!-- end-user-doc -->
*/
@Override
protected ClassFilter getFixture() {
return (ClassFilter) fixture;
}
public class TestNoti extends NotificationImpl {
private Object notifier;
public TestNoti(int eventType, boolean oldBooleanValue, boolean newBooleanValue, Object noti) {
super(eventType, oldBooleanValue, newBooleanValue);
notifier = noti;
}
@Override
public Object getNotifier() {
return notifier;
}
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @see junit.framework.TestCase#setUp()
*/
@Override
public void setUp() {
cls = EcoreFactory.eINSTANCE.createEClass();
cls.setName("theClass");
superCls = EcoreFactory.eINSTANCE.createEClass();
superCls.setName("super");
cls.getESuperTypes().add(superCls);
inst = new DynamicEObjectImpl(cls);
noti = new TestNoti(0, false, false, inst);
setFixture(EventManagerFactory.eINSTANCE.createClassFilter(superCls));
}
/**
* <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @see junit.framework.TestCase#tearDown()
*/
@Override
public void tearDown() {
cls = null;
inst = null;
noti = null;
setFixture(null);
}
/**
* Tests the '
* {@link org.eclipse.ocl.examples.eventmanager.filters.AbstractEventFilter#matchesFor(org.eclipse.emf.common.notify.Notification)
* <em>Matches For</em>}' operation. <!-- begin-user-doc --> <!-- end-user-doc -->
*
* @see org.eclipse.ocl.examples.eventmanager.filters.AbstractEventFilter#matchesFor(org.eclipse.emf.common.notify.Notification)
*/
public void testMatchesFor__Notification() {
setFixture(EventManagerFactory.eINSTANCE.createClassFilterIncludingSubclasses(cls));
assertTrue("Matches an Event from the given class", getFixture().matchesFor(noti));
}
public void testMatchesFor__SubclassNotification() {
setFixture(EventManagerFactory.eINSTANCE.createClassFilterIncludingSubclasses(superCls));
assertTrue("Matches an Event from the given class", getFixture().matchesFor(noti));
}
@Override
EventFilter getFilterFor(Object f) {
return EventManagerFactory.eINSTANCE.createClassFilterIncludingSubclasses((EClass) f);
}
EClass cls1 = EcoreFactory.eINSTANCE.createEClass();
@Override
Object getFilterCriterion1() {
return cls1;
}
EClass cls2 = EcoreFactory.eINSTANCE.createEClass();
@Override
Object getFilterCriterion2() {
return cls2;
}
EClass testCls = EcoreFactory.eINSTANCE.createEClass();
@Override
public Notification[] giveMatchingNotifications() {
return new Notification[]{ new ENotificationImpl(new DynamicEObjectImpl(testCls), 0, null, null, null)};
}
@Override
public Notification giveNotMatchingNotifcation() {
EClass otherCls = EcoreFactory.eINSTANCE.createEClass();
return new ENotificationImpl(new DynamicEObjectImpl(otherCls), 0, null, null, null);
}
@Override
public EventFilter giveTestFilter() {
return EventManagerFactory.eINSTANCE.createClassFilter(testCls);
}
} // ClassFilterTest