blob: dd379f48ff51dd5919de6586f579e422cc0fde66 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008, 2013 Oracle. 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:
* Oracle - initial API and implementation
******************************************************************************/
package org.eclipse.jpt.common.utility.tests.internal;
import java.io.Serializable;
import java.util.EventListener;
import junit.framework.TestCase;
import org.eclipse.jpt.common.utility.internal.ListenerList;
import org.eclipse.jpt.common.utility.internal.iterable.IterableTools;
@SuppressWarnings("nls")
public class ListenerListTests extends TestCase {
public ListenerListTests(String name) {
super(name);
}
public void testGetListeners() throws Exception {
ListenerList<Listener> listenerList = new ListenerList<Listener>();
Listener listener1 = new LocalListener();
Listener listener2 = new LocalListener();
assertEquals(0, IterableTools.size(listenerList));
listenerList.add(listener1);
listenerList.add(listener2);
assertEquals(2, IterableTools.size(listenerList));
assertTrue(IterableTools.contains(listenerList, listener1));
assertTrue(IterableTools.contains(listenerList, listener2));
}
public void testSize() throws Exception {
ListenerList<Listener> listenerList = new ListenerList<Listener>();
Listener listener1 = new LocalListener();
Listener listener2 = new LocalListener();
assertEquals(0, listenerList.size());
listenerList.add(listener1);
listenerList.add(listener2);
assertEquals(2, listenerList.size());
}
public void testIsEmpty() throws Exception {
ListenerList<Listener> listenerList = new ListenerList<Listener>();
Listener listener1 = new LocalListener();
Listener listener2 = new LocalListener();
assertTrue(listenerList.isEmpty());
listenerList.add(listener1);
listenerList.add(listener2);
assertFalse(listenerList.isEmpty());
}
public void testAdd_null() throws Exception {
ListenerList<Listener> listenerList = new ListenerList<Listener>();
boolean exCaught = false;
try {
listenerList.add(null);
fail("invalid listener list: " + listenerList);
} catch (NullPointerException ex) {
exCaught = true;
}
assertTrue(exCaught);
}
public void testAdd_duplicate() throws Exception {
ListenerList<Listener> listenerList = new ListenerList<Listener>();
Listener listener = new LocalListener();
listenerList.add(listener);
boolean exCaught = false;
try {
listenerList.add(listener);
fail("invalid listener list: " + listenerList);
} catch (IllegalArgumentException ex) {
exCaught = true;
}
assertTrue(exCaught);
}
public void testRemove() throws Exception {
ListenerList<Listener> listenerList = new ListenerList<Listener>();
Listener listener1 = new LocalListener();
Listener listener2 = new LocalListener();
listenerList.add(listener1);
listenerList.add(listener2);
assertTrue(IterableTools.contains(listenerList, listener1));
assertTrue(IterableTools.contains(listenerList, listener2));
listenerList.remove(listener1);
assertFalse(IterableTools.contains(listenerList, listener1));
assertTrue(IterableTools.contains(listenerList, listener2));
listenerList.remove(listener2);
assertFalse(IterableTools.contains(listenerList, listener2));
}
public void testRemove_null() throws Exception {
ListenerList<Listener> listenerList = new ListenerList<Listener>();
boolean exCaught = false;
try {
listenerList.remove(null);
fail("invalid listener list: " + listenerList);
} catch (IllegalArgumentException ex) {
exCaught = true;
}
assertTrue(exCaught);
}
public void testRemove_unregistered() throws Exception {
ListenerList<Listener> listenerList = new ListenerList<Listener>();
Listener listener = new LocalListener();
listenerList.add(listener);
listenerList.remove(listener);
boolean exCaught = false;
try {
listenerList.remove(listener);
fail("invalid listener list: " + listenerList);
} catch (IllegalArgumentException ex) {
exCaught = true;
}
assertTrue(exCaught);
}
public void testClear() throws Exception {
ListenerList<Listener> listenerList = new ListenerList<Listener>();
Listener listener1 = new LocalListener();
Listener listener2 = new LocalListener();
listenerList.add(listener1);
listenerList.add(listener2);
assertTrue(IterableTools.contains(listenerList, listener1));
assertTrue(IterableTools.contains(listenerList, listener2));
listenerList.clear();
assertFalse(IterableTools.contains(listenerList, listener1));
assertFalse(IterableTools.contains(listenerList, listener2));
}
interface Listener extends EventListener {
void somethingHappened();
}
static class LocalListener implements Listener, Serializable {
private static final long serialVersionUID = 1L;
public void somethingHappened() {
// do nothing
}
}
static class NonSerializableListener implements Listener {
public void somethingHappened() {
// do nothing
}
}
}