| /******************************************************************************* |
| * Copyright (c) 2007, 2010 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.utility.tests.internal.model; |
| |
| import java.io.IOException; |
| import java.io.ObjectInputStream; |
| import java.io.ObjectOutputStream; |
| import java.io.Serializable; |
| import java.util.ArrayList; |
| import java.util.Arrays; |
| import java.util.Collection; |
| import java.util.Collections; |
| import java.util.EventListener; |
| import java.util.HashSet; |
| import java.util.List; |
| |
| import junit.framework.TestCase; |
| |
| import org.eclipse.jpt.utility.internal.ArrayTools; |
| import org.eclipse.jpt.utility.internal.ReflectionTools; |
| import org.eclipse.jpt.utility.internal.CollectionTools; |
| import org.eclipse.jpt.utility.internal.ListenerList; |
| import org.eclipse.jpt.utility.internal.Tools; |
| import org.eclipse.jpt.utility.internal.model.AbstractModel; |
| import org.eclipse.jpt.utility.internal.model.ChangeSupport; |
| import org.eclipse.jpt.utility.model.event.CollectionAddEvent; |
| import org.eclipse.jpt.utility.model.event.CollectionChangeEvent; |
| import org.eclipse.jpt.utility.model.event.CollectionClearEvent; |
| import org.eclipse.jpt.utility.model.event.CollectionEvent; |
| import org.eclipse.jpt.utility.model.event.CollectionRemoveEvent; |
| import org.eclipse.jpt.utility.model.event.ListAddEvent; |
| import org.eclipse.jpt.utility.model.event.ListChangeEvent; |
| import org.eclipse.jpt.utility.model.event.ListClearEvent; |
| import org.eclipse.jpt.utility.model.event.ListEvent; |
| import org.eclipse.jpt.utility.model.event.ListMoveEvent; |
| import org.eclipse.jpt.utility.model.event.ListRemoveEvent; |
| import org.eclipse.jpt.utility.model.event.ListReplaceEvent; |
| import org.eclipse.jpt.utility.model.event.PropertyChangeEvent; |
| import org.eclipse.jpt.utility.model.event.StateChangeEvent; |
| import org.eclipse.jpt.utility.model.event.TreeAddEvent; |
| import org.eclipse.jpt.utility.model.event.TreeChangeEvent; |
| import org.eclipse.jpt.utility.model.event.TreeClearEvent; |
| import org.eclipse.jpt.utility.model.event.TreeEvent; |
| import org.eclipse.jpt.utility.model.event.TreeRemoveEvent; |
| import org.eclipse.jpt.utility.model.listener.ChangeAdapter; |
| import org.eclipse.jpt.utility.model.listener.ChangeListener; |
| import org.eclipse.jpt.utility.model.listener.CollectionChangeAdapter; |
| import org.eclipse.jpt.utility.model.listener.ListChangeAdapter; |
| import org.eclipse.jpt.utility.model.listener.ListChangeListener; |
| import org.eclipse.jpt.utility.model.listener.PropertyChangeAdapter; |
| import org.eclipse.jpt.utility.model.listener.StateChangeAdapter; |
| import org.eclipse.jpt.utility.model.listener.StateChangeListener; |
| import org.eclipse.jpt.utility.model.listener.TreeChangeAdapter; |
| import org.eclipse.jpt.utility.tests.internal.TestTools; |
| |
| @SuppressWarnings("nls") |
| public class ChangeSupportTests |
| extends TestCase |
| { |
| TestModel testModel; |
| static final String TEST_TO_STRING = "this is a test"; |
| |
| ChangeListener changeListener = new Adapter(); |
| |
| StateChangeEvent stateChangeEvent; |
| boolean stateChangedCalled = false; |
| |
| PropertyChangeEvent propertyChangeEvent; |
| boolean propertyChangeCalled = false; |
| static final String PROPERTY_NAME = "propertyName"; |
| static final Object OLD_OBJECT_VALUE = new Object(); |
| static final Object NEW_OBJECT_VALUE = new Object(); |
| static final Integer OLD_INT_VALUE = new Integer(27); |
| static final Boolean OLD_BOOLEAN_VALUE = Boolean.TRUE; |
| static final Integer NEW_INT_VALUE = new Integer(42); |
| static final Boolean NEW_BOOLEAN_VALUE = Boolean.FALSE; |
| |
| CollectionEvent collectionEvent; |
| boolean itemsAddedCollectionCalled = false; |
| boolean itemsRemovedCollectionCalled = false; |
| boolean collectionChangedCalled = false; |
| boolean collectionClearedCalled = false; |
| static final String COLLECTION_NAME = "collectionName"; |
| static final Object ADDED_OBJECT_VALUE = new Object(); |
| static final Object ADDED_OBJECT_VALUE_2 = new Object(); |
| static final Object REMOVED_OBJECT_VALUE = new Object(); |
| static final int TARGET_INDEX = 7; |
| static final int SOURCE_INDEX = 22; |
| |
| ListEvent listEvent; |
| boolean itemsAddedListCalled = false; |
| boolean itemsRemovedListCalled = false; |
| boolean itemsReplacedListCalled = false; |
| boolean itemsMovedListCalled = false; |
| boolean listChangedCalled = false; |
| boolean listClearedCalled = false; |
| static final String LIST_NAME = "listName"; |
| static final int ADD_INDEX = 3; |
| static final int REMOVE_INDEX = 5; |
| static final int REPLACE_INDEX = 2; |
| |
| TreeEvent treeEvent; |
| boolean nodeAddedCalled = false; |
| boolean nodeRemovedCalled = false; |
| boolean treeChangedCalled = false; |
| boolean treeClearedCalled = false; |
| static final String TREE_NAME = "treeName"; |
| static final List<Object> OBJECT_PATH = Arrays.asList(new Object[] {new Object(), new Object(), new String()}); |
| |
| |
| public ChangeSupportTests(String name) { |
| super(name); |
| } |
| |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| this.testModel = new TestModel(); |
| } |
| |
| @Override |
| protected void tearDown() throws Exception { |
| TestTools.clear(this); |
| super.tearDown(); |
| } |
| |
| |
| // ********** general tests ********** |
| |
| public void testNullSource() { |
| boolean exCaught = false; |
| try { |
| ChangeSupport cs = new ChangeSupport(null); |
| fail("bogus change support: " + cs); |
| } catch (NullPointerException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| } |
| |
| // ********** state change tests ********** |
| |
| public void testFireStateChange() { |
| this.stateChangeEvent = null; |
| this.stateChangedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireStateChange(); |
| assertNotNull(this.stateChangeEvent); |
| assertEquals(this.testModel, this.stateChangeEvent.getSource()); |
| assertTrue(this.stateChangedCalled); |
| } |
| |
| public void testHasAnyStateChangeListeners() { |
| assertTrue(this.testModel.hasNoStateChangeListeners()); |
| this.testModel.addChangeListener(this.changeListener); |
| assertTrue(this.testModel.hasAnyStateChangeListeners()); |
| this.testModel.removeChangeListener(this.changeListener); |
| assertTrue(this.testModel.hasNoStateChangeListeners()); |
| } |
| |
| public void testHasAnyStateChangeListenersDuplicate() { |
| assertTrue(this.testModel.hasNoStateChangeListeners()); |
| this.testModel.addChangeListener(this.changeListener); |
| boolean exCaught = false; |
| try { |
| this.testModel.addChangeListener(this.changeListener); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| assertTrue(this.testModel.hasAnyStateChangeListeners()); |
| this.testModel.removeChangeListener(this.changeListener); |
| assertTrue(this.testModel.hasNoStateChangeListeners()); |
| |
| exCaught = false; |
| try { |
| this.testModel.removeChangeListener(this.changeListener); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(this.testModel.hasNoStateChangeListeners()); |
| } |
| |
| public void testAddNullStateListener() { |
| boolean exCaught = false; |
| try { |
| this.testModel.addStateChangeListener(null); |
| } catch (NullPointerException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| } |
| |
| public void testRemoveBogusStateListener() { |
| boolean exCaught = false; |
| try { |
| this.testModel.removeChangeListener(this.changeListener); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| |
| this.testModel.addPropertyChangeListener("foo", this.changeListener); |
| exCaught = false; |
| try { |
| this.testModel.removeChangeListener(this.changeListener); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| |
| this.testModel.addChangeListener(this.changeListener); |
| exCaught = false; |
| try { |
| this.testModel.removeStateChangeListener(new Adapter()); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| |
| exCaught = false; |
| try { |
| this.testModel.removeStateChangeListener(new StateChangeAdapter()); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| } |
| |
| |
| // ********** property change tests ********** |
| |
| public void testFirePropertyChangedEvent() { |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedEvent(); |
| this.verifyPropertyChangeEvent(OLD_OBJECT_VALUE, NEW_OBJECT_VALUE); |
| assertTrue(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedEvent(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addPropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedEvent(); |
| this.verifyPropertyChangeEvent(OLD_OBJECT_VALUE, NEW_OBJECT_VALUE); |
| assertTrue(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removePropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedEvent(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| } |
| |
| public void testFirePropertyChangedEventNoChange() { |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedEventNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedEventNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addPropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedEventNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removePropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedEventNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| } |
| |
| public void testFirePropertyChangedObjectObject() { |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedObjectObject(); |
| this.verifyPropertyChangeEvent(OLD_OBJECT_VALUE, NEW_OBJECT_VALUE); |
| assertTrue(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedObjectObject(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addPropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedObjectObject(); |
| this.verifyPropertyChangeEvent(OLD_OBJECT_VALUE, NEW_OBJECT_VALUE); |
| assertTrue(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removePropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedObjectObject(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| } |
| |
| public void testFirePropertyChangedObjectObjectNoChange() { |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedObjectObjectNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedObjectObjectNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addPropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedObjectObjectNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removePropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedObjectObjectNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| } |
| |
| public void testFirePropertyChangedObject() { |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedObject(); |
| this.verifyPropertyChangeEvent(null, NEW_OBJECT_VALUE); |
| assertTrue(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedObject(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addPropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedObject(); |
| this.verifyPropertyChangeEvent(null, NEW_OBJECT_VALUE); |
| assertTrue(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removePropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedObject(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| } |
| |
| public void testFirePropertyChangedObjectNoChange() { |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedObjectNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedObjectNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addPropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedObjectNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removePropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedObjectNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| } |
| |
| public void testFirePropertyChangedIntInt() { |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedIntInt(); |
| this.verifyPropertyChangeEvent(OLD_INT_VALUE, NEW_INT_VALUE); |
| assertTrue(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedIntInt(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addPropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedIntInt(); |
| this.verifyPropertyChangeEvent(OLD_INT_VALUE, NEW_INT_VALUE); |
| assertTrue(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removePropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedIntInt(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| } |
| |
| public void testFirePropertyChangedIntIntNoChange() { |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedIntIntNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedIntIntNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addPropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedIntIntNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removePropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedIntIntNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| } |
| |
| public void testFirePropertyChangedBooleanBoolean() { |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedBooleanBoolean(); |
| this.verifyPropertyChangeEvent(OLD_BOOLEAN_VALUE, NEW_BOOLEAN_VALUE); |
| assertTrue(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedBooleanBoolean(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addPropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedBooleanBoolean(); |
| this.verifyPropertyChangeEvent(OLD_BOOLEAN_VALUE, NEW_BOOLEAN_VALUE); |
| assertTrue(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removePropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedBooleanBoolean(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| } |
| |
| public void testFirePropertyChangedBooleanBooleanNoChange() { |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedBooleanBooleanNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFirePropertyChangedBooleanBooleanNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.addPropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedBooleanBooleanNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.removePropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| this.testModel.testFirePropertyChangedBooleanBooleanNoChange(); |
| assertNull(this.propertyChangeEvent); |
| assertFalse(this.propertyChangeCalled); |
| } |
| |
| public void testHasAnyPropertyChangeListeners() { |
| assertTrue(this.testModel.hasNoPropertyChangeListeners(PROPERTY_NAME)); |
| this.testModel.addChangeListener(this.changeListener); |
| assertTrue(this.testModel.hasAnyPropertyChangeListeners(PROPERTY_NAME)); |
| this.testModel.removeChangeListener(this.changeListener); |
| assertTrue(this.testModel.hasNoPropertyChangeListeners(PROPERTY_NAME)); |
| |
| assertTrue(this.testModel.hasNoPropertyChangeListeners(PROPERTY_NAME)); |
| this.testModel.addPropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| assertTrue(this.testModel.hasAnyPropertyChangeListeners(PROPERTY_NAME)); |
| this.testModel.removePropertyChangeListener(PROPERTY_NAME, this.changeListener); |
| assertTrue(this.testModel.hasNoPropertyChangeListeners(PROPERTY_NAME)); |
| } |
| |
| public void testAddNullPropertyListener() { |
| boolean exCaught = false; |
| try { |
| this.testModel.addChangeListener(null); |
| } catch (NullPointerException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| } |
| |
| public void testAddNullPropertyListenerName() { |
| boolean exCaught = false; |
| try { |
| this.testModel.addPropertyChangeListener("foo", null); |
| } catch (NullPointerException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| } |
| |
| public void testRemoveBogusPropertyListener() { |
| boolean exCaught = false; |
| try { |
| this.testModel.removePropertyChangeListener("foo", new PropertyChangeAdapter()); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| |
| this.testModel.addCollectionChangeListener("foo", this.changeListener); |
| exCaught = false; |
| try { |
| this.testModel.removePropertyChangeListener("foo", this.changeListener); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| |
| this.testModel.addPropertyChangeListener("foo", this.changeListener); |
| exCaught = false; |
| try { |
| this.testModel.removePropertyChangeListener("foo", new PropertyChangeAdapter()); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| |
| exCaught = false; |
| try { |
| this.testModel.removePropertyChangeListener("foo", new PropertyChangeAdapter()); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| } |
| |
| private void verifyPropertyChangeEvent(Object oldValue, Object newValue) { |
| this.verifyPropertyChangeEvent(this.testModel, oldValue, newValue); |
| } |
| |
| private void verifyPropertyChangeEvent(Object source, Object oldValue, Object newValue) { |
| assertNotNull(this.propertyChangeEvent); |
| assertEquals(source, this.propertyChangeEvent.getSource()); |
| assertEquals(PROPERTY_NAME, this.propertyChangeEvent.getPropertyName()); |
| assertEquals(oldValue, this.propertyChangeEvent.getOldValue()); |
| assertEquals(newValue, this.propertyChangeEvent.getNewValue()); |
| } |
| |
| |
| // ********** collection change tests ********** |
| |
| public void testFireItemsAddedCollectionEvent() { |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsAddedCollectionEvent(); |
| this.verifyCollectionEvent(ADDED_OBJECT_VALUE); |
| assertTrue(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsAddedCollectionEvent(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemsAddedCollectionEvent(); |
| this.verifyCollectionEvent(ADDED_OBJECT_VALUE); |
| assertTrue(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemsAddedCollectionEvent(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| } |
| |
| public void testFireItemsAddedCollectionEventNoChange() { |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsAddedCollectionEventNoChange(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsAddedCollectionEventNoChange(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemsAddedCollectionEventNoChange(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemsAddedCollectionEventNoChange(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| } |
| |
| public void testFireItemsAddedCollection() { |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsAddedCollection(); |
| this.verifyCollectionEvent(ADDED_OBJECT_VALUE); |
| assertTrue(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsAddedCollection(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemsAddedCollection(); |
| this.verifyCollectionEvent(ADDED_OBJECT_VALUE); |
| assertTrue(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemsAddedCollection(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| } |
| |
| public void testFireItemsAddedCollectionNoChange() { |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsAddedCollectionNoChange(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsAddedCollectionNoChange(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemsAddedCollectionNoChange(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemsAddedCollectionNoChange(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| } |
| |
| public void testFireItemAddedCollection() { |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemAddedCollection(); |
| this.verifyCollectionEvent(ADDED_OBJECT_VALUE); |
| assertTrue(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemAddedCollection(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemAddedCollection(); |
| this.verifyCollectionEvent(ADDED_OBJECT_VALUE); |
| assertTrue(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemAddedCollection(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| } |
| |
| public void testFireItemsRemovedCollectionEvent() { |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsRemovedCollectionEvent(); |
| this.verifyCollectionEvent(REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsRemovedCollectionEvent(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemsRemovedCollectionEvent(); |
| this.verifyCollectionEvent(REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemsRemovedCollectionEvent(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| } |
| |
| public void testFireItemsRemovedCollectionEventNoChange() { |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsRemovedCollectionEventNoChange(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsRemovedCollectionEventNoChange(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemsRemovedCollectionEventNoChange(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemsRemovedCollectionEventNoChange(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| } |
| |
| public void testFireItemsRemovedCollection() { |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsRemovedCollection(); |
| this.verifyCollectionEvent(REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsRemovedCollection(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemsRemovedCollection(); |
| this.verifyCollectionEvent(REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemsRemovedCollection(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| } |
| |
| public void testFireItemsRemovedCollectionNoChange() { |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsRemovedCollectionNoChange(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsRemovedCollectionNoChange(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemsRemovedCollectionNoChange(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemsRemovedCollectionNoChange(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| } |
| |
| public void testFireItemRemovedCollection() { |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemRemovedCollection(); |
| this.verifyCollectionEvent(REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemRemovedCollection(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemRemovedCollection(); |
| this.verifyCollectionEvent(REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireItemRemovedCollection(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| } |
| |
| public void testFireCollectionCleared() { |
| this.collectionEvent = null; |
| this.collectionClearedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireCollectionCleared(); |
| this.verifyCollectionEvent(null); |
| assertTrue(this.collectionClearedCalled); |
| |
| this.collectionEvent = null; |
| this.collectionClearedCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireCollectionCleared(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.collectionClearedCalled); |
| |
| this.collectionEvent = null; |
| this.collectionClearedCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireCollectionCleared(); |
| this.verifyCollectionEvent(null); |
| assertTrue(this.collectionClearedCalled); |
| |
| this.collectionEvent = null; |
| this.collectionClearedCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireCollectionCleared(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.collectionClearedCalled); |
| } |
| |
| public void testFireCollectionChangedEvent() { |
| this.collectionEvent = null; |
| this.collectionChangedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireCollectionChangedEvent(); |
| this.verifyCollectionEvent(null); |
| assertTrue(this.collectionChangedCalled); |
| |
| this.collectionEvent = null; |
| this.collectionChangedCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireCollectionChangedEvent(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.collectionChangedCalled); |
| |
| this.collectionEvent = null; |
| this.collectionChangedCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireCollectionChangedEvent(); |
| this.verifyCollectionEvent(null); |
| assertTrue(this.collectionChangedCalled); |
| |
| this.collectionEvent = null; |
| this.collectionChangedCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireCollectionChangedEvent(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.collectionChangedCalled); |
| } |
| |
| public void testFireCollectionChanged() { |
| this.collectionEvent = null; |
| this.collectionChangedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireCollectionChanged(); |
| this.verifyCollectionEvent(null); |
| assertTrue(this.collectionChangedCalled); |
| |
| this.collectionEvent = null; |
| this.collectionChangedCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireCollectionChanged(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.collectionChangedCalled); |
| |
| this.collectionEvent = null; |
| this.collectionChangedCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireCollectionChanged(); |
| this.verifyCollectionEvent(null); |
| assertTrue(this.collectionChangedCalled); |
| |
| this.collectionEvent = null; |
| this.collectionChangedCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| this.testModel.testFireCollectionChanged(); |
| assertNull(this.collectionEvent); |
| assertFalse(this.collectionChangedCalled); |
| } |
| |
| public void testAddItemToCollection() { |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| assertTrue(this.testModel.testAddItemToCollection()); |
| this.verifyCollectionEvent(ADDED_OBJECT_VALUE); |
| assertTrue(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| assertTrue(this.testModel.testAddItemToCollection()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertTrue(this.testModel.testAddItemToCollection()); |
| this.verifyCollectionEvent(ADDED_OBJECT_VALUE); |
| assertTrue(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertTrue(this.testModel.testAddItemToCollection()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| } |
| |
| public void testAddItemToCollectionNoChange() { |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| assertFalse(this.testModel.testAddItemToCollectionNoChange()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| assertFalse(this.testModel.testAddItemToCollectionNoChange()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertFalse(this.testModel.testAddItemToCollectionNoChange()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertFalse(this.testModel.testAddItemToCollectionNoChange()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| } |
| |
| public void testAddItemsToCollection() { |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| assertTrue(this.testModel.testAddItemsToCollection()); |
| this.verifyCollectionEvent(ADDED_OBJECT_VALUE); |
| assertTrue(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| assertTrue(this.testModel.testAddItemsToCollection()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertTrue(this.testModel.testAddItemsToCollection()); |
| this.verifyCollectionEvent(ADDED_OBJECT_VALUE); |
| assertTrue(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertTrue(this.testModel.testAddItemsToCollection()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| } |
| |
| public void testAddItemsToCollectionNoChange() { |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| assertFalse(this.testModel.testAddItemsToCollectionNoChange()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| assertFalse(this.testModel.testAddItemsToCollectionNoChange()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertFalse(this.testModel.testAddItemsToCollectionNoChange()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertFalse(this.testModel.testAddItemsToCollectionNoChange()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| } |
| |
| public void testAddItemsToCollectionMixed() { |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| assertTrue(this.testModel.testAddItemsToCollectionMixed()); |
| this.verifyCollectionEvent(ADDED_OBJECT_VALUE_2); |
| assertTrue(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| assertTrue(this.testModel.testAddItemsToCollectionMixed()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertTrue(this.testModel.testAddItemsToCollectionMixed()); |
| this.verifyCollectionEvent(ADDED_OBJECT_VALUE_2); |
| assertTrue(this.itemsAddedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsAddedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertTrue(this.testModel.testAddItemsToCollectionMixed()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsAddedCollectionCalled); |
| } |
| |
| public void testRemoveItemFromCollection() { |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| assertTrue(this.testModel.testRemoveItemFromCollection()); |
| this.verifyCollectionEvent(REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| assertTrue(this.testModel.testRemoveItemFromCollection()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertTrue(this.testModel.testRemoveItemFromCollection()); |
| this.verifyCollectionEvent(REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertTrue(this.testModel.testRemoveItemFromCollection()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| } |
| |
| public void testRemoveItemFromCollectionNoChange() { |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| assertFalse(this.testModel.testRemoveItemFromCollectionNoChange()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| assertFalse(this.testModel.testRemoveItemFromCollectionNoChange()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertFalse(this.testModel.testRemoveItemFromCollectionNoChange()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertFalse(this.testModel.testRemoveItemFromCollectionNoChange()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| } |
| |
| public void testRemoveItemsFromCollection() { |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| assertTrue(this.testModel.testRemoveItemsFromCollection()); |
| this.verifyCollectionChangeEvent2(REMOVED_OBJECT_VALUE, "foo", "bar"); |
| assertTrue(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| assertTrue(this.testModel.testRemoveItemsFromCollection()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertTrue(this.testModel.testRemoveItemsFromCollection()); |
| this.verifyCollectionChangeEvent2(REMOVED_OBJECT_VALUE, "foo", "bar"); |
| assertTrue(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertTrue(this.testModel.testRemoveItemsFromCollection()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| } |
| |
| public void testRemoveItemsFromCollectionNoChange1() { |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| assertFalse(this.testModel.testRemoveItemsFromCollectionNoChange1()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| assertFalse(this.testModel.testRemoveItemsFromCollectionNoChange1()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertFalse(this.testModel.testRemoveItemsFromCollectionNoChange1()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertFalse(this.testModel.testRemoveItemsFromCollectionNoChange1()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| } |
| |
| public void testRemoveItemsFromCollectionNoChange2() { |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| assertFalse(this.testModel.testRemoveItemsFromCollectionNoChange2()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| assertFalse(this.testModel.testRemoveItemsFromCollectionNoChange2()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertFalse(this.testModel.testRemoveItemsFromCollectionNoChange2()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertFalse(this.testModel.testRemoveItemsFromCollectionNoChange2()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| } |
| |
| public void testRemoveItemsFromCollectionNoChange3() { |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| assertFalse(this.testModel.testRemoveItemsFromCollectionNoChange3()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| assertFalse(this.testModel.testRemoveItemsFromCollectionNoChange3()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertFalse(this.testModel.testRemoveItemsFromCollectionNoChange3()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertFalse(this.testModel.testRemoveItemsFromCollectionNoChange3()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| } |
| |
| public void testRetainItemsInCollection1() { |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| assertTrue(this.testModel.testRetainItemsInCollection1()); |
| this.verifyCollectionEvent(REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| assertTrue(this.testModel.testRetainItemsInCollection1()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertTrue(this.testModel.testRetainItemsInCollection1()); |
| this.verifyCollectionEvent(REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertTrue(this.testModel.testRetainItemsInCollection1()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| } |
| |
| // collection cleared... |
| public void testRetainItemsInCollection2() { |
| this.collectionEvent = null; |
| this.collectionClearedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| assertTrue(this.testModel.testRetainItemsInCollection2()); |
| this.verifyCollectionEvent(null); |
| assertTrue(this.collectionClearedCalled); |
| |
| this.collectionEvent = null; |
| this.collectionClearedCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| assertTrue(this.testModel.testRetainItemsInCollection2()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.collectionClearedCalled); |
| |
| this.collectionEvent = null; |
| this.collectionClearedCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertTrue(this.testModel.testRetainItemsInCollection2()); |
| this.verifyCollectionEvent(null); |
| assertTrue(this.collectionClearedCalled); |
| |
| this.collectionEvent = null; |
| this.collectionClearedCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertTrue(this.testModel.testRetainItemsInCollection2()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.collectionClearedCalled); |
| } |
| |
| public void testRetainItemsInCollectionNoChange1() { |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| assertFalse(this.testModel.testRetainItemsInCollectionNoChange1()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| assertFalse(this.testModel.testRetainItemsInCollectionNoChange1()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertFalse(this.testModel.testRetainItemsInCollectionNoChange1()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertFalse(this.testModel.testRetainItemsInCollectionNoChange1()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| } |
| |
| public void testRetainItemsInCollectionNoChange2() { |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| assertFalse(this.testModel.testRetainItemsInCollectionNoChange2()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| assertFalse(this.testModel.testRetainItemsInCollectionNoChange2()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertFalse(this.testModel.testRetainItemsInCollectionNoChange2()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| |
| this.collectionEvent = null; |
| this.itemsRemovedCollectionCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertFalse(this.testModel.testRetainItemsInCollectionNoChange2()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.itemsRemovedCollectionCalled); |
| } |
| |
| public void testClearCollection() { |
| this.collectionEvent = null; |
| this.collectionClearedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| assertTrue(this.testModel.testClearCollection()); |
| this.verifyCollectionEvent(null); |
| assertTrue(this.collectionClearedCalled); |
| |
| this.collectionEvent = null; |
| this.collectionClearedCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| assertTrue(this.testModel.testClearCollection()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.collectionClearedCalled); |
| |
| this.collectionEvent = null; |
| this.collectionClearedCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertTrue(this.testModel.testClearCollection()); |
| this.verifyCollectionEvent(null); |
| assertTrue(this.collectionClearedCalled); |
| |
| this.collectionEvent = null; |
| this.collectionClearedCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertTrue(this.testModel.testClearCollection()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.collectionClearedCalled); |
| } |
| |
| public void testClearCollectionNoChange() { |
| this.collectionEvent = null; |
| this.collectionClearedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| assertFalse(this.testModel.testClearCollectionNoChange()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.collectionClearedCalled); |
| |
| this.collectionEvent = null; |
| this.collectionClearedCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| assertFalse(this.testModel.testClearCollectionNoChange()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.collectionClearedCalled); |
| |
| this.collectionEvent = null; |
| this.collectionClearedCalled = false; |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertFalse(this.testModel.testClearCollectionNoChange()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.collectionClearedCalled); |
| |
| this.collectionEvent = null; |
| this.collectionClearedCalled = false; |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertFalse(this.testModel.testClearCollectionNoChange()); |
| assertNull(this.collectionEvent); |
| assertFalse(this.collectionClearedCalled); |
| } |
| |
| public void testSynchronizeCollection1() { |
| CollectionSynchListener csl = new CollectionSynchListener(); |
| this.testModel.addChangeListener(csl); |
| assertTrue(this.testModel.testSynchronizeCollection1()); |
| assertTrue(csl.itemsAdded); |
| assertTrue(csl.itemsRemoved); |
| assertFalse(csl.collectionChanged); |
| assertFalse(csl.collectionCleared); |
| assertEquals(2, csl.addedItems.size()); |
| assertTrue(CollectionTools.containsAll(csl.addedItems, new Object[] {"joo", "jar"})); |
| assertEquals(2, csl.removedItems.size()); |
| assertTrue(CollectionTools.containsAll(csl.removedItems, new Object[] {"foo", "bar"})); |
| } |
| |
| public void testSynchronizeCollection2() { |
| CollectionSynchListener csl = new CollectionSynchListener(); |
| this.testModel.addChangeListener(csl); |
| assertTrue(this.testModel.testSynchronizeCollection2()); |
| assertFalse(csl.itemsAdded); |
| assertFalse(csl.itemsRemoved); |
| assertFalse(csl.collectionChanged); |
| assertTrue(csl.collectionCleared); |
| assertTrue(csl.addedItems.isEmpty()); |
| assertTrue(csl.removedItems.isEmpty()); |
| } |
| |
| public void testSynchronizeCollection3() { |
| CollectionSynchListener csl = new CollectionSynchListener(); |
| this.testModel.addChangeListener(csl); |
| assertTrue(this.testModel.testSynchronizeCollection3()); |
| assertTrue(csl.itemsAdded); |
| assertFalse(csl.itemsRemoved); |
| assertFalse(csl.collectionChanged); |
| assertFalse(csl.collectionCleared); |
| assertEquals(3, csl.addedItems.size()); |
| assertTrue(CollectionTools.containsAll(csl.addedItems, new Object[] {"joo", "jar", "baz"})); |
| assertTrue(csl.removedItems.isEmpty()); |
| } |
| |
| class CollectionSynchListener extends ChangeAdapter { |
| boolean itemsAdded = false; |
| boolean itemsRemoved = false; |
| boolean collectionChanged = false; |
| boolean collectionCleared = false; |
| Collection<Object> addedItems = new ArrayList<Object>(); |
| Collection<Object> removedItems = new ArrayList<Object>(); |
| @Override |
| public void collectionChanged(CollectionChangeEvent event) { |
| this.collectionChanged = true; |
| } |
| @Override |
| public void collectionCleared(CollectionClearEvent event) { |
| this.collectionCleared = true; |
| } |
| @Override |
| public void itemsAdded(CollectionAddEvent event) { |
| this.itemsAdded = true; |
| CollectionTools.addAll(this.addedItems, event.getItems()); |
| } |
| @Override |
| public void itemsRemoved(CollectionRemoveEvent event) { |
| this.itemsRemoved = true; |
| CollectionTools.addAll(this.removedItems, event.getItems()); |
| } |
| } |
| |
| public void testHasAnyCollectionChangeListeners() { |
| assertTrue(this.testModel.hasNoCollectionChangeListeners(COLLECTION_NAME)); |
| this.testModel.addChangeListener(this.changeListener); |
| assertTrue(this.testModel.hasAnyCollectionChangeListeners(COLLECTION_NAME)); |
| this.testModel.removeChangeListener(this.changeListener); |
| assertTrue(this.testModel.hasNoCollectionChangeListeners(COLLECTION_NAME)); |
| |
| assertTrue(this.testModel.hasNoCollectionChangeListeners(COLLECTION_NAME)); |
| this.testModel.addCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertTrue(this.testModel.hasAnyCollectionChangeListeners(COLLECTION_NAME)); |
| this.testModel.removeCollectionChangeListener(COLLECTION_NAME, this.changeListener); |
| assertTrue(this.testModel.hasNoCollectionChangeListeners(COLLECTION_NAME)); |
| } |
| |
| public void testAddNullCollectionListener() { |
| boolean exCaught = false; |
| try { |
| this.testModel.addCollectionChangeListener("foo", null); |
| } catch (NullPointerException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| } |
| |
| public void testRemoveBogusCollectionListener() { |
| boolean exCaught = false; |
| try { |
| this.testModel.removeCollectionChangeListener("foo", this.changeListener); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| |
| this.testModel.addPropertyChangeListener("foo", this.changeListener); |
| exCaught = false; |
| try { |
| this.testModel.removeCollectionChangeListener("foo", this.changeListener); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| |
| this.testModel.addCollectionChangeListener("foo", this.changeListener); |
| exCaught = false; |
| try { |
| this.testModel.removeCollectionChangeListener("foo", new CollectionChangeAdapter()); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| |
| exCaught = false; |
| try { |
| this.testModel.removeCollectionChangeListener("foo", new CollectionChangeAdapter()); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| } |
| |
| private void verifyCollectionEvent(Object item) { |
| assertNotNull(this.collectionEvent); |
| assertEquals(this.testModel, this.collectionEvent.getSource()); |
| assertEquals(COLLECTION_NAME, this.collectionEvent.getCollectionName()); |
| if (item != null) { |
| assertEquals(item, this.getCollectionEventItems().iterator().next()); |
| } |
| } |
| |
| private Iterable<?> getCollectionEventItems() { |
| if (this.collectionEvent instanceof CollectionAddEvent) { |
| return ((CollectionAddEvent) this.collectionEvent).getItems(); |
| } else if (this.collectionEvent instanceof CollectionRemoveEvent) { |
| return ((CollectionRemoveEvent) this.collectionEvent).getItems(); |
| } |
| throw new IllegalStateException(); |
| } |
| |
| private void verifyCollectionChangeEvent2(Object... items) { |
| assertNotNull(this.collectionEvent); |
| assertEquals(this.testModel, this.collectionEvent.getSource()); |
| assertEquals(COLLECTION_NAME, this.collectionEvent.getCollectionName()); |
| assertEquals(items.length, this.getCollectionEventItemsSize()); |
| for (Object item : items) { |
| assertTrue(CollectionTools.contains(this.getCollectionEventItems(), item)); |
| } |
| } |
| |
| private int getCollectionEventItemsSize() { |
| if (this.collectionEvent instanceof CollectionAddEvent) { |
| return ((CollectionAddEvent) this.collectionEvent).getItemsSize(); |
| } else if (this.collectionEvent instanceof CollectionRemoveEvent) { |
| return ((CollectionRemoveEvent) this.collectionEvent).getItemsSize(); |
| } |
| throw new IllegalStateException(); |
| } |
| |
| |
| // ********** list change tests ********** |
| |
| public void testFireItemsAddedListEvent() { |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsAddedListEvent(); |
| this.verifyListAddEvent(ADD_INDEX, ADDED_OBJECT_VALUE); |
| assertTrue(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsAddedListEvent(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsAddedListEvent(); |
| this.verifyListAddEvent(ADD_INDEX, ADDED_OBJECT_VALUE); |
| assertTrue(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsAddedListEvent(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| } |
| |
| public void testFireItemsAddedListEventNoChange() { |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsAddedListEventNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsAddedListEventNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsAddedListEventNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsAddedListEventNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| } |
| |
| public void testFireItemsAddedList() { |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsAddedList(); |
| this.verifyListAddEvent(ADD_INDEX, ADDED_OBJECT_VALUE); |
| assertTrue(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsAddedList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsAddedList(); |
| this.verifyListAddEvent(ADD_INDEX, ADDED_OBJECT_VALUE); |
| assertTrue(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsAddedList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| } |
| |
| public void testFireItemsAddedListNoChange() { |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsAddedListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsAddedListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsAddedListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsAddedListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| } |
| |
| public void testFireItemAddedList() { |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemAddedList(); |
| this.verifyListAddEvent(ADD_INDEX, ADDED_OBJECT_VALUE); |
| assertTrue(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemAddedList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemAddedList(); |
| this.verifyListAddEvent(ADD_INDEX, ADDED_OBJECT_VALUE); |
| assertTrue(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemAddedList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| } |
| |
| public void testFireItemsRemovedListEvent() { |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsRemovedListEvent(); |
| this.verifyListRemoveEvent(REMOVE_INDEX, REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsRemovedListEvent(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsRemovedListEvent(); |
| this.verifyListRemoveEvent(REMOVE_INDEX, REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsRemovedListEvent(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| } |
| |
| public void testFireItemsRemovedListEventNoChange() { |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsRemovedListEventNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsRemovedListEventNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsRemovedListEventNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsRemovedListEventNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| } |
| |
| public void testFireItemsRemovedList() { |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsRemovedList(); |
| this.verifyListRemoveEvent(REMOVE_INDEX, REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsRemovedList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsRemovedList(); |
| this.verifyListRemoveEvent(REMOVE_INDEX, REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsRemovedList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| } |
| |
| public void testFireItemsRemovedListNoChange() { |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsRemovedListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsRemovedListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsRemovedListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsRemovedListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| } |
| |
| public void testFireItemRemovedList() { |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemRemovedList(); |
| this.verifyListRemoveEvent(REMOVE_INDEX, REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemRemovedList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemRemovedList(); |
| this.verifyListRemoveEvent(REMOVE_INDEX, REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemRemovedList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| } |
| |
| public void testFireItemsReplacedListEvent() { |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsReplacedListEvent(); |
| this.verifyListReplaceEvent(REPLACE_INDEX, ADDED_OBJECT_VALUE, REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsReplacedListEvent(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsReplacedListEvent(); |
| this.verifyListReplaceEvent(REPLACE_INDEX, ADDED_OBJECT_VALUE, REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsReplacedListEvent(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| } |
| |
| public void testFireItemsReplacedListEventNoChange() { |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsReplacedListEventNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsReplacedListEventNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsReplacedListEventNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsReplacedListEventNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| } |
| |
| public void testFireItemsReplacedList() { |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsReplacedList(); |
| this.verifyListReplaceEvent(REPLACE_INDEX, ADDED_OBJECT_VALUE, REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsReplacedList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsReplacedList(); |
| this.verifyListReplaceEvent(REPLACE_INDEX, ADDED_OBJECT_VALUE, REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsReplacedList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| } |
| |
| public void testFireItemsReplacedListNoChange() { |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsReplacedListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsReplacedListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsReplacedListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsReplacedListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| } |
| |
| public void testFireItemReplacedList() { |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemReplacedList(); |
| this.verifyListReplaceEvent(REPLACE_INDEX, ADDED_OBJECT_VALUE, REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemReplacedList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemReplacedList(); |
| this.verifyListReplaceEvent(REPLACE_INDEX, ADDED_OBJECT_VALUE, REMOVED_OBJECT_VALUE); |
| assertTrue(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemReplacedList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| } |
| |
| public void testFireItemsMovedListEvent() { |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsMovedListEvent(); |
| this.verifyListMoveEvent(TARGET_INDEX, SOURCE_INDEX); |
| assertTrue(this.itemsMovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsMovedListEvent(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsMovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsMovedListEvent(); |
| this.verifyListMoveEvent(TARGET_INDEX, SOURCE_INDEX); |
| assertTrue(this.itemsMovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsMovedListEvent(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsMovedListCalled); |
| } |
| |
| public void testFireItemsMovedListEventNoChange() { |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsMovedListEventNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsMovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsMovedListEventNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsMovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsMovedListEventNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsMovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsMovedListEventNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsMovedListCalled); |
| } |
| |
| public void testFireItemsMovedList() { |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsMovedList(); |
| this.verifyListMoveEvent(TARGET_INDEX, SOURCE_INDEX); |
| assertTrue(this.itemsMovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsMovedList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsMovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsMovedList(); |
| this.verifyListMoveEvent(TARGET_INDEX, SOURCE_INDEX); |
| assertTrue(this.itemsMovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsMovedList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsMovedListCalled); |
| } |
| |
| public void testFireItemsMovedListNoChange() { |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemsMovedListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsMovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemsMovedListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsMovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsMovedListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsMovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemsMovedListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsMovedListCalled); |
| } |
| |
| public void testFireItemMovedList() { |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireItemMovedList(); |
| this.verifyListMoveEvent(TARGET_INDEX, SOURCE_INDEX); |
| assertTrue(this.itemsMovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireItemMovedList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsMovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemMovedList(); |
| this.verifyListMoveEvent(TARGET_INDEX, SOURCE_INDEX); |
| assertTrue(this.itemsMovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireItemMovedList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsMovedListCalled); |
| } |
| |
| public void testFireListClearedEvent() { |
| this.listEvent = null; |
| this.listClearedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireListClearedEvent(); |
| this.verifyListClearEvent(); |
| assertTrue(this.listClearedCalled); |
| |
| this.listEvent = null; |
| this.listClearedCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireListClearedEvent(); |
| assertNull(this.listEvent); |
| assertFalse(this.listClearedCalled); |
| |
| this.listEvent = null; |
| this.listClearedCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireListClearedEvent(); |
| this.verifyListClearEvent(); |
| assertTrue(this.listClearedCalled); |
| |
| this.listEvent = null; |
| this.listClearedCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireListClearedEvent(); |
| assertNull(this.listEvent); |
| assertFalse(this.listClearedCalled); |
| } |
| |
| public void testFireListCleared() { |
| this.listEvent = null; |
| this.listClearedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireListCleared(); |
| this.verifyListClearEvent(); |
| assertTrue(this.listClearedCalled); |
| |
| this.listEvent = null; |
| this.listClearedCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireListCleared(); |
| assertNull(this.listEvent); |
| assertFalse(this.listClearedCalled); |
| |
| this.listEvent = null; |
| this.listClearedCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireListCleared(); |
| this.verifyListClearEvent(); |
| assertTrue(this.listClearedCalled); |
| |
| this.listEvent = null; |
| this.listClearedCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireListCleared(); |
| assertNull(this.listEvent); |
| assertFalse(this.listClearedCalled); |
| } |
| |
| public void testFireListChangedEvent() { |
| this.listEvent = null; |
| this.listChangedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireListChangedEvent(); |
| this.verifyListChangeEvent(); |
| assertTrue(this.listChangedCalled); |
| |
| this.listEvent = null; |
| this.listChangedCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireListChangedEvent(); |
| assertNull(this.listEvent); |
| assertFalse(this.listChangedCalled); |
| |
| this.listEvent = null; |
| this.listChangedCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireListChangedEvent(); |
| this.verifyListChangeEvent(); |
| assertTrue(this.listChangedCalled); |
| |
| this.listEvent = null; |
| this.listChangedCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireListChangedEvent(); |
| assertNull(this.listEvent); |
| assertFalse(this.listChangedCalled); |
| } |
| |
| public void testFireListChanged() { |
| this.listEvent = null; |
| this.listChangedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireListChanged(); |
| this.verifyListChangeEvent(); |
| assertTrue(this.listChangedCalled); |
| |
| this.listEvent = null; |
| this.listChangedCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireListChanged(); |
| assertNull(this.listEvent); |
| assertFalse(this.listChangedCalled); |
| |
| this.listEvent = null; |
| this.listChangedCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireListChanged(); |
| this.verifyListChangeEvent(); |
| assertTrue(this.listChangedCalled); |
| |
| this.listEvent = null; |
| this.listChangedCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testFireListChanged(); |
| assertNull(this.listEvent); |
| assertFalse(this.listChangedCalled); |
| } |
| |
| public void testAddItemToListIndex() { |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testAddItemToListIndex(); |
| this.verifyListAddEvent(2, "joo"); |
| assertTrue(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testAddItemToListIndex(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testAddItemToListIndex(); |
| this.verifyListAddEvent(2, "joo"); |
| assertTrue(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testAddItemToListIndex(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| } |
| |
| public void testAddItemToList() { |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testAddItemToList(); |
| this.verifyListAddEvent(3, "joo"); |
| assertTrue(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testAddItemToList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testAddItemToList(); |
| this.verifyListAddEvent(3, "joo"); |
| assertTrue(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testAddItemToList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| } |
| |
| public void testAddItemsToListIndex() { |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testAddItemsToListIndex(); |
| this.verifyListAddEvent(2, "joo"); |
| assertTrue(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testAddItemsToListIndex(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testAddItemsToListIndex(); |
| this.verifyListAddEvent(2, "joo"); |
| assertTrue(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testAddItemsToListIndex(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| } |
| |
| public void testAddItemsToListIndexNoChange() { |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testAddItemsToListIndexNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testAddItemsToListIndexNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testAddItemsToListIndexNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testAddItemsToListIndexNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| } |
| |
| public void testAddItemsToList() { |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testAddItemsToList(); |
| this.verifyListAddEvent(3, "joo"); |
| assertTrue(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testAddItemsToList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testAddItemsToList(); |
| this.verifyListAddEvent(3, "joo"); |
| assertTrue(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testAddItemsToList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| } |
| |
| public void testAddItemsToListNoChange() { |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testAddItemsToListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testAddItemsToListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testAddItemsToListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| |
| this.listEvent = null; |
| this.itemsAddedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testAddItemsToListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsAddedListCalled); |
| } |
| |
| public void testRemoveItemFromListIndex() { |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testRemoveItemFromListIndex(); |
| this.verifyListRemoveEvent(1, "bar"); |
| assertTrue(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testRemoveItemFromListIndex(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testRemoveItemFromListIndex(); |
| this.verifyListRemoveEvent(1, "bar"); |
| assertTrue(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testRemoveItemFromListIndex(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| } |
| |
| public void testRemoveItemFromList() { |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testRemoveItemFromList(); |
| this.verifyListRemoveEvent(1, "bar"); |
| assertTrue(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testRemoveItemFromList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testRemoveItemFromList(); |
| this.verifyListRemoveEvent(1, "bar"); |
| assertTrue(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testRemoveItemFromList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| } |
| |
| public void testRemoveItemsFromListIndex() { |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testRemoveItemsFromListIndex(); |
| this.verifyListRemoveEvent(1, "bar"); |
| assertTrue(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testRemoveItemsFromListIndex(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testRemoveItemsFromListIndex(); |
| this.verifyListRemoveEvent(1, "bar"); |
| assertTrue(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testRemoveItemsFromListIndex(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| } |
| |
| public void testRemoveItemsFromListIndexNoChange() { |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testRemoveItemsFromListIndexNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testRemoveItemsFromListIndexNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testRemoveItemsFromListIndexNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testRemoveItemsFromListIndexNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| } |
| |
| public void testRemoveItemsFromList() { |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testRemoveItemsFromList(); |
| this.verifyListRemoveEvent(1, "bar"); |
| assertTrue(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testRemoveItemsFromList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testRemoveItemsFromList(); |
| this.verifyListRemoveEvent(1, "bar"); |
| assertTrue(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testRemoveItemsFromList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| } |
| |
| public void testRemoveItemsFromListNoChange() { |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testRemoveItemsFromListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testRemoveItemsFromListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testRemoveItemsFromListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testRemoveItemsFromListNoChange(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| } |
| |
| public void testRetainItemsInList() { |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testRetainItemsInList(); |
| this.verifyListRemoveEvent(0, "foo"); |
| assertTrue(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testRetainItemsInList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testRetainItemsInList(); |
| this.verifyListRemoveEvent(0, "foo"); |
| assertTrue(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testRetainItemsInList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsRemovedListCalled); |
| } |
| |
| public void testReplaceItemInList() { |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testReplaceItemInList(); |
| this.verifyListReplaceEvent(1, "xxx", "bar"); |
| assertTrue(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testReplaceItemInList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testReplaceItemInList(); |
| this.verifyListReplaceEvent(1, "xxx", "bar"); |
| assertTrue(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testReplaceItemInList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| } |
| |
| public void testSetItemsInList() { |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testSetItemsInList(); |
| this.verifyListReplaceEvent(1, "xxx", "bar"); |
| assertTrue(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testSetItemsInList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testSetItemsInList(); |
| this.verifyListReplaceEvent(1, "xxx", "bar"); |
| assertTrue(this.itemsReplacedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testSetItemsInList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| } |
| |
| public void testMoveItemsInList() { |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testMoveItemsInList(); |
| this.verifyListMoveEvent(2, 4, 2); |
| assertTrue(this.itemsMovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testMoveItemsInList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsMovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testMoveItemsInList(); |
| this.verifyListMoveEvent(2, 4, 2); |
| assertTrue(this.itemsMovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsMovedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testMoveItemsInList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsMovedListCalled); |
| } |
| |
| public void testClearList() { |
| this.listEvent = null; |
| this.listClearedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testClearList(); |
| this.verifyListClearEvent(); |
| assertTrue(this.listClearedCalled); |
| |
| this.listEvent = null; |
| this.listClearedCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testClearList(); |
| assertNull(this.listEvent); |
| assertFalse(this.listClearedCalled); |
| |
| this.listEvent = null; |
| this.listClearedCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testClearList(); |
| this.verifyListClearEvent(); |
| assertTrue(this.listClearedCalled); |
| |
| this.listEvent = null; |
| this.listClearedCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testClearList(); |
| assertNull(this.listEvent); |
| assertFalse(this.listClearedCalled); |
| } |
| |
| public void testSynchronizeList() { |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testSynchronizeList(); |
| assertNotNull(this.listEvent); |
| assertTrue(this.itemsReplacedListCalled); |
| assertTrue(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testSynchronizeList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| assertFalse(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.itemsRemovedListCalled = false; |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testSynchronizeList(); |
| assertNotNull(this.listEvent); |
| assertTrue(this.itemsReplacedListCalled); |
| assertTrue(this.itemsRemovedListCalled); |
| |
| this.listEvent = null; |
| this.itemsReplacedListCalled = false; |
| this.itemsRemovedListCalled = false; |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| this.testModel.testSynchronizeList(); |
| assertNull(this.listEvent); |
| assertFalse(this.itemsReplacedListCalled); |
| assertFalse(this.itemsRemovedListCalled); |
| } |
| |
| public void testHasAnyListChangeListeners() { |
| assertTrue(this.testModel.hasNoListChangeListeners(LIST_NAME)); |
| this.testModel.addChangeListener(this.changeListener); |
| assertTrue(this.testModel.hasAnyListChangeListeners(LIST_NAME)); |
| this.testModel.removeChangeListener(this.changeListener); |
| assertTrue(this.testModel.hasNoListChangeListeners(LIST_NAME)); |
| |
| assertTrue(this.testModel.hasNoListChangeListeners(LIST_NAME)); |
| this.testModel.addListChangeListener(LIST_NAME, this.changeListener); |
| assertTrue(this.testModel.hasAnyListChangeListeners(LIST_NAME)); |
| this.testModel.removeListChangeListener(LIST_NAME, this.changeListener); |
| assertTrue(this.testModel.hasNoListChangeListeners(LIST_NAME)); |
| } |
| |
| public void testAddNullListListener() { |
| boolean exCaught = false; |
| try { |
| this.testModel.addListChangeListener("foo", null); |
| } catch (NullPointerException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| } |
| |
| public void testRemoveBogusListListener() { |
| boolean exCaught = false; |
| try { |
| this.testModel.removeListChangeListener("foo", this.changeListener); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| |
| this.testModel.addPropertyChangeListener("foo", this.changeListener); |
| exCaught = false; |
| try { |
| this.testModel.removeListChangeListener("foo", this.changeListener); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| |
| this.testModel.addListChangeListener("foo", this.changeListener); |
| exCaught = false; |
| try { |
| this.testModel.removeListChangeListener("foo", new ListChangeAdapter()); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| |
| exCaught = false; |
| try { |
| this.testModel.removeListChangeListener("foo", new ListChangeAdapter()); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| } |
| |
| private void verifyListAddEvent(int index, Object item) { |
| assertNotNull(this.listEvent); |
| assertEquals(this.testModel, this.listEvent.getSource()); |
| assertEquals(LIST_NAME, this.listEvent.getListName()); |
| assertEquals(index, ((ListAddEvent) this.listEvent).getIndex()); |
| assertEquals(item, ((ListAddEvent) this.listEvent).getItems().iterator().next()); |
| } |
| |
| private void verifyListRemoveEvent(int index, Object item) { |
| assertNotNull(this.listEvent); |
| assertEquals(this.testModel, this.listEvent.getSource()); |
| assertEquals(LIST_NAME, this.listEvent.getListName()); |
| assertEquals(index, ((ListRemoveEvent) this.listEvent).getIndex()); |
| assertEquals(item, ((ListRemoveEvent) this.listEvent).getItems().iterator().next()); |
| } |
| |
| private void verifyListReplaceEvent(int index, Object newItem, Object oldItem) { |
| assertNotNull(this.listEvent); |
| assertEquals(this.testModel, this.listEvent.getSource()); |
| assertEquals(LIST_NAME, this.listEvent.getListName()); |
| assertEquals(index, ((ListReplaceEvent) this.listEvent).getIndex()); |
| assertEquals(newItem, ((ListReplaceEvent) this.listEvent).getNewItems().iterator().next()); |
| assertEquals(oldItem, ((ListReplaceEvent) this.listEvent).getOldItems().iterator().next()); |
| } |
| |
| private void verifyListMoveEvent(int targetIndex, int sourceIndex) { |
| this.verifyListMoveEvent(targetIndex, sourceIndex, 1); |
| } |
| |
| private void verifyListMoveEvent(int targetIndex, int sourceIndex, int length) { |
| assertNotNull(this.listEvent); |
| assertEquals(this.testModel, this.listEvent.getSource()); |
| assertEquals(LIST_NAME, this.listEvent.getListName()); |
| assertEquals(targetIndex, ((ListMoveEvent) this.listEvent).getTargetIndex()); |
| assertEquals(sourceIndex, ((ListMoveEvent) this.listEvent).getSourceIndex()); |
| assertEquals(length, ((ListMoveEvent) this.listEvent).getLength()); |
| } |
| |
| private void verifyListClearEvent() { |
| assertNotNull(this.listEvent); |
| assertEquals(this.testModel, this.listEvent.getSource()); |
| assertEquals(LIST_NAME, this.listEvent.getListName()); |
| assertEquals(ListClearEvent.class, this.listEvent.getClass()); |
| } |
| |
| private void verifyListChangeEvent() { |
| assertNotNull(this.listEvent); |
| assertEquals(this.testModel, this.listEvent.getSource()); |
| assertEquals(LIST_NAME, this.listEvent.getListName()); |
| assertEquals(ListChangeEvent.class, this.listEvent.getClass()); |
| } |
| |
| |
| // ********** tree change tests ********** |
| |
| public void testFireNodeAddedTree() { |
| this.treeEvent = null; |
| this.nodeAddedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireNodeAddedTree(); |
| this.verifyTreeEvent(OBJECT_PATH); |
| assertTrue(this.nodeAddedCalled); |
| |
| this.treeEvent = null; |
| this.nodeAddedCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireNodeAddedTree(); |
| assertNull(this.treeEvent); |
| assertFalse(this.nodeAddedCalled); |
| |
| this.treeEvent = null; |
| this.nodeAddedCalled = false; |
| this.testModel.addTreeChangeListener(TREE_NAME, this.changeListener); |
| this.testModel.testFireNodeAddedTree(); |
| this.verifyTreeEvent(OBJECT_PATH); |
| assertTrue(this.nodeAddedCalled); |
| |
| this.treeEvent = null; |
| this.nodeAddedCalled = false; |
| this.testModel.removeTreeChangeListener(TREE_NAME, this.changeListener); |
| this.testModel.testFireNodeAddedTree(); |
| assertNull(this.treeEvent); |
| assertFalse(this.nodeAddedCalled); |
| } |
| |
| public void testFireNodeAddedTreeEvent() { |
| this.treeEvent = null; |
| this.nodeAddedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireNodeAddedTreeEvent(); |
| this.verifyTreeEvent(OBJECT_PATH); |
| assertTrue(this.nodeAddedCalled); |
| |
| this.treeEvent = null; |
| this.nodeAddedCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireNodeAddedTreeEvent(); |
| assertNull(this.treeEvent); |
| assertFalse(this.nodeAddedCalled); |
| |
| this.treeEvent = null; |
| this.nodeAddedCalled = false; |
| this.testModel.addTreeChangeListener(TREE_NAME, this.changeListener); |
| this.testModel.testFireNodeAddedTreeEvent(); |
| this.verifyTreeEvent(OBJECT_PATH); |
| assertTrue(this.nodeAddedCalled); |
| |
| this.treeEvent = null; |
| this.nodeAddedCalled = false; |
| this.testModel.removeTreeChangeListener(TREE_NAME, this.changeListener); |
| this.testModel.testFireNodeAddedTreeEvent(); |
| assertNull(this.treeEvent); |
| assertFalse(this.nodeAddedCalled); |
| } |
| |
| public void testFireNodeRemovedTreeEvent() { |
| this.treeEvent = null; |
| this.nodeRemovedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireNodeRemovedTreeEvent(); |
| this.verifyTreeEvent(OBJECT_PATH); |
| assertTrue(this.nodeRemovedCalled); |
| |
| this.treeEvent = null; |
| this.nodeRemovedCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireNodeRemovedTreeEvent(); |
| assertNull(this.treeEvent); |
| assertFalse(this.nodeRemovedCalled); |
| |
| this.treeEvent = null; |
| this.nodeRemovedCalled = false; |
| this.testModel.addTreeChangeListener(TREE_NAME, this.changeListener); |
| this.testModel.testFireNodeRemovedTreeEvent(); |
| this.verifyTreeEvent(OBJECT_PATH); |
| assertTrue(this.nodeRemovedCalled); |
| |
| this.treeEvent = null; |
| this.nodeRemovedCalled = false; |
| this.testModel.removeTreeChangeListener(TREE_NAME, this.changeListener); |
| this.testModel.testFireNodeRemovedTreeEvent(); |
| assertNull(this.treeEvent); |
| assertFalse(this.nodeRemovedCalled); |
| } |
| |
| public void testFireNodeRemovedTree() { |
| this.treeEvent = null; |
| this.nodeRemovedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireNodeRemovedTree(); |
| this.verifyTreeEvent(OBJECT_PATH); |
| assertTrue(this.nodeRemovedCalled); |
| |
| this.treeEvent = null; |
| this.nodeRemovedCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireNodeRemovedTree(); |
| assertNull(this.treeEvent); |
| assertFalse(this.nodeRemovedCalled); |
| |
| this.treeEvent = null; |
| this.nodeRemovedCalled = false; |
| this.testModel.addTreeChangeListener(TREE_NAME, this.changeListener); |
| this.testModel.testFireNodeRemovedTree(); |
| this.verifyTreeEvent(OBJECT_PATH); |
| assertTrue(this.nodeRemovedCalled); |
| |
| this.treeEvent = null; |
| this.nodeRemovedCalled = false; |
| this.testModel.removeTreeChangeListener(TREE_NAME, this.changeListener); |
| this.testModel.testFireNodeRemovedTree(); |
| assertNull(this.treeEvent); |
| assertFalse(this.nodeRemovedCalled); |
| } |
| |
| public void testFireTreeClearedEvent() { |
| this.treeEvent = null; |
| this.treeClearedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireTreeClearedEvent(); |
| this.verifyTreeEvent(null); |
| assertTrue(this.treeClearedCalled); |
| |
| this.treeEvent = null; |
| this.treeClearedCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireTreeClearedEvent(); |
| assertNull(this.treeEvent); |
| assertFalse(this.treeClearedCalled); |
| |
| this.treeEvent = null; |
| this.treeClearedCalled = false; |
| this.testModel.addTreeChangeListener(TREE_NAME, this.changeListener); |
| this.testModel.testFireTreeClearedEvent(); |
| this.verifyTreeEvent(null); |
| assertTrue(this.treeClearedCalled); |
| |
| this.treeEvent = null; |
| this.treeClearedCalled = false; |
| this.testModel.removeTreeChangeListener(TREE_NAME, this.changeListener); |
| this.testModel.testFireTreeClearedEvent(); |
| assertNull(this.treeEvent); |
| assertFalse(this.treeClearedCalled); |
| } |
| |
| public void testFireTreeCleared() { |
| this.treeEvent = null; |
| this.treeClearedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireTreeCleared(); |
| this.verifyTreeEvent(null); |
| assertTrue(this.treeClearedCalled); |
| |
| this.treeEvent = null; |
| this.treeClearedCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireTreeCleared(); |
| assertNull(this.treeEvent); |
| assertFalse(this.treeClearedCalled); |
| |
| this.treeEvent = null; |
| this.treeClearedCalled = false; |
| this.testModel.addTreeChangeListener(TREE_NAME, this.changeListener); |
| this.testModel.testFireTreeCleared(); |
| this.verifyTreeEvent(null); |
| assertTrue(this.treeClearedCalled); |
| |
| this.treeEvent = null; |
| this.treeClearedCalled = false; |
| this.testModel.removeTreeChangeListener(TREE_NAME, this.changeListener); |
| this.testModel.testFireTreeCleared(); |
| assertNull(this.treeEvent); |
| assertFalse(this.treeClearedCalled); |
| } |
| |
| public void testFireTreeChangedEvent() { |
| this.treeEvent = null; |
| this.treeChangedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireTreeChangedEvent(); |
| this.verifyTreeEvent(null); |
| assertTrue(this.treeChangedCalled); |
| |
| this.treeEvent = null; |
| this.treeChangedCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireTreeChangedEvent(); |
| assertNull(this.treeEvent); |
| assertFalse(this.treeChangedCalled); |
| |
| this.treeEvent = null; |
| this.treeChangedCalled = false; |
| this.testModel.addTreeChangeListener(TREE_NAME, this.changeListener); |
| this.testModel.testFireTreeChangedEvent(); |
| this.verifyTreeEvent(null); |
| assertTrue(this.treeChangedCalled); |
| |
| this.treeEvent = null; |
| this.treeChangedCalled = false; |
| this.testModel.removeTreeChangeListener(TREE_NAME, this.changeListener); |
| this.testModel.testFireTreeChangedEvent(); |
| assertNull(this.treeEvent); |
| assertFalse(this.treeChangedCalled); |
| } |
| |
| public void testFireTreeChanged() { |
| this.treeEvent = null; |
| this.treeChangedCalled = false; |
| this.testModel.addChangeListener(this.changeListener); |
| this.testModel.testFireTreeChanged(); |
| this.verifyTreeEvent(null); |
| assertTrue(this.treeChangedCalled); |
| |
| this.treeEvent = null; |
| this.treeChangedCalled = false; |
| this.testModel.removeChangeListener(this.changeListener); |
| this.testModel.testFireTreeChanged(); |
| assertNull(this.treeEvent); |
| assertFalse(this.treeChangedCalled); |
| |
| this.treeEvent = null; |
| this.treeChangedCalled = false; |
| this.testModel.addTreeChangeListener(TREE_NAME, this.changeListener); |
| this.testModel.testFireTreeChanged(); |
| this.verifyTreeEvent(null); |
| assertTrue(this.treeChangedCalled); |
| |
| this.treeEvent = null; |
| this.treeChangedCalled = false; |
| this.testModel.removeTreeChangeListener(TREE_NAME, this.changeListener); |
| this.testModel.testFireTreeChanged(); |
| assertNull(this.treeEvent); |
| assertFalse(this.treeChangedCalled); |
| } |
| |
| public void testHasAnyTreeChangeListeners() { |
| assertTrue(this.testModel.hasNoTreeChangeListeners(TREE_NAME)); |
| this.testModel.addChangeListener(this.changeListener); |
| assertTrue(this.testModel.hasAnyTreeChangeListeners(TREE_NAME)); |
| this.testModel.removeChangeListener(this.changeListener); |
| assertTrue(this.testModel.hasNoTreeChangeListeners(TREE_NAME)); |
| |
| assertTrue(this.testModel.hasNoTreeChangeListeners(TREE_NAME)); |
| this.testModel.addTreeChangeListener(TREE_NAME, this.changeListener); |
| assertTrue(this.testModel.hasAnyTreeChangeListeners(TREE_NAME)); |
| this.testModel.removeTreeChangeListener(TREE_NAME, this.changeListener); |
| assertTrue(this.testModel.hasNoTreeChangeListeners(TREE_NAME)); |
| } |
| |
| public void testAddNullTreeListener() { |
| boolean exCaught = false; |
| try { |
| this.testModel.addTreeChangeListener("foo", null); |
| } catch (NullPointerException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| } |
| |
| public void testRemoveBogusTreeListener() { |
| boolean exCaught = false; |
| try { |
| this.testModel.removeTreeChangeListener("foo", this.changeListener); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| |
| this.testModel.addPropertyChangeListener("foo", this.changeListener); |
| exCaught = false; |
| try { |
| this.testModel.removeTreeChangeListener("foo", this.changeListener); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| |
| this.testModel.addTreeChangeListener("foo", this.changeListener); |
| exCaught = false; |
| try { |
| this.testModel.removeTreeChangeListener("foo", new TreeChangeAdapter()); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| |
| exCaught = false; |
| try { |
| this.testModel.removeTreeChangeListener("foo", new TreeChangeAdapter()); |
| } catch (IllegalArgumentException ex) { |
| exCaught = true; |
| } |
| assertTrue(exCaught); |
| } |
| |
| private void verifyTreeEvent(List<?> path) { |
| assertNotNull(this.treeEvent); |
| assertEquals(this.testModel, this.treeEvent.getSource()); |
| assertEquals(TREE_NAME, this.treeEvent.getTreeName()); |
| assertEquals(path, this.getListPath()); |
| } |
| |
| private List<?> getListPath() { |
| Iterable<?> iterable = this.getPath(); |
| return (iterable == null) ? null : CollectionTools.list(iterable); |
| } |
| |
| private Iterable<?> getPath() { |
| if (this.treeEvent instanceof TreeAddEvent) { |
| return ((TreeAddEvent) this.treeEvent).getPath(); |
| } |
| if (this.treeEvent instanceof TreeRemoveEvent) { |
| return ((TreeRemoveEvent) this.treeEvent).getPath(); |
| } |
| return null; |
| } |
| |
| |
| |
| // ********** convenience method tests ********** |
| |
| public void testElementsAreEqual() { |
| Collection<String> c1 = new ArrayList<String>(); |
| c1.add("foo"); |
| c1.add("bar"); |
| c1.add("baz"); |
| Collection<String> c2 = new ArrayList<String>(); |
| c2.add("foo"); |
| c2.add("bar"); |
| c2.add("baz"); |
| assertTrue(this.testModel.testElementsAreEqual(c1, c2)); |
| } |
| |
| public void testElementsAreDifferent() { |
| Collection<String> c1 = new ArrayList<String>(); |
| c1.add("foo"); |
| c1.add("bar"); |
| c1.add("baz"); |
| Collection<String> c2 = new ArrayList<String>(); |
| c2.add("baz"); |
| c2.add("bar"); |
| c2.add("foo"); |
| assertTrue(this.testModel.testElementsAreDifferent(c1, c2)); |
| } |
| |
| |
| // ********** AbstractModel tests ********** |
| |
| public void testAbstractModelValuesAreEqual1() { |
| assertTrue(this.testModel.testValuesAreEqual(null, null)); |
| } |
| |
| public void testAbstractModelValuesAreEqual2() { |
| assertTrue(this.testModel.testValuesAreEqual("foo", "foo")); |
| } |
| |
| public void testAbstractModelValuesAreEqual3() { |
| assertFalse(this.testModel.testValuesAreEqual("foo", null)); |
| } |
| |
| public void testAbstractModelValuesAreEqual4() { |
| assertFalse(this.testModel.testValuesAreEqual(null, "foo")); |
| } |
| |
| public void testAbstractModelValuesAreEqual5() { |
| assertFalse(this.testModel.testValuesAreEqual("bar", "foo")); |
| } |
| |
| public void testAbstractModelValuesAreDifferent1() { |
| assertFalse(this.testModel.testValuesAreDifferent(null, null)); |
| } |
| |
| public void testAbstractModelValuesAreDifferent2() { |
| assertFalse(this.testModel.testValuesAreDifferent("foo", "foo")); |
| } |
| |
| public void testAbstractModelValuesAreDifferent3() { |
| assertTrue(this.testModel.testValuesAreDifferent("foo", null)); |
| } |
| |
| public void testAbstractModelValuesAreDifferent4() { |
| assertTrue(this.testModel.testValuesAreDifferent(null, "foo")); |
| } |
| |
| public void testAbstractModelValuesAreDifferent5() { |
| assertTrue(this.testModel.testValuesAreDifferent("bar", "foo")); |
| } |
| |
| public void testAbstractModelAttributeValueHasChanged1() { |
| assertFalse(this.testModel.testAttributeValueHasChanged(null, null)); |
| } |
| |
| public void testAbstractModelAttributeValueHasChanged2() { |
| assertFalse(this.testModel.testAttributeValueHasChanged("foo", "foo")); |
| } |
| |
| public void testAbstractModelAttributeValueHasChanged3() { |
| assertTrue(this.testModel.testAttributeValueHasChanged("foo", null)); |
| } |
| |
| public void testAbstractModelAttributeValueHasChanged4() { |
| assertTrue(this.testModel.testAttributeValueHasChanged(null, "foo")); |
| } |
| |
| public void testAbstractModelAttributeValueHasChanged5() { |
| assertTrue(this.testModel.testAttributeValueHasChanged("bar", "foo")); |
| } |
| |
| public void testAbstractModelAttributeValueHasNotChanged1() { |
| assertTrue(this.testModel.testAttributeValueHasNotChanged(null, null)); |
| } |
| |
| public void testAbstractModelAttributeValueHasNotChanged2() { |
| assertTrue(this.testModel.testAttributeValueHasNotChanged("foo", "foo")); |
| } |
| |
| public void testAbstractModelAttributeValueHasNotChanged3() { |
| assertFalse(this.testModel.testAttributeValueHasNotChanged("foo", null)); |
| } |
| |
| public void testAbstractModelAttributeValueHasNotChanged4() { |
| assertFalse(this.testModel.testAttributeValueHasNotChanged(null, "foo")); |
| } |
| |
| public void testAbstractModelAttributeValueHasNotChanged5() { |
| assertFalse(this.testModel.testAttributeValueHasNotChanged("bar", "foo")); |
| } |
| |
| public void testAbstractModelClone() { |
| assertFalse(this.testModel.hasAnyPropertyChangeListeners(PROPERTY_NAME)); |
| this.testModel.addChangeListener(this.changeListener); |
| assertTrue(this.testModel.hasAnyPropertyChangeListeners(PROPERTY_NAME)); |
| |
| // verify that the clone does not have any listeners |
| TestModel clone = this.testModel.clone(); |
| assertFalse(clone.hasAnyPropertyChangeListeners(PROPERTY_NAME)); |
| clone.addChangeListener(this.changeListener); |
| assertTrue(clone.hasAnyPropertyChangeListeners(PROPERTY_NAME)); |
| // check original |
| assertTrue(this.testModel.hasAnyPropertyChangeListeners(PROPERTY_NAME)); |
| |
| // now test events fired by original |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| this.testModel.testFirePropertyChangedObjectObject(); |
| this.verifyPropertyChangeEvent(OLD_OBJECT_VALUE, NEW_OBJECT_VALUE); |
| assertTrue(this.propertyChangeCalled); |
| |
| // now test events fired by clone |
| this.propertyChangeEvent = null; |
| this.propertyChangeCalled = false; |
| clone.testFirePropertyChangedObjectObject(); |
| this.verifyPropertyChangeEvent(clone, OLD_OBJECT_VALUE, NEW_OBJECT_VALUE); |
| assertTrue(this.propertyChangeCalled); |
| } |
| |
| public void testAbstractModelToString() { |
| assertTrue(this.testModel.toString().contains('(' + TEST_TO_STRING + ')')); |
| } |
| |
| |
| // ********** listener implementations ********** |
| |
| class Adapter implements ChangeListener { |
| public void stateChanged(StateChangeEvent e) { |
| ChangeSupportTests.this.stateChangedCalled = true; |
| ChangeSupportTests.this.stateChangeEvent = e; |
| } |
| |
| public void propertyChanged(PropertyChangeEvent e) { |
| ChangeSupportTests.this.propertyChangeCalled = true; |
| ChangeSupportTests.this.propertyChangeEvent = e; |
| } |
| |
| |
| public void itemsAdded(CollectionAddEvent e) { |
| ChangeSupportTests.this.itemsAddedCollectionCalled = true; |
| ChangeSupportTests.this.collectionEvent = e; |
| } |
| public void itemsRemoved(CollectionRemoveEvent e) { |
| ChangeSupportTests.this.itemsRemovedCollectionCalled = true; |
| ChangeSupportTests.this.collectionEvent = e; |
| } |
| public void collectionCleared(CollectionClearEvent e) { |
| ChangeSupportTests.this.collectionClearedCalled = true; |
| ChangeSupportTests.this.collectionEvent = e; |
| } |
| public void collectionChanged(CollectionChangeEvent e) { |
| ChangeSupportTests.this.collectionChangedCalled = true; |
| ChangeSupportTests.this.collectionEvent = e; |
| } |
| |
| public void itemsAdded(ListAddEvent e) { |
| ChangeSupportTests.this.itemsAddedListCalled = true; |
| ChangeSupportTests.this.listEvent = e; |
| } |
| public void itemsRemoved(ListRemoveEvent e) { |
| ChangeSupportTests.this.itemsRemovedListCalled = true; |
| ChangeSupportTests.this.listEvent = e; |
| } |
| public void itemsReplaced(ListReplaceEvent e) { |
| ChangeSupportTests.this.itemsReplacedListCalled = true; |
| ChangeSupportTests.this.listEvent = e; |
| } |
| public void itemsMoved(ListMoveEvent e) { |
| ChangeSupportTests.this.itemsMovedListCalled = true; |
| ChangeSupportTests.this.listEvent = e; |
| } |
| public void listCleared(ListClearEvent e) { |
| ChangeSupportTests.this.listClearedCalled = true; |
| ChangeSupportTests.this.listEvent = e; |
| } |
| public void listChanged(ListChangeEvent e) { |
| ChangeSupportTests.this.listChangedCalled = true; |
| ChangeSupportTests.this.listEvent = e; |
| } |
| |
| public void nodeAdded(TreeAddEvent e) { |
| ChangeSupportTests.this.nodeAddedCalled = true; |
| ChangeSupportTests.this.treeEvent = e; |
| } |
| public void nodeRemoved(TreeRemoveEvent e) { |
| ChangeSupportTests.this.nodeRemovedCalled = true; |
| ChangeSupportTests.this.treeEvent = e; |
| } |
| public void treeCleared(TreeClearEvent e) { |
| ChangeSupportTests.this.treeClearedCalled = true; |
| ChangeSupportTests.this.treeEvent = e; |
| } |
| public void treeChanged(TreeChangeEvent e) { |
| ChangeSupportTests.this.treeChangedCalled = true; |
| ChangeSupportTests.this.treeEvent = e; |
| } |
| } |
| |
| |
| // ********** inner class ********** |
| |
| private static class TestModel extends AbstractModel implements Cloneable { |
| TestModel() { |
| super(); |
| } |
| |
| // ***** state |
| public void testFireStateChange() { |
| this.fireStateChanged(); |
| } |
| |
| // ***** property |
| public void testFirePropertyChangedEvent() { |
| this.firePropertyChanged(new PropertyChangeEvent(this, PROPERTY_NAME, OLD_OBJECT_VALUE, NEW_OBJECT_VALUE)); |
| } |
| |
| public void testFirePropertyChangedEventNoChange() { |
| this.firePropertyChanged(new PropertyChangeEvent(this, PROPERTY_NAME, OLD_OBJECT_VALUE, OLD_OBJECT_VALUE)); |
| } |
| |
| public void testFirePropertyChangedObjectObject() { |
| this.firePropertyChanged(PROPERTY_NAME, OLD_OBJECT_VALUE, NEW_OBJECT_VALUE); |
| } |
| |
| public void testFirePropertyChangedObjectObjectNoChange() { |
| this.firePropertyChanged(PROPERTY_NAME, OLD_OBJECT_VALUE, OLD_OBJECT_VALUE); |
| } |
| |
| public void testFirePropertyChangedObject() { |
| this.firePropertyChanged(PROPERTY_NAME, NEW_OBJECT_VALUE); |
| } |
| |
| public void testFirePropertyChangedObjectNoChange() { |
| this.firePropertyChanged(PROPERTY_NAME, null); |
| } |
| |
| public void testFirePropertyChangedIntInt() { |
| this.firePropertyChanged(PROPERTY_NAME, OLD_INT_VALUE.intValue(), NEW_INT_VALUE.intValue()); |
| } |
| |
| public void testFirePropertyChangedIntIntNoChange() { |
| this.firePropertyChanged(PROPERTY_NAME, OLD_INT_VALUE.intValue(), OLD_INT_VALUE.intValue()); |
| } |
| |
| public void testFirePropertyChangedBooleanBoolean() { |
| this.firePropertyChanged(PROPERTY_NAME, OLD_BOOLEAN_VALUE.booleanValue(), NEW_BOOLEAN_VALUE.booleanValue()); |
| } |
| |
| public void testFirePropertyChangedBooleanBooleanNoChange() { |
| this.firePropertyChanged(PROPERTY_NAME, OLD_BOOLEAN_VALUE.booleanValue(), OLD_BOOLEAN_VALUE.booleanValue()); |
| } |
| |
| // ***** collection |
| public void testFireItemsAddedCollectionEvent() { |
| this.fireItemsAdded(new CollectionAddEvent(this, COLLECTION_NAME, ADDED_OBJECT_VALUE)); |
| } |
| |
| public void testFireItemsAddedCollectionEventNoChange() { |
| this.fireItemsAdded(new CollectionAddEvent(this, COLLECTION_NAME, Collections.emptySet())); |
| } |
| |
| public void testFireItemsAddedCollection() { |
| this.fireItemsAdded(COLLECTION_NAME, Collections.singleton(ADDED_OBJECT_VALUE)); |
| } |
| |
| public void testFireItemsAddedCollectionNoChange() { |
| this.fireItemsAdded(COLLECTION_NAME, Collections.emptySet()); |
| } |
| |
| public void testFireItemAddedCollection() { |
| this.fireItemAdded(COLLECTION_NAME, ADDED_OBJECT_VALUE); |
| } |
| |
| public void testFireItemsRemovedCollectionEvent() { |
| this.fireItemsRemoved(new CollectionRemoveEvent(this, COLLECTION_NAME, REMOVED_OBJECT_VALUE)); |
| } |
| |
| public void testFireItemsRemovedCollectionEventNoChange() { |
| this.fireItemsRemoved(new CollectionRemoveEvent(this, COLLECTION_NAME, Collections.emptySet())); |
| } |
| |
| public void testFireItemsRemovedCollection() { |
| this.fireItemsRemoved(COLLECTION_NAME, Collections.singleton(REMOVED_OBJECT_VALUE)); |
| } |
| |
| public void testFireItemsRemovedCollectionNoChange() { |
| this.fireItemsRemoved(COLLECTION_NAME, Collections.emptySet()); |
| } |
| |
| public void testFireItemRemovedCollection() { |
| this.fireItemRemoved(COLLECTION_NAME, REMOVED_OBJECT_VALUE); |
| } |
| |
| public void testFireCollectionCleared() { |
| this.fireCollectionCleared(COLLECTION_NAME); |
| } |
| |
| public void testFireCollectionChangedEvent() { |
| this.fireCollectionChanged(new CollectionChangeEvent(this, COLLECTION_NAME, Collections.emptySet())); |
| } |
| |
| public void testFireCollectionChanged() { |
| this.fireCollectionChanged(COLLECTION_NAME, Collections.emptySet()); |
| } |
| |
| public boolean testAddItemToCollection() { |
| return this.addItemToCollection(ADDED_OBJECT_VALUE, new ArrayList<Object>(), COLLECTION_NAME); |
| } |
| |
| public boolean testAddItemToCollectionNoChange() { |
| Collection<Object> collection = new HashSet<Object>(); |
| collection.add(ADDED_OBJECT_VALUE); |
| return this.addItemToCollection(ADDED_OBJECT_VALUE, collection, COLLECTION_NAME); |
| } |
| |
| public boolean testAddItemsToCollection() { |
| return this.addItemsToCollection(Collections.singleton(ADDED_OBJECT_VALUE), new ArrayList<Object>(), COLLECTION_NAME); |
| } |
| |
| public boolean testAddItemsToCollectionNoChange() { |
| Collection<Object> collection = new HashSet<Object>(); |
| collection.add(ADDED_OBJECT_VALUE); |
| return this.addItemsToCollection(Collections.singleton(ADDED_OBJECT_VALUE), collection, COLLECTION_NAME); |
| } |
| |
| public boolean testAddItemsToCollectionMixed() { |
| Collection<Object> collection = new HashSet<Object>(); |
| collection.add(ADDED_OBJECT_VALUE); |
| return this.addItemsToCollection(new Object[] {ADDED_OBJECT_VALUE, ADDED_OBJECT_VALUE_2}, collection, COLLECTION_NAME); |
| } |
| |
| public boolean testRemoveItemFromCollection() { |
| Collection<Object> collection = new HashSet<Object>(); |
| collection.add(REMOVED_OBJECT_VALUE); |
| return this.removeItemFromCollection(REMOVED_OBJECT_VALUE, collection, COLLECTION_NAME); |
| } |
| |
| public boolean testRemoveItemFromCollectionNoChange() { |
| Collection<Object> collection = new HashSet<Object>(); |
| collection.add(REMOVED_OBJECT_VALUE); |
| return this.removeItemFromCollection("foo", collection, COLLECTION_NAME); |
| } |
| |
| public boolean testRemoveItemsFromCollection() { |
| Collection<Object> collection = new HashSet<Object>(); |
| collection.add(REMOVED_OBJECT_VALUE); |
| collection.add("foo"); |
| collection.add("bar"); |
| return this.removeItemsFromCollection(new Object[] {"foo", "bar", REMOVED_OBJECT_VALUE}, collection, COLLECTION_NAME); |
| } |
| |
| public boolean testRemoveItemsFromCollectionNoChange1() { |
| Collection<Object> collection = new HashSet<Object>(); |
| collection.add(REMOVED_OBJECT_VALUE); |
| return this.removeItemsFromCollection(Collections.emptySet(), collection, COLLECTION_NAME); |
| } |
| |
| public boolean testRemoveItemsFromCollectionNoChange2() { |
| Collection<Object> collection = new HashSet<Object>(); |
| return this.removeItemsFromCollection(Collections.singleton("foo"), collection, COLLECTION_NAME); |
| } |
| |
| public boolean testRemoveItemsFromCollectionNoChange3() { |
| Collection<Object> collection = new HashSet<Object>(); |
| collection.add(REMOVED_OBJECT_VALUE); |
| return this.removeItemsFromCollection(Collections.singleton("foo"), collection, COLLECTION_NAME); |
| } |
| |
| public boolean testRetainItemsInCollection1() { |
| Collection<Object> collection = new HashSet<Object>(); |
| collection.add(REMOVED_OBJECT_VALUE); |
| collection.add("foo"); |
| collection.add("bar"); |
| return this.retainItemsInCollection(new Object[] {"foo", "bar"}, collection, COLLECTION_NAME); |
| } |
| |
| public boolean testRetainItemsInCollection2() { |
| Collection<Object> collection = new HashSet<Object>(); |
| collection.add(REMOVED_OBJECT_VALUE); |
| collection.add("foo"); |
| collection.add("bar"); |
| return this.retainItemsInCollection(Collections.emptySet(), collection, COLLECTION_NAME); |
| } |
| |
| public boolean testRetainItemsInCollectionNoChange1() { |
| Collection<Object> collection = new HashSet<Object>(); |
| return this.retainItemsInCollection(new Object[] {"foo", "bar"}, collection, COLLECTION_NAME); |
| } |
| |
| public boolean testRetainItemsInCollectionNoChange2() { |
| Collection<Object> collection = new HashSet<Object>(); |
| collection.add(REMOVED_OBJECT_VALUE); |
| collection.add("foo"); |
| collection.add("bar"); |
| return this.retainItemsInCollection(new Object[] {"foo", "bar", REMOVED_OBJECT_VALUE}, collection, COLLECTION_NAME); |
| } |
| |
| public boolean testClearCollection() { |
| Collection<Object> collection = new HashSet<Object>(); |
| collection.add(REMOVED_OBJECT_VALUE); |
| collection.add("foo"); |
| collection.add("bar"); |
| return this.clearCollection(collection, COLLECTION_NAME); |
| } |
| |
| public boolean testClearCollectionNoChange() { |
| Collection<Object> collection = new HashSet<Object>(); |
| return this.clearCollection(collection, COLLECTION_NAME); |
| } |
| |
| public boolean testSynchronizeCollection1() { |
| Collection<Object> collection = new HashSet<Object>(); |
| collection.add("foo"); |
| collection.add("bar"); |
| collection.add("baz"); |
| Collection<Object> newCollection = new HashSet<Object>(); |
| newCollection.add("joo"); |
| newCollection.add("jar"); |
| newCollection.add("baz"); |
| boolean result = this.synchronizeCollection(newCollection, collection, COLLECTION_NAME); |
| assertEquals(newCollection, collection); |
| return result; |
| } |
| |
| public boolean testSynchronizeCollection2() { |
| Collection<Object> collection = new HashSet<Object>(); |
| collection.add("foo"); |
| collection.add("bar"); |
| collection.add("baz"); |
| Collection<Object> newCollection = new HashSet<Object>(); |
| boolean result = this.synchronizeCollection(newCollection, collection, COLLECTION_NAME); |
| assertEquals(newCollection, collection); |
| return result; |
| } |
| |
| public boolean testSynchronizeCollection3() { |
| Collection<Object> collection = new HashSet<Object>(); |
| Collection<Object> newCollection = new HashSet<Object>(); |
| newCollection.add("joo"); |
| newCollection.add("jar"); |
| newCollection.add("baz"); |
| boolean result = this.synchronizeCollection(newCollection, collection, COLLECTION_NAME); |
| assertEquals(newCollection, collection); |
| return result; |
| } |
| |
| // ***** list |
| public void testFireItemsAddedListEvent() { |
| this.fireItemsAdded(new ListAddEvent(this, LIST_NAME, ADD_INDEX, ADDED_OBJECT_VALUE)); |
| } |
| |
| public void testFireItemsAddedListEventNoChange() { |
| this.fireItemsAdded(new ListAddEvent(this, LIST_NAME, ADD_INDEX, Collections.emptyList())); |
| } |
| |
| public void testFireItemsAddedList() { |
| this.fireItemsAdded(LIST_NAME, ADD_INDEX, Collections.singletonList(ADDED_OBJECT_VALUE)); |
| } |
| |
| public void testFireItemsAddedListNoChange() { |
| this.fireItemsAdded(LIST_NAME, ADD_INDEX, Collections.emptyList()); |
| } |
| |
| public void testFireItemAddedList() { |
| this.fireItemAdded(LIST_NAME, ADD_INDEX, ADDED_OBJECT_VALUE); |
| } |
| |
| public void testFireItemsRemovedListEvent() { |
| this.fireItemsRemoved(new ListRemoveEvent(this, LIST_NAME, REMOVE_INDEX, REMOVED_OBJECT_VALUE)); |
| } |
| |
| public void testFireItemsRemovedListEventNoChange() { |
| this.fireItemsRemoved(new ListRemoveEvent(this, LIST_NAME, REMOVE_INDEX, Collections.emptyList())); |
| } |
| |
| public void testFireItemsRemovedList() { |
| this.fireItemsRemoved(LIST_NAME, REMOVE_INDEX, Collections.singletonList(REMOVED_OBJECT_VALUE)); |
| } |
| |
| public void testFireItemsRemovedListNoChange() { |
| this.fireItemsRemoved(LIST_NAME, REMOVE_INDEX, Collections.emptyList()); |
| } |
| |
| public void testFireItemRemovedList() { |
| this.fireItemRemoved(LIST_NAME, REMOVE_INDEX, REMOVED_OBJECT_VALUE); |
| } |
| |
| public void testFireItemsReplacedListEvent() { |
| this.fireItemsReplaced(new ListReplaceEvent(this, LIST_NAME, REPLACE_INDEX, ADDED_OBJECT_VALUE, REMOVED_OBJECT_VALUE)); |
| } |
| |
| public void testFireItemsReplacedListEventNoChange() { |
| this.fireItemsReplaced(new ListReplaceEvent(this, LIST_NAME, REPLACE_INDEX, Collections.emptyList(), Collections.emptyList())); |
| } |
| |
| public void testFireItemsReplacedList() { |
| this.fireItemsReplaced(LIST_NAME, REPLACE_INDEX, Collections.singletonList(ADDED_OBJECT_VALUE), Collections.singletonList(REMOVED_OBJECT_VALUE)); |
| } |
| |
| public void testFireItemsReplacedListNoChange() { |
| this.fireItemsReplaced(LIST_NAME, REPLACE_INDEX, Collections.emptyList(), Collections.emptyList()); |
| } |
| |
| public void testFireItemReplacedList() { |
| this.fireItemReplaced(LIST_NAME, REPLACE_INDEX, ADDED_OBJECT_VALUE, REMOVED_OBJECT_VALUE); |
| } |
| |
| public void testFireItemsMovedListEvent() { |
| this.fireItemsMoved(new ListMoveEvent(this, LIST_NAME, TARGET_INDEX, SOURCE_INDEX, 1)); |
| } |
| |
| public void testFireItemsMovedListEventNoChange() { |
| this.fireItemsMoved(new ListMoveEvent(this, LIST_NAME, SOURCE_INDEX, SOURCE_INDEX, 1)); |
| } |
| |
| public void testFireItemsMovedList() { |
| this.fireItemsMoved(LIST_NAME, TARGET_INDEX, SOURCE_INDEX, 1); |
| } |
| |
| public void testFireItemsMovedListNoChange() { |
| this.fireItemsMoved(LIST_NAME, SOURCE_INDEX, SOURCE_INDEX, 1); |
| } |
| |
| public void testFireItemMovedList() { |
| this.fireItemMoved(LIST_NAME, TARGET_INDEX, SOURCE_INDEX); |
| } |
| |
| public void testFireListClearedEvent() { |
| this.fireListCleared(new ListClearEvent(this, LIST_NAME)); |
| } |
| |
| public void testFireListCleared() { |
| this.fireListCleared(LIST_NAME); |
| } |
| |
| public void testFireListChangedEvent() { |
| this.fireListChanged(new ListChangeEvent(this, LIST_NAME, Collections.emptyList())); |
| } |
| |
| public void testFireListChanged() { |
| this.fireListChanged(LIST_NAME, Collections.emptyList()); |
| } |
| |
| public void testAddItemToListIndex() { |
| List<String> list = new ArrayList<String>(); |
| list.add("foo"); |
| list.add("bar"); |
| list.add("baz"); |
| this.addItemToList(2, "joo", list, LIST_NAME); |
| } |
| |
| public void testAddItemToList() { |
| List<String> list = new ArrayList<String>(); |
| list.add("foo"); |
| list.add("bar"); |
| list.add("baz"); |
| this.addItemToList("joo", list, LIST_NAME); |
| } |
| |
| public void testAddItemsToListIndex() { |
| List<String> list = new ArrayList<String>(); |
| list.add("foo"); |
| list.add("bar"); |
| list.add("baz"); |
| this.addItemsToList(2, Collections.singletonList("joo"), list, LIST_NAME); |
| } |
| |
| public void testAddItemsToListIndexNoChange() { |
| List<String> list = new ArrayList<String>(); |
| list.add("foo"); |
| list.add("bar"); |
| list.add("baz"); |
| this.addItemsToList(2, Collections.<String>emptyList(), list, LIST_NAME); |
| } |
| |
| public void testAddItemsToList() { |
| List<String> list = new ArrayList<String>(); |
| list.add("foo"); |
| list.add("bar"); |
| list.add("baz"); |
| this.addItemsToList(Collections.singletonList("joo"), list, LIST_NAME); |
| } |
| |
| public void testAddItemsToListNoChange() { |
| List<String> list = new ArrayList<String>(); |
| list.add("foo"); |
| list.add("bar"); |
| list.add("baz"); |
| this.addItemsToList(Collections.<String>emptyList(), list, LIST_NAME); |
| } |
| |
| public void testRemoveItemFromListIndex() { |
| List<String> list = new ArrayList<String>(); |
| list.add("foo"); |
| list.add("bar"); |
| list.add("baz"); |
| this.removeItemFromList(1, list, LIST_NAME); |
| } |
| |
| public void testRemoveItemFromList() { |
| List<String> list = new ArrayList<String>(); |
| list.add("foo"); |
| list.add("bar"); |
| list.add("baz"); |
| this.removeItemFromList("bar", list, LIST_NAME); |
| } |
| |
| public void testRemoveItemsFromListIndex() { |
| List<String> list = new ArrayList<String>(); |
| list.add("foo"); |
| list.add("bar"); |
| list.add("baz"); |
| this.removeItemsFromList(1, 1, list, LIST_NAME); |
| } |
| |
| public void testRemoveItemsFromListIndexNoChange() { |
| List<String> list = new ArrayList<String>(); |
| list.add("foo"); |
| list.add("bar"); |
| list.add("baz"); |
| this.removeItemsFromList(2, 0, list, LIST_NAME); |
| } |
| |
| public void testRemoveItemsFromList() { |
| List<String> list = new ArrayList<String>(); |
| list.add("foo"); |
| list.add("bar"); |
| list.add("baz"); |
| this.removeItemsFromList(Collections.singletonList("bar"), list, LIST_NAME); |
| } |
| |
| public void testRemoveItemsFromListNoChange() { |
| List<String> list = new ArrayList<String>(); |
| list.add("foo"); |
| list.add("bar"); |
| list.add("baz"); |
| this.addItemsToList(Collections.<String>emptyList(), list, LIST_NAME); |
| } |
| |
| public void testRetainItemsInList() { |
| List<String> list = new ArrayList<String>(); |
| list.add("foo"); |
| list.add("bar"); |
| list.add("baz"); |
| this.retainItemsInList(new String[] {"bar", "baz"}, list, LIST_NAME); |
| } |
| |
| public void testReplaceItemInList() { |
| List<String> list = new ArrayList<String>(); |
| list.add("foo"); |
| list.add("bar"); |
| list.add("baz"); |
| this.replaceItemInList("bar", "xxx", list, LIST_NAME); |
| } |
| |
| public void testSetItemsInList() { |
| List<String> list = new ArrayList<String>(); |
| list.add("foo"); |
| list.add("bar"); |
| list.add("baz"); |
| this.setItemsInList(1, new String[] {"xxx"}, list, LIST_NAME); |
| } |
| |
| public void testMoveItemsInList() { |
| List<String> list = new ArrayList<String>(); |
| list.add("foo"); |
| list.add("bar"); |
| list.add("baz"); |
| list.add("xxx"); |
| list.add("yyy"); |
| list.add("zzz"); |
| this.moveItemsInList(2, 4, 2, list, LIST_NAME); |
| } |
| |
| public void testClearList() { |
| List<String> list = new ArrayList<String>(); |
| list.add("foo"); |
| list.add("bar"); |
| list.add("baz"); |
| this.clearList(list, LIST_NAME); |
| } |
| |
| public void testSynchronizeList() { |
| List<String> oldList = new ArrayList<String>(); |
| oldList.add("foo"); |
| oldList.add("bar"); |
| oldList.add("baz"); |
| oldList.add("xxx"); |
| oldList.add("yyy"); |
| oldList.add("zzz"); |
| List<String> newList = new ArrayList<String>(); |
| newList.add("foo"); |
| newList.add("ppp"); |
| newList.add("baz"); |
| newList.add("xxx"); |
| newList.add("qqq"); |
| this.synchronizeList(newList, oldList, LIST_NAME); |
| assertEquals(newList, oldList); |
| } |
| |
| // ***** tree |
| public void testFireNodeAddedTreeEvent() { |
| this.fireNodeAdded(new TreeAddEvent(this, TREE_NAME, OBJECT_PATH)); |
| } |
| |
| public void testFireNodeAddedTree() { |
| this.fireNodeAdded(TREE_NAME, OBJECT_PATH); |
| } |
| |
| public void testFireNodeRemovedTreeEvent() { |
| this.fireNodeRemoved(new TreeRemoveEvent(this, TREE_NAME, OBJECT_PATH)); |
| } |
| |
| public void testFireNodeRemovedTree() { |
| this.fireNodeRemoved(TREE_NAME, OBJECT_PATH); |
| } |
| |
| public void testFireTreeClearedEvent() { |
| this.fireTreeCleared(new TreeClearEvent(this, TREE_NAME)); |
| } |
| |
| public void testFireTreeCleared() { |
| this.fireTreeCleared(TREE_NAME); |
| } |
| |
| public void testFireTreeChangedEvent() { |
| this.fireTreeChanged(new TreeChangeEvent(this, TREE_NAME, OBJECT_PATH)); |
| } |
| |
| public void testFireTreeChanged() { |
| this.fireTreeChanged(TREE_NAME, OBJECT_PATH); |
| } |
| |
| public boolean testAttributeValueHasChanged(Object value1, Object value2) { |
| return this.attributeValueHasChanged(value1, value2); |
| } |
| |
| public boolean testAttributeValueHasNotChanged(Object value1, Object value2) { |
| return this.attributeValueHasNotChanged(value1, value2); |
| } |
| |
| // ***** misc |
| @Override |
| public TestModel clone() { |
| try { |
| return (TestModel) super.clone(); |
| } catch (CloneNotSupportedException ex) { |
| throw new InternalError(); |
| } |
| } |
| |
| public boolean testValuesAreDifferent(Object value1, Object value2) { |
| return this.valuesAreDifferent(value1, value2); |
| } |
| |
| public boolean testValuesAreEqual(Object value1, Object value2) { |
| return this.valuesAreEqual(value1, value2); |
| } |
| |
| public boolean testElementsAreDifferent(Iterable<?> iterable1, Iterable<?> iterable2) { |
| return this.getChangeSupport().elementsAreDifferent(iterable1, iterable2); |
| } |
| |
| public boolean testElementsAreEqual(Iterable<?> iterable1, Iterable<?> iterable2) { |
| return this.getChangeSupport().elementsAreEqual(iterable1, iterable2); |
| } |
| |
| @Override |
| public void toString(StringBuilder sb) { |
| sb.append(TEST_TO_STRING); |
| } |
| |
| } |
| |
| |
| // ********** serialization test ********** |
| public void testSerialization() throws java.io.IOException, ClassNotFoundException { |
| if (Tools.jvmIsSun()) { |
| // This test doesn't pass in the Eclipse build environment (Linux/IBM JVM) for some reason |
| this.verifySerialization(); |
| } |
| } |
| |
| private void verifySerialization() throws java.io.IOException, ClassNotFoundException { |
| LocalModel model1 = new LocalModel(); |
| Foo foo1 = new Foo(); |
| Bar bar1 = new Bar(); |
| Joo joo1 = new Joo(); |
| Jar jar1 = new Jar(); |
| model1.addStateChangeListener(foo1); |
| model1.addStateChangeListener(bar1); |
| model1.addListChangeListener("foo", joo1); |
| model1.addListChangeListener("foo", jar1); |
| |
| Iterable<EventListener> listeners1 = this.getListeners(model1, StateChangeListener.class, null); |
| Object[] listenersArray1 = ArrayTools.array(listeners1); |
| assertEquals(2, listenersArray1.length); |
| // the order of these could change... |
| assertEquals(Foo.class, listenersArray1[0].getClass()); |
| assertEquals(Bar.class, listenersArray1[1].getClass()); |
| |
| listeners1 = this.getListeners(model1, ListChangeListener.class, "foo"); |
| listenersArray1 = ArrayTools.array(listeners1); |
| assertEquals(2, listenersArray1.length); |
| // the order of these could change... |
| assertEquals(Joo.class, listenersArray1[0].getClass()); |
| assertEquals(Jar.class, listenersArray1[1].getClass()); |
| |
| LocalModel model2 = TestTools.serialize(model1); |
| |
| Iterable<EventListener> listeners2 = this.getListeners(model2, StateChangeListener.class, null); |
| Object[] listenersArray2 = ArrayTools.array(listeners2); |
| assertEquals(1, listenersArray2.length); |
| assertEquals(Foo.class, listenersArray2[0].getClass()); |
| |
| listeners2 = this.getListeners(model2, ListChangeListener.class, "foo"); |
| listenersArray2 = ArrayTools.array(listeners2); |
| assertEquals(1, listenersArray2.length); |
| assertEquals(Joo.class, listenersArray2[0].getClass()); |
| } |
| |
| private Iterable<EventListener> getListeners(LocalModel model, Class<? extends EventListener> listenerClass, String aspectName) { |
| return this.getListenerList(model, listenerClass, aspectName).getListeners(); |
| } |
| |
| @SuppressWarnings("unchecked") |
| private ListenerList<EventListener> getListenerList(LocalModel model, Class<? extends EventListener> listenerClass, String aspectName) { |
| ChangeSupport changeSupport = (ChangeSupport) ReflectionTools.getFieldValue(model, "changeSupport"); |
| return (ListenerList<EventListener>) ReflectionTools.executeMethod(changeSupport, "getListenerList_", new Class<?>[] {Class.class, String.class}, new Object[] {listenerClass, aspectName}); |
| } |
| |
| // we have to manually handle 'changeSupport' since AbstractModel is not Serializable |
| private static class LocalModel extends AbstractModel implements Serializable { |
| LocalModel() { |
| super(); |
| } |
| private synchronized void writeObject(ObjectOutputStream s) throws IOException { |
| s.defaultWriteObject(); |
| s.writeObject(this.changeSupport); |
| } |
| private void readObject(ObjectInputStream s) throws ClassNotFoundException, IOException { |
| s.defaultReadObject(); |
| this.changeSupport = (ChangeSupport) s.readObject(); |
| } |
| } |
| |
| private static class Foo implements Serializable, StateChangeListener { |
| Foo() { |
| super(); |
| } |
| public void stateChanged(StateChangeEvent event) { |
| // do nothing |
| } |
| } |
| |
| private static class Bar implements StateChangeListener { |
| Bar() { |
| super(); |
| } |
| public void stateChanged(StateChangeEvent event) { |
| // do nothing |
| } |
| } |
| |
| private static class Joo extends ListChangeAdapter implements Serializable { |
| Joo() { |
| super(); |
| } |
| } |
| |
| private static class Jar extends ListChangeAdapter { |
| Jar() { |
| super(); |
| } |
| } |
| |
| |
| // ********** bug(?) test ********** |
| |
| private static final String ISE_MESSAGE = "this object is no longer listening to localA"; |
| |
| /** |
| * Test the following situation: |
| * - both B and C are listening to A |
| * - C is also listening to B |
| * - when B receives an event from A, it will fire an event to C |
| * - when C receives an event from B, it will STOP listening to A |
| * - the event from B to C may be preceded or followed (depending on |
| * the hash positions of listeners) by an event from A to C: |
| * - if the A to C event comes first, no problem |
| * - but if the A to B event comes first, the A to C event should NOT happen |
| */ |
| public void testIndirectRemoveStateListener() { |
| this.verifyIndirectRemoveListener( |
| new NotifyCommand() { |
| public void notifyListeners(LocalA localA) { |
| localA.notifyStateListeners(); |
| } |
| } |
| ); |
| } |
| |
| public void testIndirectRemovePropertyListener() { |
| this.verifyIndirectRemoveListener( |
| new NotifyCommand() { |
| public void notifyListeners(LocalA localA) { |
| localA.notifyPropertyListeners(); |
| } |
| } |
| ); |
| } |
| |
| public void testIndirectRemoveCollectionListener() { |
| this.verifyIndirectRemoveListener( |
| new NotifyCommand() { |
| public void notifyListeners(LocalA localA) { |
| localA.notifyCollectionListeners(); |
| } |
| } |
| ); |
| } |
| |
| public void testIndirectRemoveListListener() { |
| this.verifyIndirectRemoveListener( |
| new NotifyCommand() { |
| public void notifyListeners(LocalA localA) { |
| localA.notifyListListeners(); |
| } |
| } |
| ); |
| } |
| |
| public void testIndirectRemoveTreeListener() { |
| this.verifyIndirectRemoveListener( |
| new NotifyCommand() { |
| public void notifyListeners(LocalA localA) { |
| localA.notifyTreeListeners(); |
| } |
| } |
| ); |
| } |
| |
| public void verifyIndirectRemoveListener(NotifyCommand command) { |
| LocalA localA = new LocalA(); |
| LocalB localB = new LocalB(localA); |
| |
| // build a bunch of LocalCs so at least one of them is notified AFTER the LocalB; |
| // using 1000 seemed to fail very consistently before ChangeSupport was fixed |
| LocalC[] localCs = new LocalC[1000]; |
| for (int i = localCs.length; i-- > 0; ) { |
| localCs[i] = new LocalC(localA, localB); |
| } |
| |
| boolean exCaught = false; |
| try { |
| command.notifyListeners(localA); |
| } catch (IllegalStateException ex) { |
| if (ex.getMessage() == ISE_MESSAGE) { |
| exCaught = true; |
| } else { |
| throw ex; |
| } |
| } |
| assertFalse(exCaught); |
| |
| for (int i = localCs.length; i-- > 0; ) { |
| assertFalse(localCs[i].isListeningToLocalA()); |
| } |
| } |
| |
| private interface NotifyCommand { |
| void notifyListeners(LocalA localA); |
| } |
| |
| /** |
| * This object simply fires a state change event. Both LocalB and LocalC |
| * will be listeners. |
| */ |
| private static class LocalA extends AbstractModel { |
| LocalA() { |
| super(); |
| } |
| void notifyStateListeners() { |
| this.fireStateChanged(); |
| } |
| void notifyPropertyListeners() { |
| this.firePropertyChanged("foo", 1, 2); |
| } |
| void notifyCollectionListeners() { |
| this.fireCollectionChanged("foo", Collections.emptySet()); |
| } |
| void notifyListListeners() { |
| this.fireListChanged("foo", Collections.emptyList()); |
| } |
| void notifyTreeListeners() { |
| this.fireTreeChanged("foo", Collections.emptySet()); |
| } |
| } |
| |
| /** |
| * This object will fire state change events whenever it receives |
| * a state change event from localA. |
| */ |
| private static class LocalB |
| extends AbstractModel |
| implements ChangeListener |
| { |
| LocalB(LocalA localA) { |
| super(); |
| localA.addChangeListener(this); |
| } |
| |
| public void stateChanged(StateChangeEvent e) { |
| this.fireStateChanged(); |
| } |
| |
| public void propertyChanged(PropertyChangeEvent evt) { |
| this.firePropertyChanged("bar", 1, 2); |
| } |
| |
| public void collectionChanged(CollectionChangeEvent e) { |
| this.fireCollectionChanged("bar", Collections.emptySet()); |
| } |
| public void collectionCleared(CollectionClearEvent e) {/*ignore*/} |
| public void itemsAdded(CollectionAddEvent e) {/*ignore*/} |
| public void itemsRemoved(CollectionRemoveEvent e) {/*ignore*/} |
| |
| public void listChanged(ListChangeEvent e) { |
| this.fireListChanged("bar", Collections.emptyList()); |
| } |
| public void listCleared(ListClearEvent e) {/*ignore*/} |
| public void itemsAdded(ListAddEvent e) {/*ignore*/} |
| public void itemsRemoved(ListRemoveEvent e) {/*ignore*/} |
| public void itemsReplaced(ListReplaceEvent e) {/*ignore*/} |
| public void itemsMoved(ListMoveEvent e) {/*ignore*/} |
| |
| public void treeChanged(TreeChangeEvent e) { |
| this.fireTreeChanged("bar", Collections.emptySet()); |
| } |
| public void treeCleared(TreeClearEvent e) {/*ignore*/} |
| public void nodeAdded(TreeAddEvent e) {/*ignore*/} |
| public void nodeRemoved(TreeRemoveEvent e) {/*ignore*/} |
| |
| } |
| |
| /** |
| * This object will listen to two other objects, localA and localB. |
| * If this object receives notification from localB, it will stop listening to |
| * localA. If this object receives notification from localA, it will check to |
| * see whether it still listening to localA. If this object is no longer |
| * listening to localA, it will complain about receiving the event and |
| * throw an exception. |
| */ |
| private static class LocalC |
| extends AbstractModel |
| implements ChangeListener |
| { |
| private LocalA localA; |
| private LocalB localB; |
| private boolean listeningToLocalA; |
| |
| LocalC(LocalA localA, LocalB localB) { |
| super(); |
| this.localA = localA; |
| this.localB = localB; |
| |
| localA.addChangeListener(this); |
| this.listeningToLocalA = true; |
| |
| localB.addChangeListener(this); |
| } |
| boolean isListeningToLocalA() { |
| return this.listeningToLocalA; |
| } |
| |
| public void stateChanged(StateChangeEvent e) { |
| Object source = e.getSource(); |
| if (source == this.localA) { |
| if ( ! this.listeningToLocalA) { |
| throw new IllegalStateException(ISE_MESSAGE); |
| } |
| } else if (source == this.localB) { |
| this.localA.removeChangeListener(this); |
| this.listeningToLocalA = false; |
| } else { |
| throw new IllegalStateException("bogus event source: " + source); |
| } |
| } |
| |
| public void propertyChanged(PropertyChangeEvent e) { |
| Object source = e.getSource(); |
| if (source == this.localA) { |
| if ( ! this.listeningToLocalA) { |
| throw new IllegalStateException(ISE_MESSAGE); |
| } |
| } else if (source == this.localB) { |
| this.localA.removeChangeListener(this); |
| this.listeningToLocalA = false; |
| } else { |
| throw new IllegalStateException("bogus event source: " + source); |
| } |
| } |
| |
| public void collectionChanged(CollectionChangeEvent e) { |
| Object source = e.getSource(); |
| if (source == this.localA) { |
| if ( ! this.listeningToLocalA) { |
| throw new IllegalStateException(ISE_MESSAGE); |
| } |
| } else if (source == this.localB) { |
| this.localA.removeChangeListener(this); |
| this.listeningToLocalA = false; |
| } else { |
| throw new IllegalStateException("bogus event source: " + source); |
| } |
| } |
| public void collectionCleared(CollectionClearEvent e) {/*ignore*/} |
| public void itemsAdded(CollectionAddEvent e) {/*ignore*/} |
| public void itemsRemoved(CollectionRemoveEvent e) {/*ignore*/} |
| |
| public void listChanged(ListChangeEvent e) { |
| Object source = e.getSource(); |
| if (source == this.localA) { |
| if ( ! this.listeningToLocalA) { |
| throw new IllegalStateException(ISE_MESSAGE); |
| } |
| } else if (source == this.localB) { |
| this.localA.removeChangeListener(this); |
| this.listeningToLocalA = false; |
| } else { |
| throw new IllegalStateException("bogus event source: " + source); |
| } |
| } |
| public void listCleared(ListClearEvent e) {/*ignore*/} |
| public void itemsAdded(ListAddEvent e) {/*ignore*/} |
| public void itemsRemoved(ListRemoveEvent e) {/*ignore*/} |
| public void itemsReplaced(ListReplaceEvent e) {/*ignore*/} |
| public void itemsMoved(ListMoveEvent e) {/*ignore*/} |
| |
| public void treeChanged(TreeChangeEvent e) { |
| Object source = e.getSource(); |
| if (source == this.localA) { |
| if ( ! this.listeningToLocalA) { |
| throw new IllegalStateException(ISE_MESSAGE); |
| } |
| } else if (source == this.localB) { |
| this.localA.removeChangeListener(this); |
| this.listeningToLocalA = false; |
| } else { |
| throw new IllegalStateException("bogus event source: " + source); |
| } |
| } |
| public void treeCleared(TreeClearEvent e) {/*ignore*/} |
| public void nodeAdded(TreeAddEvent e) {/*ignore*/} |
| public void nodeRemoved(TreeRemoveEvent e) {/*ignore*/} |
| |
| } |
| |
| } |