From d3d76e9101dddbc2a35bbcfb876f80b537c58b75 Mon Sep 17 00:00:00 2001 From: Cedric Dumoulin Date: Sun, 15 Dec 2013 22:21:07 +0100 Subject: bug 330199 - rename NotyfyingList to ObservableListView --- .../stackmodel/exprmatcher/ExpressionMatcher.java | 12 +- .../stackmodel/layers/impl/LayersStackImpl.java | 4 + .../stackmodel/layers/impl/RegExpLayerImpl.java | 6 +- .../layers/stackmodel/util/NotyfyingList.java | 341 ---------------- .../layers/stackmodel/util/ObservableListView.java | 343 ++++++++++++++++ .../exprmatcher/ExpressionMatcherTest.java | 16 +- ...LayerExpressionInitWithApplicationImplTest.java | 3 + .../stackmodel/util/FakeNotifyingListListener.java | 41 -- .../util/FakeObservableListListener.java | 41 ++ .../layers/stackmodel/util/NotyfyingListTest.java | 447 --------------------- .../layers/stackmodel/util/ObservableListTest.java | 447 +++++++++++++++++++++ 11 files changed, 855 insertions(+), 846 deletions(-) delete mode 100644 extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/NotyfyingList.java create mode 100644 extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/ObservableListView.java delete mode 100644 extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/FakeNotifyingListListener.java create mode 100644 extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/FakeObservableListListener.java delete mode 100644 extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/NotyfyingListTest.java create mode 100644 extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/ObservableListTest.java (limited to 'extraplugins') diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcher.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcher.java index 8d33a4547c9..9280527e5ae 100644 --- a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcher.java +++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcher.java @@ -34,7 +34,7 @@ import org.eclipse.gmf.runtime.notation.View; import org.eclipse.ocl.ParserException; import org.eclipse.ocl.ecore.OCL; import org.eclipse.papyrus.layers.stackmodel.LayersException; -import org.eclipse.papyrus.layers.stackmodel.util.NotyfyingList; +import org.eclipse.papyrus.layers.stackmodel.util.ObservableListView; import com.google.common.collect.Lists; @@ -57,7 +57,7 @@ public class ExpressionMatcher { * List of element matching the expression. * This class maintains the list. */ - protected NotyfyingList matchingElements; + protected ObservableListView matchingElements; /** * List of element used as starting point for search. @@ -75,7 +75,7 @@ public class ExpressionMatcher { this.expression = ""; this.searchRoots = Collections.emptyList(); // init matchingElements - matchingElements = new NotyfyingList(new ArrayList()); + matchingElements = new ObservableListView(new ArrayList()); } /** @@ -89,7 +89,7 @@ public class ExpressionMatcher { this.expression = ""; this.searchRoots = searchRoots; // init matchingElements - matchingElements = new NotyfyingList(new ArrayList()); + matchingElements = new ObservableListView(new ArrayList()); } /** @@ -112,7 +112,7 @@ public class ExpressionMatcher { */ public ExpressionMatcher(String expression, List searchRoots) throws LayersException { this.searchRoots = searchRoots; - matchingElements = new NotyfyingList(new ArrayList()); + matchingElements = new ObservableListView(new ArrayList()); // compute expr setExpression(expression); @@ -266,7 +266,7 @@ public class ExpressionMatcher { /** * @return the matchingElements */ - public NotyfyingList getMatchingElements() { + public ObservableListView getMatchingElements() { return matchingElements; } diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackImpl.java index ce18474b5a5..e5dcf98361c 100644 --- a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackImpl.java +++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayersStackImpl.java @@ -527,6 +527,10 @@ MinimalEObjectImpl.Container implements LayersStack { * @param addedLayer The added layer. */ protected void layerAdded(LayerExpression addedLayer) { + // Stop if there is no layer + if( addedLayer == null) { + return; + } // init the layer addedLayer.initLayer(this); diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerImpl.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerImpl.java index 965885ead09..ede42349c03 100644 --- a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerImpl.java +++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/layers/impl/RegExpLayerImpl.java @@ -41,7 +41,7 @@ import org.eclipse.papyrus.layers.stackmodel.layers.LayersStack; import org.eclipse.papyrus.layers.stackmodel.layers.RegExpLayer; import org.eclipse.papyrus.layers.stackmodel.notifier.DiagramViewEventNotifier; import org.eclipse.papyrus.layers.stackmodel.notifier.IDiagramViewEventListener; -import org.eclipse.papyrus.layers.stackmodel.util.NotyfyingList; +import org.eclipse.papyrus.layers.stackmodel.util.ObservableListView; import com.google.common.eventbus.Subscribe; @@ -419,7 +419,7 @@ public class RegExpLayerImpl extends AbstractLayerImpl implements RegExpLayer { } /** - * Listener on {@link NotyfyingList} eventBus. This method is called each time a change occurs in the + * Listener on {@link ObservableListView} eventBus. This method is called each time a change occurs in the * result of the expression. * When the result change, the list of attached views is updated accordingly. * @@ -427,7 +427,7 @@ public class RegExpLayerImpl extends AbstractLayerImpl implements RegExpLayer { * @param event */ @Subscribe - public void expressionResultChanged( NotyfyingList.NotifyingListEvent event) { + public void expressionResultChanged( ObservableListView.ObservableListEvent event) { System.out.println( this.getClass().getSimpleName() + ".expressionResultChanged()"); if( ! event.getAddedElements().isEmpty()) { diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/NotyfyingList.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/NotyfyingList.java deleted file mode 100644 index a07fe21e082..00000000000 --- a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/NotyfyingList.java +++ /dev/null @@ -1,341 +0,0 @@ -/***************************************************************************** - * Copyright (c) 2013 Cedric Dumoulin. - * - * - * 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: - * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation - * - *****************************************************************************/ - -package org.eclipse.papyrus.layers.stackmodel.util; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -import com.google.common.collect.ForwardingList; -import com.google.common.collect.Lists; -import com.google.common.eventbus.EventBus; - -/** - * A delegate list notifying of events on the delegated list. - * The following events are notified: - *
    - *
  • elements added
  • - *
  • elements removed
  • - *
  • - *
  • - *
- * @author cedric dumoulin - * - */ -public class NotyfyingList extends ForwardingList{ - - protected List delegate; - - protected EventBus eventBus = new EventBus(NotyfyingList.class.getName()); - - /** - * Constructor. - * - * @param delegate - */ - public NotyfyingList(List delegate) { - this.delegate = delegate; - } - - @Override - protected List delegate() { - return delegate; - } - - /** - * @return the eventBus - */ - public EventBus getEventBus() { - return eventBus; - } - - @Override - public boolean add(E element) { - boolean isModified = delegate().add( element); - if( isModified) { - eventBus.post(new NotifyingListEvent(element)); - } - - return isModified; - } - - @Override - public boolean addAll(Collection collection) { - boolean isModified = delegate().addAll(collection); - if( isModified) { - eventBus.post(new NotifyingListEvent(collection)); - } - - return isModified; - } - - @Override - public void add(int index, E element) { - delegate().add(index, element); - eventBus.post(new NotifyingListEvent(element)); - } - - @Override - public boolean addAll(int index, Collection elements) { - // TODO Auto-generated method stub - boolean isModified = delegate().addAll(index, elements); - if( isModified) { - eventBus.post(new NotifyingListEvent(elements)); - } - - return isModified; - } - - @Override - public E remove(int index) { - E removed = super.remove(index); - getEventBus().post( new NotifyingListEvent(null, removed)); - - return removed; - } - - @SuppressWarnings("unchecked") - @Override - public boolean remove(Object object) { - boolean isRemoved = super.remove(object); - if( isRemoved ) { - getEventBus().post( new NotifyingListEvent(null, (E)object)); - } - return isRemoved; - } - - /** - * - * @see com.google.common.collect.ForwardingCollection#removeAll(java.util.Collection) - * - * @param collection - * @return - */ - @Override - public boolean removeAll(Collection collection) { - // Compute the removed elements (for the events) - List removedElements = Lists.newArrayList(delegate()); - removedElements.retainAll(collection); - - // Do remove - boolean isRemoved = super.removeAll(collection); - if( isRemoved ) { - getEventBus().post( new NotifyingListEvent(null, (Collection) removedElements)); - } - return isRemoved; - } - - /** - * Reset the collection to the specified collection. - * Throw events containing the added and removed elements. - * - * @param collection - * @return - */ - public boolean resetTo(Collection collection ) { - - // Compute removed and added - Collection elementsToRemove = new ArrayList(); - Collection elementsToAdd = new ArrayList(); - - // Cached list of attached elements - Collection attachedElements = delegate(); - - // Compute added and removed elements. Walk both list 2 times. - // This could certainly be improved. - // TODO improve the algorithm - - // Compute added elements - for( E o : collection ) { - if( !attachedElements.contains(o)) { - elementsToAdd.add(o); - continue; - } - } - - // Compute removed elements - for( E o : attachedElements ) { - if( !collection.contains(o)) { - elementsToRemove.add(o); - continue; - } - } - - // Change the list - delegate().clear(); - delegate().addAll(collection); - - // Fire event - boolean isModified = !(elementsToAdd.isEmpty() && elementsToRemove.isEmpty() ); - if( isModified ) { - getEventBus().post( new NotifyingListEvent(elementsToAdd, elementsToRemove)); - } - - return isModified; - } - - /** - * Event used to specify that the list is changed - * @author cedric dumoulin - * - */ - public class NotifyingListEvent { - - Collection addedElements = Collections.emptyList(); - Collection removedElements = Collections.emptyList(); - - /** - * - * Constructor. - * - */ - public NotifyingListEvent() { - this.addedElements = Collections.emptyList(); - this.removedElements = Collections.emptyList(); - } - - /** - * - * Constructor. - * - */ - public NotifyingListEvent(Collection addedElements) { - if( addedElements!=null ) { - this.addedElements = addedElements; - } - else { - this.addedElements = Collections.emptyList(); - } - - this.removedElements = Collections.emptyList(); - } - - /** - * Constructor. - * - * @param addedElements added elements or null - * @param removedElements removed elements or null - */ - public NotifyingListEvent(Collection addedElements, Collection removedElements) { - if( addedElements!=null ) { - this.addedElements = addedElements; - } - else { - this.addedElements = Collections.emptyList(); - } - - if( removedElements != null ) { - this.removedElements = removedElements; - } - else { - this.removedElements = Collections.emptyList(); - } - } - - /** - * - * Constructor. - * - * @param addedElement An element added or null; - * @param removedElement An element added or null - */ - public NotifyingListEvent( E addedElement, E removedElement) { - - if( addedElement!=null ) { - addedElements = Collections.singletonList(addedElement); - } - else { - addedElements = Collections.emptyList(); - } - - if( removedElement != null ) { - removedElements = Collections.singletonList(removedElement); - } - else { - removedElements = Collections.emptyList(); - } - } - - /** - * - * Constructor. - * - * @param addedElement An element added or null; - */ - public NotifyingListEvent( E addedElement) { - - if( addedElement!=null ) { - addedElements = Collections.singletonList(addedElement); - } - else { - addedElements = Collections.emptyList(); - } - removedElements = Collections.emptyList(); - } - - /** - * @return the addedElements - */ - public Collection getAddedElements() { - return addedElements; - } - -// /** -// * @param addedElements the addedElements to set -// */ -// public void setAddedElements(List addedElements) { -// this.addedElements = addedElements; -// } -// -// /** -// * @param addedElements the addedElements to set -// */ -// public void setAddedElements(E addedElement) { -// this.addedElements = Collections.singletonList(addedElement); -// } - - /** - * @return the removedElements - */ - public Collection getRemovedElements() { - return removedElements; - } - -// /** -// * @param removedElements the removedElements to set -// */ -// public void setRemovedElements(List removedElements) { -// this.removedElements = removedElements; -// } -// -// /** -// * @param removedElements the removedElements to set -// */ -// public void setRemovedElements(E removedElement) { -// this.removedElements = Collections.singletonList(removedElement); -// } - } - - /** - * Return the underlying list. This can be used as an unnotifying version of the list. - * - * @return - */ - public List getUnnotifyingList() { - return delegate(); - - } -} diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/ObservableListView.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/ObservableListView.java new file mode 100644 index 00000000000..a7b8631b5a0 --- /dev/null +++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/src/org/eclipse/papyrus/layers/stackmodel/util/ObservableListView.java @@ -0,0 +1,343 @@ +/***************************************************************************** + * Copyright (c) 2013 Cedric Dumoulin. + * + * + * 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: + * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrus.layers.stackmodel.util; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +import com.google.common.collect.ForwardingList; +import com.google.common.collect.Lists; +import com.google.common.eventbus.EventBus; + +/** + * An observable list notifying of events on the delegated list. + * This view allows to observe a provided list. + * The following events are notified: + *
    + *
  • elements added
  • + *
  • elements removed
  • + *
  • + *
  • + *
+ * @author cedric dumoulin + * + */ +public class ObservableListView extends ForwardingList{ + + protected List delegate; + + protected EventBus eventBus = new EventBus(ObservableListView.class.getName()); + + /** + * Constructor. + * Build an observable list based on the provided list. + * + * @param delegate + */ + public ObservableListView(List delegate) { + this.delegate = delegate; + } + + @Override + protected List delegate() { + return delegate; + } + + /** + * @return the eventBus + */ + public EventBus getEventBus() { + return eventBus; + } + + @Override + public boolean add(E element) { + boolean isModified = delegate().add( element); + if( isModified) { + eventBus.post(new ObservableListEvent(element)); + } + + return isModified; + } + + @Override + public boolean addAll(Collection collection) { + boolean isModified = delegate().addAll(collection); + if( isModified) { + eventBus.post(new ObservableListEvent(collection)); + } + + return isModified; + } + + @Override + public void add(int index, E element) { + delegate().add(index, element); + eventBus.post(new ObservableListEvent(element)); + } + + @Override + public boolean addAll(int index, Collection elements) { + // TODO Auto-generated method stub + boolean isModified = delegate().addAll(index, elements); + if( isModified) { + eventBus.post(new ObservableListEvent(elements)); + } + + return isModified; + } + + @Override + public E remove(int index) { + E removed = super.remove(index); + getEventBus().post( new ObservableListEvent(null, removed)); + + return removed; + } + + @SuppressWarnings("unchecked") + @Override + public boolean remove(Object object) { + boolean isRemoved = super.remove(object); + if( isRemoved ) { + getEventBus().post( new ObservableListEvent(null, (E)object)); + } + return isRemoved; + } + + /** + * + * @see com.google.common.collect.ForwardingCollection#removeAll(java.util.Collection) + * + * @param collection + * @return + */ + @Override + public boolean removeAll(Collection collection) { + // Compute the removed elements (for the events) + List removedElements = Lists.newArrayList(delegate()); + removedElements.retainAll(collection); + + // Do remove + boolean isRemoved = super.removeAll(collection); + if( isRemoved ) { + getEventBus().post( new ObservableListEvent(null, (Collection) removedElements)); + } + return isRemoved; + } + + /** + * Reset the collection to the specified collection. + * Throw events containing the added and removed elements. + * + * @param collection + * @return + */ + public boolean resetTo(Collection collection ) { + + // Compute removed and added + Collection elementsToRemove = new ArrayList(); + Collection elementsToAdd = new ArrayList(); + + // Cached list of attached elements + Collection attachedElements = delegate(); + + // Compute added and removed elements. Walk both list 2 times. + // This could certainly be improved. + // TODO improve the algorithm + + // Compute added elements + for( E o : collection ) { + if( !attachedElements.contains(o)) { + elementsToAdd.add(o); + continue; + } + } + + // Compute removed elements + for( E o : attachedElements ) { + if( !collection.contains(o)) { + elementsToRemove.add(o); + continue; + } + } + + // Change the list + delegate().clear(); + delegate().addAll(collection); + + // Fire event + boolean isModified = !(elementsToAdd.isEmpty() && elementsToRemove.isEmpty() ); + if( isModified ) { + getEventBus().post( new ObservableListEvent(elementsToAdd, elementsToRemove)); + } + + return isModified; + } + + /** + * Event used to specify that the list is changed + * @author cedric dumoulin + * + */ + public class ObservableListEvent { + + Collection addedElements = Collections.emptyList(); + Collection removedElements = Collections.emptyList(); + + /** + * + * Constructor. + * + */ + public ObservableListEvent() { + this.addedElements = Collections.emptyList(); + this.removedElements = Collections.emptyList(); + } + + /** + * + * Constructor. + * + */ + public ObservableListEvent(Collection addedElements) { + if( addedElements!=null ) { + this.addedElements = addedElements; + } + else { + this.addedElements = Collections.emptyList(); + } + + this.removedElements = Collections.emptyList(); + } + + /** + * Constructor. + * + * @param addedElements added elements or null + * @param removedElements removed elements or null + */ + public ObservableListEvent(Collection addedElements, Collection removedElements) { + if( addedElements!=null ) { + this.addedElements = addedElements; + } + else { + this.addedElements = Collections.emptyList(); + } + + if( removedElements != null ) { + this.removedElements = removedElements; + } + else { + this.removedElements = Collections.emptyList(); + } + } + + /** + * + * Constructor. + * + * @param addedElement An element added or null; + * @param removedElement An element added or null + */ + public ObservableListEvent( E addedElement, E removedElement) { + + if( addedElement!=null ) { + addedElements = Collections.singletonList(addedElement); + } + else { + addedElements = Collections.emptyList(); + } + + if( removedElement != null ) { + removedElements = Collections.singletonList(removedElement); + } + else { + removedElements = Collections.emptyList(); + } + } + + /** + * + * Constructor. + * + * @param addedElement An element added or null; + */ + public ObservableListEvent( E addedElement) { + + if( addedElement!=null ) { + addedElements = Collections.singletonList(addedElement); + } + else { + addedElements = Collections.emptyList(); + } + removedElements = Collections.emptyList(); + } + + /** + * @return the addedElements + */ + public Collection getAddedElements() { + return addedElements; + } + +// /** +// * @param addedElements the addedElements to set +// */ +// public void setAddedElements(List addedElements) { +// this.addedElements = addedElements; +// } +// +// /** +// * @param addedElements the addedElements to set +// */ +// public void setAddedElements(E addedElement) { +// this.addedElements = Collections.singletonList(addedElement); +// } + + /** + * @return the removedElements + */ + public Collection getRemovedElements() { + return removedElements; + } + +// /** +// * @param removedElements the removedElements to set +// */ +// public void setRemovedElements(List removedElements) { +// this.removedElements = removedElements; +// } +// +// /** +// * @param removedElements the removedElements to set +// */ +// public void setRemovedElements(E removedElement) { +// this.removedElements = Collections.singletonList(removedElement); +// } + } + + /** + * Return the underlying list. This can be used as an unnotifying version of the list. + * + * @return + */ + public List getUnnotifyingList() { + return delegate(); + + } +} diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcherTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcherTest.java index 6f4ec02543c..8342bd85bf6 100644 --- a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcherTest.java +++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/exprmatcher/ExpressionMatcherTest.java @@ -35,8 +35,8 @@ import org.eclipse.gmf.runtime.notation.NotationPackage; import org.eclipse.gmf.runtime.notation.Shape; import org.eclipse.gmf.runtime.notation.View; import org.eclipse.papyrus.layers.stackmodel.LayersException; -import org.eclipse.papyrus.layers.stackmodel.util.FakeNotifyingListListener; -import org.eclipse.papyrus.layers.stackmodel.util.NotyfyingList; +import org.eclipse.papyrus.layers.stackmodel.util.FakeObservableListListener; +import org.eclipse.papyrus.layers.stackmodel.util.ObservableListView; import org.eclipse.uml2.uml.NamedElement; import org.junit.After; import org.junit.Before; @@ -312,7 +312,7 @@ public class ExpressionMatcherTest { int addedElementCount = 0; int expectedEventCount = 1; - FakeNotifyingListListener notifyingListListener = new FakeNotifyingListListener(); + FakeObservableListListener notifyingListListener = new FakeObservableListListener(); ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, diagram); expressionMatcher.getMatchingElements().getEventBus().register(notifyingListListener); @@ -325,7 +325,7 @@ public class ExpressionMatcherTest { // Assert assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size()); - NotyfyingList.NotifyingListEvent event = notifyingListListener.traces.get(0).notifier; + ObservableListView.ObservableListEvent event = notifyingListListener.traces.get(0).notifier; assertEquals("expected removed count", removedElementCount, event.getRemovedElements().size()); assertEquals("expected added count", addedElementCount, event.getAddedElements().size()); @@ -350,7 +350,7 @@ public class ExpressionMatcherTest { int expectedEventCount = 1; int viewsCount = diagram.getChildren().size(); - FakeNotifyingListListener notifyingListListener = new FakeNotifyingListListener(); + FakeObservableListListener notifyingListListener = new FakeObservableListListener(); ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, diagram); expressionMatcher.getMatchingElements().getEventBus().register(notifyingListListener); @@ -366,7 +366,7 @@ public class ExpressionMatcherTest { assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size()); - NotyfyingList.NotifyingListEvent event = notifyingListListener.traces.get(0).notifier; + ObservableListView.ObservableListEvent event = notifyingListListener.traces.get(0).notifier; assertEquals("expected removed count", removedElementCount, event.getRemovedElements().size()); assertEquals("expected added count", addedElementCount, event.getAddedElements().size()); @@ -391,7 +391,7 @@ public class ExpressionMatcherTest { int expectedEventCount = 1; int viewsCount = diagram.getChildren().size(); - FakeNotifyingListListener notifyingListListener = new FakeNotifyingListListener(); + FakeObservableListListener notifyingListListener = new FakeObservableListListener(); ExpressionMatcher expressionMatcher = new ExpressionMatcher(expression, diagram); expressionMatcher.getMatchingElements().getEventBus().register(notifyingListListener); @@ -407,7 +407,7 @@ public class ExpressionMatcherTest { assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size()); - NotyfyingList.NotifyingListEvent event = notifyingListListener.traces.get(0).notifier; + ObservableListView.ObservableListEvent event = notifyingListListener.traces.get(0).notifier; assertEquals("expected removed count", removedElementCount, event.getRemovedElements().size()); assertEquals("expected added count", addedElementCount, event.getAddedElements().size()); diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerExpressionInitWithApplicationImplTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerExpressionInitWithApplicationImplTest.java index 979a03aa816..f2c151717cc 100644 --- a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerExpressionInitWithApplicationImplTest.java +++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/layers/impl/LayerExpressionInitWithApplicationImplTest.java @@ -30,6 +30,7 @@ import org.eclipse.papyrus.layers.stackmodel.layers.TopLayerOperator; import org.eclipse.papyrus.layers.stackmodel.layers.util.LayersFactoryTestUtils; import org.junit.After; import org.junit.Before; +import org.junit.Ignore; import org.junit.Test; /** @@ -157,6 +158,7 @@ public class LayerExpressionInitWithApplicationImplTest { * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#isLayerEnabled()}. */ @Test + @Ignore public void testIsLayerEnabled() { fail("Not yet implemented"); } @@ -165,6 +167,7 @@ public class LayerExpressionInitWithApplicationImplTest { * Test method for {@link org.eclipse.papyrus.layers.stackmodel.layers.impl.LayerExpressionImpl#isBranchEnabled()}. */ @Test + @Ignore public void testIsBranchEnabled() { fail("Not yet implemented"); } diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/FakeNotifyingListListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/FakeNotifyingListListener.java deleted file mode 100644 index cfc45543aca..00000000000 --- a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/FakeNotifyingListListener.java +++ /dev/null @@ -1,41 +0,0 @@ -/***************************************************************************** - * Copyright (c) 2013 Cedric Dumoulin. - * - * - * 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: - * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation - * - *****************************************************************************/ - -package org.eclipse.papyrus.layers.stackmodel.util; - -import com.google.common.eventbus.Subscribe; - -/** - * A class listening on events, and recording them. - * - * @author cedric dumoulin - * - */ -public class FakeNotifyingListListener { - - /** - * Trace object tracking events - */ - public TriggeredEventTraces.NotifyingListEvent> traces = new TriggeredEventTraces.NotifyingListEvent>(); - - - /** - * Method listeneing to the list event. - * @param event - */ - @Subscribe - public void elementAddedToList(NotyfyingList.NotifyingListEvent event) { - traces.addTrace("elementAddedToList", event); - } -} diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/FakeObservableListListener.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/FakeObservableListListener.java new file mode 100644 index 00000000000..b9fa49ebb0e --- /dev/null +++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/FakeObservableListListener.java @@ -0,0 +1,41 @@ +/***************************************************************************** + * Copyright (c) 2013 Cedric Dumoulin. + * + * + * 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: + * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrus.layers.stackmodel.util; + +import com.google.common.eventbus.Subscribe; + +/** + * A class listening on events, and recording them. + * + * @author cedric dumoulin + * + */ +public class FakeObservableListListener { + + /** + * Trace object tracking events + */ + public TriggeredEventTraces.ObservableListEvent> traces = new TriggeredEventTraces.ObservableListEvent>(); + + + /** + * Method listeneing to the list event. + * @param event + */ + @Subscribe + public void elementAddedToList(ObservableListView.ObservableListEvent event) { + traces.addTrace("elementAddedToList", event); + } +} diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/NotyfyingListTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/NotyfyingListTest.java deleted file mode 100644 index 7179a150157..00000000000 --- a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/NotyfyingListTest.java +++ /dev/null @@ -1,447 +0,0 @@ -/***************************************************************************** - * Copyright (c) 2013 Cedric Dumoulin. - * - * - * 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: - * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation - * - *****************************************************************************/ - -package org.eclipse.papyrus.layers.stackmodel.util; - -import static org.junit.Assert.*; - -import java.util.Collection; -import java.util.Collections; -import java.util.List; - -import org.junit.After; -import org.junit.Before; -import org.junit.Test; - -import com.google.common.collect.Lists; - -/** - * @author dumoulin - * - */ -public class NotyfyingListTest { - - /** - * @throws java.lang.Exception - */ - @Before - public void setUp() throws Exception { - } - - /** - * @throws java.lang.Exception - */ - @After - public void tearDown() throws Exception { - } - - /** - * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotyfyingList#NotyfyingList(java.util.List)}. - */ - @Test - public void testNotyfyingList() { - - List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); - - NotyfyingList notyfyingList = new NotyfyingList(list); - - assertNotNull("Object created", notyfyingList); - } - - /** - * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotyfyingList#delegate()}. - */ - @Test - public void testDelegate() { - List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); - - NotyfyingList notyfyingList = new NotyfyingList(list); - - assertSame("delegate is set", list, notyfyingList.delegate() ); - } - - /** - * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotyfyingList#getEventBus()}. - */ - @Test - public void testGetEventBus() { - List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); - - NotyfyingList notyfyingList = new NotyfyingList(list); - - assertNotNull("eventBus found", notyfyingList.getEventBus() ); - } - - /** - * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotyfyingList#add(java.lang.Object)}. - */ - @Test - public void testAddE() { - List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); - String addedElement = "purple"; - int listSizeBefore = list.size(); - int expectedListSizeAfter = listSizeBefore+1; - - FakeNotifyingListListener notifyingListListener = new FakeNotifyingListListener(); - NotyfyingList notyfyingList = new NotyfyingList(list); - - notyfyingList.getEventBus().register(notifyingListListener ); - - // Action - notyfyingList.add(addedElement); - - // Assertions - assertSame("event propagated", 1, notifyingListListener.traces.size()); - assertTrue("event addedElement is correct", notifyingListListener.traces.get(0).notifier.getAddedElements().contains(addedElement)); - - Collection eventAddedElements = notifyingListListener.traces.get(0).notifier.getAddedElements(); - assertEquals("event elements size", 1 , eventAddedElements.size()); - - assertEquals("result list size", expectedListSizeAfter , notyfyingList.size()); - assertEquals("result list size", expectedListSizeAfter , list.size()); - } - - /** - * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotyfyingList#addAll(java.util.Collection)}. - */ - @Test - public void testAddAllCollectionOfQextendsE() { - List list = Lists.newArrayList( "red", "orange", "yellow"); - List addedElements = Lists.newArrayList( "green", "blue", "purple"); - int listSizeBefore = list.size(); - int expectedListSizeAfter = listSizeBefore+addedElements.size(); - - NotyfyingList notyfyingList = new NotyfyingList(list); - FakeNotifyingListListener notifyingListListener = new FakeNotifyingListListener(); - - notyfyingList.getEventBus().register(notifyingListListener ); - - // Action - notyfyingList.addAll(addedElements); - - assertSame("event propagated", 1, notifyingListListener.traces.size()); - - Collection eventAddedElements = notifyingListListener.traces.get(0).notifier.getAddedElements(); - assertEquals("event elements size", addedElements.size() , eventAddedElements.size()); - - assertEquals("result list size", expectedListSizeAfter , notyfyingList.size()); - assertEquals("result list size", expectedListSizeAfter , list.size()); - } - - /** - * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotyfyingList#add(int, java.lang.Object)}. - */ - @Test - public void testAddIntE() { - List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); - String addedElement = "purple"; - int listSizeBefore = list.size(); - int expectedListSizeAfter = listSizeBefore+1; - - FakeNotifyingListListener notifyingListListener = new FakeNotifyingListListener(); - NotyfyingList notyfyingList = new NotyfyingList(list); - - notyfyingList.getEventBus().register(notifyingListListener ); - - // Action - notyfyingList.add(3, addedElement); - - // Assertions - assertSame("event propagated", 1, notifyingListListener.traces.size()); - assertTrue("event addedElement is correct", notifyingListListener.traces.get(0).notifier.getAddedElements().contains(addedElement)); - - Collection eventAddedElements = notifyingListListener.traces.get(0).notifier.getAddedElements(); - assertEquals("event elements size", 1 , eventAddedElements.size()); - - assertEquals("result list size", expectedListSizeAfter , notyfyingList.size()); - assertEquals("result list size", expectedListSizeAfter , list.size()); - } - - /** - * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotyfyingList#addAll(int, java.util.Collection)}. - */ - @Test - public void testAddAllIntCollectionOfQextendsE() { - List list = Lists.newArrayList( "red", "orange", "yellow"); - List addedElements = Lists.newArrayList( "green", "blue", "purple"); - int listSizeBefore = list.size(); - int expectedListSizeAfter = listSizeBefore+addedElements.size(); - - NotyfyingList notyfyingList = new NotyfyingList(list); - FakeNotifyingListListener notifyingListListener = new FakeNotifyingListListener(); - - notyfyingList.getEventBus().register(notifyingListListener ); - - // Action - notyfyingList.addAll(2, addedElements); - - assertSame("event propagated", 1, notifyingListListener.traces.size()); - - Collection eventAddedElements = notifyingListListener.traces.get(0).notifier.getAddedElements(); - assertEquals("event elements size", addedElements.size() , eventAddedElements.size()); - - assertEquals("result list size", expectedListSizeAfter , notyfyingList.size()); - assertEquals("result list size", expectedListSizeAfter , list.size()); - } - - /** - * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotyfyingList#remove(int)}. - */ - @Test - public void testRemoveInt() { - List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); - String removedElement = "purple"; - int listSizeBefore = list.size(); - int expectedListSizeAfter = listSizeBefore-1; - - FakeNotifyingListListener notifyingListListener = new FakeNotifyingListListener(); - NotyfyingList notyfyingList = new NotyfyingList(list); - - notyfyingList.getEventBus().register(notifyingListListener ); - - // Action - notyfyingList.remove( removedElement); - - // Assertions - assertSame("event propagated", 1, notifyingListListener.traces.size()); - NotyfyingList.NotifyingListEvent event = notifyingListListener.traces.get(0).notifier; - assertTrue("event removesElement is correct", event.getRemovedElements().contains(removedElement)); - - assertEquals("addedElement size", 0, event.getAddedElements().size() ); - assertEquals("removedElement size", 1, event.getRemovedElements().size() ); - - assertEquals("result list size", expectedListSizeAfter , notyfyingList.size()); - assertEquals("result list size", expectedListSizeAfter , list.size()); - } - - /** - * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotyfyingList#remove(java.lang.Object)}. - */ - @Test - public void testRemoveObject() { - List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); - int removedIndex = 3; - String removedElement = list.get(removedIndex); - int listSizeBefore = list.size(); - int expectedListSizeAfter = listSizeBefore-1; - - FakeNotifyingListListener notifyingListListener = new FakeNotifyingListListener(); - NotyfyingList notyfyingList = new NotyfyingList(list); - - notyfyingList.getEventBus().register(notifyingListListener ); - - // Action - notyfyingList.remove( removedIndex); - - // Assertions - assertSame("event propagated", 1, notifyingListListener.traces.size()); - NotyfyingList.NotifyingListEvent event = notifyingListListener.traces.get(0).notifier; - assertTrue("event removesElement is correct", event.getRemovedElements().contains(removedElement)); - - assertEquals("addedElement size", 0, event.getAddedElements().size() ); - assertEquals("removedElement size", 1, event.getRemovedElements().size() ); - - assertEquals("result list size", expectedListSizeAfter , notyfyingList.size()); - assertEquals("result list size", expectedListSizeAfter , list.size()); - } - - /** - * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotyfyingList#removeAll(java.util.Collection)}. - */ - @Test - public void testRemoveAllCollectionOfQ() { - List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); - List elementsToRemove = Lists.newArrayList( "orange", "green", "purple"); - int listSizeBefore = list.size(); - int removedElementsCount = elementsToRemove.size(); - int expectedListSizeAfter = listSizeBefore-removedElementsCount; - - FakeNotifyingListListener notifyingListListener = new FakeNotifyingListListener(); - NotyfyingList notyfyingList = new NotyfyingList(list); - - notyfyingList.getEventBus().register(notifyingListListener ); - - // Action - notyfyingList.removeAll( elementsToRemove); - - // Assertions - assertSame("event propagated", 1, notifyingListListener.traces.size()); - - NotyfyingList.NotifyingListEvent event = notifyingListListener.traces.get(0).notifier; - assertTrue("event removesElement is correct", event.getRemovedElements().containsAll(elementsToRemove)); - - assertEquals("addedElement size", 0, event.getAddedElements().size() ); - assertEquals("removedElement size", removedElementsCount, event.getRemovedElements().size() ); - - assertEquals("result list size", expectedListSizeAfter , notyfyingList.size()); - assertEquals("result list size", expectedListSizeAfter , list.size()); - } - - /** - * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotyfyingList#removeAll(java.util.Collection)}. - */ - @Test - public void testRemoveAllCollectionOfQWithTooMuchElements() { - List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); - List elementsToRemove = Lists.newArrayList( "orange", "falseColor1", "green", "purple", "falseColor"); - int listSizeBefore = list.size(); - int removedElementsCount = elementsToRemove.size()-2; // 2 = falseColors - int expectedListSizeAfter = listSizeBefore-removedElementsCount; - - FakeNotifyingListListener notifyingListListener = new FakeNotifyingListListener(); - NotyfyingList notyfyingList = new NotyfyingList(list); - - notyfyingList.getEventBus().register(notifyingListListener ); - - // Action - notyfyingList.removeAll( elementsToRemove); - - // Assertions - assertSame("event propagated", 1, notifyingListListener.traces.size()); - - NotyfyingList.NotifyingListEvent event = notifyingListListener.traces.get(0).notifier; -// assertTrue("event removesElement is correct", event.getRemovedElements().containsAll(elementsToRemove)); - assertTrue("removed elements are from the required list", elementsToRemove.containsAll(event.getRemovedElements())); - - assertEquals("addedElement size", 0, event.getAddedElements().size() ); - assertEquals("removedElement size", removedElementsCount, event.getRemovedElements().size() ); - - assertEquals("result list size", expectedListSizeAfter , notyfyingList.size()); - assertEquals("result list size", expectedListSizeAfter , list.size()); - } - - /** - * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotyfyingList#resetTo(java.util.Collection)}. - */ - @Test - public void testResetTo() { - List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); - - List listToReset = Lists.newArrayList( "orange", "green", "purple", "falseColor"); - List expectedRemovedElement = Lists.newArrayList( "red", "yellow", "blue"); - List expectedAddedElement = Lists.newArrayList( "falseColor"); - - int expectedEventCount = 1; - - FakeNotifyingListListener notifyingListListener = new FakeNotifyingListListener(); - NotyfyingList notyfyingList = new NotyfyingList(list); - - notyfyingList.getEventBus().register(notifyingListListener ); - - // Action - notyfyingList.resetTo(listToReset); - - // Assertions - assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size()); - assertArrayEquals("List equals", listToReset.toArray(), notyfyingList.toArray()); - - NotyfyingList.NotifyingListEvent event = notifyingListListener.traces.get(0).notifier; - assertArrayEquals("Removed list ok", expectedRemovedElement.toArray(), event.getRemovedElements().toArray()); - assertArrayEquals("Added list ok", expectedAddedElement.toArray(), event.getAddedElements().toArray()); - } - - /** - * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotyfyingList#resetTo(java.util.Collection)}. - */ - @Test - public void testResetToNoAdded() { - List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); - - List listToReset = Lists.newArrayList( "orange", "green", "purple"); - List expectedRemovedElement = Lists.newArrayList( "red", "yellow", "blue"); - List expectedAddedElement = Collections.emptyList(); - - int expectedEventCount = 1; - - FakeNotifyingListListener notifyingListListener = new FakeNotifyingListListener(); - NotyfyingList notyfyingList = new NotyfyingList(list); - - notyfyingList.getEventBus().register(notifyingListListener ); - - // Action - notyfyingList.resetTo(listToReset); - - // Assertions - assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size()); - assertArrayEquals("List equals", listToReset.toArray(), notyfyingList.toArray()); - - NotyfyingList.NotifyingListEvent event = notifyingListListener.traces.get(0).notifier; - assertArrayEquals("Removed list ok", expectedRemovedElement.toArray(), event.getRemovedElements().toArray()); - assertArrayEquals("Added list ok", expectedAddedElement.toArray(), event.getAddedElements().toArray()); - } - - /** - * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotyfyingList#resetTo(java.util.Collection)}. - */ - @Test - public void testResetToWithAddition() { - List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); - - List listToReset = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple", "falseColor"); - List expectedRemovedElement = Collections.emptyList(); - List expectedAddedElement = Lists.newArrayList( "falseColor"); - - int expectedEventCount = 1; - - FakeNotifyingListListener notifyingListListener = new FakeNotifyingListListener(); - NotyfyingList notyfyingList = new NotyfyingList(list); - - notyfyingList.getEventBus().register(notifyingListListener ); - - // Action - notyfyingList.resetTo(listToReset); - - // Assertions - assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size()); - assertArrayEquals("List equals", listToReset.toArray(), notyfyingList.toArray()); - - NotyfyingList.NotifyingListEvent event = notifyingListListener.traces.get(0).notifier; - assertArrayEquals("Removed list ok", expectedRemovedElement.toArray(), event.getRemovedElements().toArray()); - assertArrayEquals("Added list ok", expectedAddedElement.toArray(), event.getAddedElements().toArray()); - } - - /** - * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.NotyfyingList#resetTo(java.util.Collection)}. - */ - @Test - public void testResetToNoChanges() { - List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); - - List listToReset = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); - List expectedRemovedElement = Collections.emptyList(); - List expectedAddedElement = Collections.emptyList(); - - // No change, no events - int expectedEventCount = 0; - - FakeNotifyingListListener notifyingListListener = new FakeNotifyingListListener(); - NotyfyingList notyfyingList = new NotyfyingList(list); - - notyfyingList.getEventBus().register(notifyingListListener ); - - // Action - notyfyingList.resetTo(listToReset); - - // Assertions - assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size()); - assertArrayEquals("List equals", listToReset.toArray(), notyfyingList.toArray()); - -// NotyfyingList.NotifyingListEvent event = notifyingListListener.traces.get(0).notifier; -// assertArrayEquals("Removed list ok", expectedRemovedElement.toArray(), event.getRemovedElements().toArray()); -// assertArrayEquals("Added list ok", expectedAddedElement.toArray(), event.getAddedElements().toArray()); - } - - - -} diff --git a/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/ObservableListTest.java b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/ObservableListTest.java new file mode 100644 index 00000000000..f27d9bdc95b --- /dev/null +++ b/extraplugins/layers/org.eclipse.papyrus.layers.stackmodel/test/org/eclipse/papyrus/layers/stackmodel/util/ObservableListTest.java @@ -0,0 +1,447 @@ +/***************************************************************************** + * Copyright (c) 2013 Cedric Dumoulin. + * + * + * 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: + * Cedric Dumoulin Cedric.dumoulin@lifl.fr - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrus.layers.stackmodel.util; + +import static org.junit.Assert.*; + +import java.util.Collection; +import java.util.Collections; +import java.util.List; + +import org.junit.After; +import org.junit.Before; +import org.junit.Test; + +import com.google.common.collect.Lists; + +/** + * @author cedric dumoulin + * + */ +public class ObservableListTest { + + /** + * @throws java.lang.Exception + */ + @Before + public void setUp() throws Exception { + } + + /** + * @throws java.lang.Exception + */ + @After + public void tearDown() throws Exception { + } + + /** + * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#ObservableList(java.util.List)}. + */ + @Test + public void testObservableList() { + + List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); + + ObservableListView notyfyingList = new ObservableListView(list); + + assertNotNull("Object created", notyfyingList); + } + + /** + * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#delegate()}. + */ + @Test + public void testDelegate() { + List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); + + ObservableListView notyfyingList = new ObservableListView(list); + + assertSame("delegate is set", list, notyfyingList.delegate() ); + } + + /** + * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#getEventBus()}. + */ + @Test + public void testGetEventBus() { + List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); + + ObservableListView notyfyingList = new ObservableListView(list); + + assertNotNull("eventBus found", notyfyingList.getEventBus() ); + } + + /** + * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#add(java.lang.Object)}. + */ + @Test + public void testAddE() { + List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); + String addedElement = "purple"; + int listSizeBefore = list.size(); + int expectedListSizeAfter = listSizeBefore+1; + + FakeObservableListListener notifyingListListener = new FakeObservableListListener(); + ObservableListView notyfyingList = new ObservableListView(list); + + notyfyingList.getEventBus().register(notifyingListListener ); + + // Action + notyfyingList.add(addedElement); + + // Assertions + assertSame("event propagated", 1, notifyingListListener.traces.size()); + assertTrue("event addedElement is correct", notifyingListListener.traces.get(0).notifier.getAddedElements().contains(addedElement)); + + Collection eventAddedElements = notifyingListListener.traces.get(0).notifier.getAddedElements(); + assertEquals("event elements size", 1 , eventAddedElements.size()); + + assertEquals("result list size", expectedListSizeAfter , notyfyingList.size()); + assertEquals("result list size", expectedListSizeAfter , list.size()); + } + + /** + * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#addAll(java.util.Collection)}. + */ + @Test + public void testAddAllCollectionOfQextendsE() { + List list = Lists.newArrayList( "red", "orange", "yellow"); + List addedElements = Lists.newArrayList( "green", "blue", "purple"); + int listSizeBefore = list.size(); + int expectedListSizeAfter = listSizeBefore+addedElements.size(); + + ObservableListView notyfyingList = new ObservableListView(list); + FakeObservableListListener notifyingListListener = new FakeObservableListListener(); + + notyfyingList.getEventBus().register(notifyingListListener ); + + // Action + notyfyingList.addAll(addedElements); + + assertSame("event propagated", 1, notifyingListListener.traces.size()); + + Collection eventAddedElements = notifyingListListener.traces.get(0).notifier.getAddedElements(); + assertEquals("event elements size", addedElements.size() , eventAddedElements.size()); + + assertEquals("result list size", expectedListSizeAfter , notyfyingList.size()); + assertEquals("result list size", expectedListSizeAfter , list.size()); + } + + /** + * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#add(int, java.lang.Object)}. + */ + @Test + public void testAddIntE() { + List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); + String addedElement = "purple"; + int listSizeBefore = list.size(); + int expectedListSizeAfter = listSizeBefore+1; + + FakeObservableListListener notifyingListListener = new FakeObservableListListener(); + ObservableListView notyfyingList = new ObservableListView(list); + + notyfyingList.getEventBus().register(notifyingListListener ); + + // Action + notyfyingList.add(3, addedElement); + + // Assertions + assertSame("event propagated", 1, notifyingListListener.traces.size()); + assertTrue("event addedElement is correct", notifyingListListener.traces.get(0).notifier.getAddedElements().contains(addedElement)); + + Collection eventAddedElements = notifyingListListener.traces.get(0).notifier.getAddedElements(); + assertEquals("event elements size", 1 , eventAddedElements.size()); + + assertEquals("result list size", expectedListSizeAfter , notyfyingList.size()); + assertEquals("result list size", expectedListSizeAfter , list.size()); + } + + /** + * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#addAll(int, java.util.Collection)}. + */ + @Test + public void testAddAllIntCollectionOfQextendsE() { + List list = Lists.newArrayList( "red", "orange", "yellow"); + List addedElements = Lists.newArrayList( "green", "blue", "purple"); + int listSizeBefore = list.size(); + int expectedListSizeAfter = listSizeBefore+addedElements.size(); + + ObservableListView notyfyingList = new ObservableListView(list); + FakeObservableListListener notifyingListListener = new FakeObservableListListener(); + + notyfyingList.getEventBus().register(notifyingListListener ); + + // Action + notyfyingList.addAll(2, addedElements); + + assertSame("event propagated", 1, notifyingListListener.traces.size()); + + Collection eventAddedElements = notifyingListListener.traces.get(0).notifier.getAddedElements(); + assertEquals("event elements size", addedElements.size() , eventAddedElements.size()); + + assertEquals("result list size", expectedListSizeAfter , notyfyingList.size()); + assertEquals("result list size", expectedListSizeAfter , list.size()); + } + + /** + * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#remove(int)}. + */ + @Test + public void testRemoveInt() { + List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); + String removedElement = "purple"; + int listSizeBefore = list.size(); + int expectedListSizeAfter = listSizeBefore-1; + + FakeObservableListListener notifyingListListener = new FakeObservableListListener(); + ObservableListView notyfyingList = new ObservableListView(list); + + notyfyingList.getEventBus().register(notifyingListListener ); + + // Action + notyfyingList.remove( removedElement); + + // Assertions + assertSame("event propagated", 1, notifyingListListener.traces.size()); + ObservableListView.ObservableListEvent event = notifyingListListener.traces.get(0).notifier; + assertTrue("event removesElement is correct", event.getRemovedElements().contains(removedElement)); + + assertEquals("addedElement size", 0, event.getAddedElements().size() ); + assertEquals("removedElement size", 1, event.getRemovedElements().size() ); + + assertEquals("result list size", expectedListSizeAfter , notyfyingList.size()); + assertEquals("result list size", expectedListSizeAfter , list.size()); + } + + /** + * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#remove(java.lang.Object)}. + */ + @Test + public void testRemoveObject() { + List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); + int removedIndex = 3; + String removedElement = list.get(removedIndex); + int listSizeBefore = list.size(); + int expectedListSizeAfter = listSizeBefore-1; + + FakeObservableListListener notifyingListListener = new FakeObservableListListener(); + ObservableListView notyfyingList = new ObservableListView(list); + + notyfyingList.getEventBus().register(notifyingListListener ); + + // Action + notyfyingList.remove( removedIndex); + + // Assertions + assertSame("event propagated", 1, notifyingListListener.traces.size()); + ObservableListView.ObservableListEvent event = notifyingListListener.traces.get(0).notifier; + assertTrue("event removesElement is correct", event.getRemovedElements().contains(removedElement)); + + assertEquals("addedElement size", 0, event.getAddedElements().size() ); + assertEquals("removedElement size", 1, event.getRemovedElements().size() ); + + assertEquals("result list size", expectedListSizeAfter , notyfyingList.size()); + assertEquals("result list size", expectedListSizeAfter , list.size()); + } + + /** + * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#removeAll(java.util.Collection)}. + */ + @Test + public void testRemoveAllCollectionOfQ() { + List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); + List elementsToRemove = Lists.newArrayList( "orange", "green", "purple"); + int listSizeBefore = list.size(); + int removedElementsCount = elementsToRemove.size(); + int expectedListSizeAfter = listSizeBefore-removedElementsCount; + + FakeObservableListListener notifyingListListener = new FakeObservableListListener(); + ObservableListView notyfyingList = new ObservableListView(list); + + notyfyingList.getEventBus().register(notifyingListListener ); + + // Action + notyfyingList.removeAll( elementsToRemove); + + // Assertions + assertSame("event propagated", 1, notifyingListListener.traces.size()); + + ObservableListView.ObservableListEvent event = notifyingListListener.traces.get(0).notifier; + assertTrue("event removesElement is correct", event.getRemovedElements().containsAll(elementsToRemove)); + + assertEquals("addedElement size", 0, event.getAddedElements().size() ); + assertEquals("removedElement size", removedElementsCount, event.getRemovedElements().size() ); + + assertEquals("result list size", expectedListSizeAfter , notyfyingList.size()); + assertEquals("result list size", expectedListSizeAfter , list.size()); + } + + /** + * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#removeAll(java.util.Collection)}. + */ + @Test + public void testRemoveAllCollectionOfQWithTooMuchElements() { + List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); + List elementsToRemove = Lists.newArrayList( "orange", "falseColor1", "green", "purple", "falseColor"); + int listSizeBefore = list.size(); + int removedElementsCount = elementsToRemove.size()-2; // 2 = falseColors + int expectedListSizeAfter = listSizeBefore-removedElementsCount; + + FakeObservableListListener notifyingListListener = new FakeObservableListListener(); + ObservableListView notyfyingList = new ObservableListView(list); + + notyfyingList.getEventBus().register(notifyingListListener ); + + // Action + notyfyingList.removeAll( elementsToRemove); + + // Assertions + assertSame("event propagated", 1, notifyingListListener.traces.size()); + + ObservableListView.ObservableListEvent event = notifyingListListener.traces.get(0).notifier; +// assertTrue("event removesElement is correct", event.getRemovedElements().containsAll(elementsToRemove)); + assertTrue("removed elements are from the required list", elementsToRemove.containsAll(event.getRemovedElements())); + + assertEquals("addedElement size", 0, event.getAddedElements().size() ); + assertEquals("removedElement size", removedElementsCount, event.getRemovedElements().size() ); + + assertEquals("result list size", expectedListSizeAfter , notyfyingList.size()); + assertEquals("result list size", expectedListSizeAfter , list.size()); + } + + /** + * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#resetTo(java.util.Collection)}. + */ + @Test + public void testResetTo() { + List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); + + List listToReset = Lists.newArrayList( "orange", "green", "purple", "falseColor"); + List expectedRemovedElement = Lists.newArrayList( "red", "yellow", "blue"); + List expectedAddedElement = Lists.newArrayList( "falseColor"); + + int expectedEventCount = 1; + + FakeObservableListListener notifyingListListener = new FakeObservableListListener(); + ObservableListView notyfyingList = new ObservableListView(list); + + notyfyingList.getEventBus().register(notifyingListListener ); + + // Action + notyfyingList.resetTo(listToReset); + + // Assertions + assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size()); + assertArrayEquals("List equals", listToReset.toArray(), notyfyingList.toArray()); + + ObservableListView.ObservableListEvent event = notifyingListListener.traces.get(0).notifier; + assertArrayEquals("Removed list ok", expectedRemovedElement.toArray(), event.getRemovedElements().toArray()); + assertArrayEquals("Added list ok", expectedAddedElement.toArray(), event.getAddedElements().toArray()); + } + + /** + * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#resetTo(java.util.Collection)}. + */ + @Test + public void testResetToNoAdded() { + List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); + + List listToReset = Lists.newArrayList( "orange", "green", "purple"); + List expectedRemovedElement = Lists.newArrayList( "red", "yellow", "blue"); + List expectedAddedElement = Collections.emptyList(); + + int expectedEventCount = 1; + + FakeObservableListListener notifyingListListener = new FakeObservableListListener(); + ObservableListView notyfyingList = new ObservableListView(list); + + notyfyingList.getEventBus().register(notifyingListListener ); + + // Action + notyfyingList.resetTo(listToReset); + + // Assertions + assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size()); + assertArrayEquals("List equals", listToReset.toArray(), notyfyingList.toArray()); + + ObservableListView.ObservableListEvent event = notifyingListListener.traces.get(0).notifier; + assertArrayEquals("Removed list ok", expectedRemovedElement.toArray(), event.getRemovedElements().toArray()); + assertArrayEquals("Added list ok", expectedAddedElement.toArray(), event.getAddedElements().toArray()); + } + + /** + * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#resetTo(java.util.Collection)}. + */ + @Test + public void testResetToWithAddition() { + List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); + + List listToReset = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple", "falseColor"); + List expectedRemovedElement = Collections.emptyList(); + List expectedAddedElement = Lists.newArrayList( "falseColor"); + + int expectedEventCount = 1; + + FakeObservableListListener notifyingListListener = new FakeObservableListListener(); + ObservableListView notyfyingList = new ObservableListView(list); + + notyfyingList.getEventBus().register(notifyingListListener ); + + // Action + notyfyingList.resetTo(listToReset); + + // Assertions + assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size()); + assertArrayEquals("List equals", listToReset.toArray(), notyfyingList.toArray()); + + ObservableListView.ObservableListEvent event = notifyingListListener.traces.get(0).notifier; + assertArrayEquals("Removed list ok", expectedRemovedElement.toArray(), event.getRemovedElements().toArray()); + assertArrayEquals("Added list ok", expectedAddedElement.toArray(), event.getAddedElements().toArray()); + } + + /** + * Test method for {@link org.eclipse.papyrus.layers.stackmodel.util.ObservableListView#resetTo(java.util.Collection)}. + */ + @Test + public void testResetToNoChanges() { + List list = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); + + List listToReset = Lists.newArrayList( "red", "orange", "yellow", "green", "blue", "purple"); + List expectedRemovedElement = Collections.emptyList(); + List expectedAddedElement = Collections.emptyList(); + + // No change, no events + int expectedEventCount = 0; + + FakeObservableListListener notifyingListListener = new FakeObservableListListener(); + ObservableListView notyfyingList = new ObservableListView(list); + + notyfyingList.getEventBus().register(notifyingListListener ); + + // Action + notyfyingList.resetTo(listToReset); + + // Assertions + assertSame("event propagated", expectedEventCount, notifyingListListener.traces.size()); + assertArrayEquals("List equals", listToReset.toArray(), notyfyingList.toArray()); + +// ObservableList.NotifyingListEvent event = notifyingListListener.traces.get(0).notifier; +// assertArrayEquals("Removed list ok", expectedRemovedElement.toArray(), event.getRemovedElements().toArray()); +// assertArrayEquals("Added list ok", expectedAddedElement.toArray(), event.getAddedElements().toArray()); + } + + + +} -- cgit v1.2.3