FIXED - bug 245183: [Databinding] ObservableList could do a == check before delegating to the wrapped list
https://bugs.eclipse.org/bugs/show_bug.cgi?id=245183
diff --git a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/beans/BeanObservableListDecoratorTest.java b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/beans/BeanObservableListDecoratorTest.java
index 7d4ff06..c923d28 100644
--- a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/beans/BeanObservableListDecoratorTest.java
+++ b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/beans/BeanObservableListDecoratorTest.java
@@ -80,6 +80,21 @@
 		assertTrue(decorator.equals(decorator));
 	}
 
+	public void testEquals_SameClassDelegatesToDelegateObservables() {
+		IObservableList delegate = new WritableList() {
+			public boolean equals(Object o) {
+				return o == this;
+			}
+		};
+		Bean bean = new Bean();
+		decorator = new BeanObservableListDecorator(delegate, new WritableValue(
+				bean, Object.class), propertyDescriptor);
+		BeanObservableListDecorator otherDecorator = new BeanObservableListDecorator(
+				delegate, new WritableValue(bean, Object.class),
+				propertyDescriptor);
+		assertTrue(decorator.equals(otherDecorator));
+	}
+
 	public static Test suite() {
 		TestSuite suite = new TestSuite(BeanObservableListDecoratorTest.class.getName());
 		suite.addTestSuite(BeanObservableListDecoratorTest.class);
diff --git a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/beans/BeanObservableMapDecoratorTest.java b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/beans/BeanObservableMapDecoratorTest.java
index a846107..514c29a 100644
--- a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/beans/BeanObservableMapDecoratorTest.java
+++ b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/beans/BeanObservableMapDecoratorTest.java
@@ -70,4 +70,18 @@
 				new Bean(), Object.class), propertyDescriptor);
 		assertTrue(decorator.equals(decorator));
 	}
+
+	public void testEquals_SameClassDelegatesToDelegateObservables() {
+		IObservableMap delegate = new WritableMap() {
+			public boolean equals(Object o) {
+				return o == this;
+			}
+		};
+		Bean bean = new Bean();
+		decorator = new BeanObservableMapDecorator(delegate, bean,
+				propertyDescriptor);
+		BeanObservableMapDecorator otherDecorator = new BeanObservableMapDecorator(
+				delegate, bean, propertyDescriptor);
+		assertTrue(decorator.equals(otherDecorator));
+	}
 }
diff --git a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/beans/BeanObservableSetDecoratorTest.java b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/beans/BeanObservableSetDecoratorTest.java
index 72d0264..924b139 100644
--- a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/beans/BeanObservableSetDecoratorTest.java
+++ b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/beans/BeanObservableSetDecoratorTest.java
@@ -72,4 +72,18 @@
 				new Bean(), Object.class), propertyDescriptor);
 		assertTrue(decorator.equals(decorator));
 	}
+
+	public void testEquals_SameClassDelegatesToDelegateObservables() {
+		IObservableSet delegate = new WritableSet() {
+			public boolean equals(Object o) {
+				return o == this;
+			}
+		};
+		Bean bean = new Bean();
+		decorator = new BeanObservableSetDecorator(delegate, bean,
+				propertyDescriptor);
+		BeanObservableSetDecorator otherDecorator = new BeanObservableSetDecorator(
+				delegate, bean, propertyDescriptor);
+		assertTrue(decorator.equals(otherDecorator));
+	}
 }
diff --git a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/beans/BeanObservableValueDecoratorTest.java b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/beans/BeanObservableValueDecoratorTest.java
index e1969da..718688d 100644
--- a/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/beans/BeanObservableValueDecoratorTest.java
+++ b/tests/org.eclipse.jface.tests.databinding/src/org/eclipse/core/tests/internal/databinding/beans/BeanObservableValueDecoratorTest.java
@@ -72,4 +72,18 @@
 		decorator = new BeanObservableValueDecorator(delegate, new WritableValue(bean, Object.class), propertyDescriptor);
 		assertTrue(decorator.equals(decorator));
 	}
+
+	public void testEquals_SameClassDelegatesToDelegateObservables() {
+		IObservableValue delegate = new WritableValue() {
+			public boolean equals(Object o) {
+				return o == this;
+			}
+		};
+		decorator = new BeanObservableValueDecorator(delegate,
+				new WritableValue(bean, Object.class), propertyDescriptor);
+		BeanObservableValueDecorator otherDecorator = new BeanObservableValueDecorator(
+				delegate, new WritableValue(bean, Object.class),
+				propertyDescriptor);
+		assertTrue(decorator.equals(otherDecorator));
+	}
 }