| /******************************************************************************* |
| * 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 org.eclipse.emf.common.notify.Notification; |
| import org.eclipse.ocl.examples.eventmanager.EventFilter; |
| import org.eclipse.ocl.examples.eventmanager.filters.AbstractEventFilter; |
| import org.eclipse.ocl.examples.eventmanager.tests.util.BaseTest; |
| import org.junit.Test; |
| |
| |
| /** |
| * <!-- begin-user-doc --> A test case for the model object '<em><b>Event Filter</b></em>'. <!-- end-user-doc --> |
| * <p> |
| * The following operations are tested: |
| * <ul> |
| * <li>{@link AbstractEventFilter#matchesFor(Notification) |
| * <em>Matches For</em>}</li> |
| * <li>{@link AbstractEventFilter#setNegated(boolean) |
| * <em>negation</em>}</li> |
| * <li>{@link AbstractEventFilter#equals(Object) |
| * <em>equals</em>}</li> |
| * <li>{@link AbstractEventFilter#hashCode() |
| * <em>hashCode</em>}</li> |
| * </ul> |
| * </p> |
| * |
| */ |
| public abstract class EventFilterTest extends BaseTest { |
| /** |
| * The fixture for this Event Filter test case. <!-- begin-user-doc --> <!-- end-user-doc --> |
| * |
| */ |
| protected EventFilter fixture = null; |
| /** |
| * Sets the fixture for this Event Filter test case. <!-- begin-user-doc --> <!-- end-user-doc --> |
| * |
| */ |
| protected void setFixture(EventFilter fixture) { |
| this.fixture = fixture; |
| } |
| |
| /** |
| * Returns the fixture for this Event Filter test case. <!-- begin-user-doc --> <!-- end-user-doc --> |
| * |
| */ |
| protected EventFilter getFixture() { |
| return fixture; |
| } |
| |
| /** |
| * 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) |
| */ |
| abstract public void testMatchesFor__Notification(); |
| |
| @Test |
| public void testClone() { |
| EventFilter f = getFixture(); |
| EventFilter c = f.clone(); |
| |
| assertTrue("Clone not equals source", c.equals(f)); |
| assertTrue("Clone has not same hashkey", c.hashCode() == f.hashCode()); |
| |
| } |
| /** |
| * Helper method to test the equals/hashcode methods |
| * Creates a filter object dependent on the incoming object |
| * @param f influence the filter creation |
| * @return new FIlter |
| */ |
| abstract EventFilter getFilterFor(Object f); |
| |
| /** |
| * Gives one object which create a filter by using {@link #getFilterFor(Object)} |
| * @return an object |
| */ |
| abstract Object getFilterCriterion1(); |
| |
| /** |
| * Gives a object which creates if applicable a different filter to {@link #getFilterCriterion2()} |
| * @return an object |
| */ |
| abstract Object getFilterCriterion2(); |
| /** |
| * Simple test for the hashCode / equals contract |
| */ |
| public void testSimpleForEqualsAndHashCode() { |
| EventFilter f1 = getFilterFor(getFilterCriterion1()); |
| EventFilter f2 = getFilterFor(getFilterCriterion1()); |
| EventFilter f3 = getFilterFor(getFilterCriterion2()); |
| assertTrue(f1.equals(f1)); |
| assertTrue(f1.equals(f2)); |
| if (getFilterCriterion1()!=getFilterCriterion2()) { |
| assertFalse(f1.equals(f3)); |
| assertFalse(f1.hashCode() == f3.hashCode()); |
| } |
| assertFalse(f1.equals(null)); |
| assertTrue(f1.hashCode() == f2.hashCode()); |
| } |
| /** |
| * Simple test for the hashCode / equals contract with negated filters |
| */ |
| public void testNegatedForEqualsAndHashCode(){ |
| EventFilter f1 = getFilterFor(getFilterCriterion1()); |
| EventFilter f4 = getFilterFor(getFilterCriterion1()); |
| ((AbstractEventFilter)f4).setNegated(true); |
| assertFalse(f1.equals(f4)); |
| assertFalse(f1.hashCode() == f4.hashCode()); |
| } |
| abstract public EventFilter giveTestFilter(); |
| abstract public Notification[] giveMatchingNotifications(); |
| abstract public Notification giveNotMatchingNotifcation(); |
| |
| } // EventFilterTest |