1 /******************************************************************************* 2 * Copyright (c) 2008 Matthew Hall and others. 3 * 4 * This program and the accompanying materials 5 * are made available under the terms of the Eclipse Public License 2.0 6 * which accompanies this distribution, and is available at 7 * https://www.eclipse.org/legal/epl-2.0/ 8 * 9 * SPDX-License-Identifier: EPL-2.0 10 * 11 * Contributors: 12 * Matthew Hall - initial API and implementation (bug 215531) 13 * Matthew Hall - bug 213145 14 ******************************************************************************/ 15 16 package org.eclipse.jface.tests.internal.databinding.viewers; 17 18 import org.eclipse.core.databinding.observable.IObservable; 19 import org.eclipse.core.databinding.observable.IObservableCollection; 20 import org.eclipse.core.databinding.observable.Realm; 21 import org.eclipse.core.databinding.observable.set.IObservableSet; 22 import org.eclipse.jface.databinding.conformance.MutableObservableSetContractTest; 23 import org.eclipse.jface.databinding.conformance.delegate.AbstractObservableCollectionContractDelegate; 24 import org.eclipse.jface.internal.databinding.viewers.ObservableViewerElementSet; 25 import org.eclipse.jface.viewers.IElementComparer; 26 27 import junit.framework.TestSuite; 28 29 public class ObservableViewerElementSetTest { addConformanceTest(TestSuite suite)30 public static void addConformanceTest(TestSuite suite) { 31 suite.addTest(MutableObservableSetContractTest.suite(new Delegate())); 32 } 33 34 private static class Delegate extends 35 AbstractObservableCollectionContractDelegate<Object> { 36 37 @Override createObservableCollection(Realm realm, int elementCount)38 public IObservableCollection<Object> createObservableCollection(Realm realm, 39 int elementCount) { 40 ObservableViewerElementSet<Object> set = new ObservableViewerElementSet<>(realm, 41 Object.class, new IdentityElementComparer()); 42 for (int i = 0; i < elementCount; i++) 43 set.add(createElement(set)); 44 return set; 45 } 46 47 @Override createElement(IObservableCollection<Object> collection)48 public Object createElement(IObservableCollection<Object> collection) { 49 return new Object(); 50 } 51 52 @Override change(IObservable observable)53 public void change(IObservable observable) { 54 @SuppressWarnings("unchecked") 55 IObservableSet<Object> set = (IObservableSet<Object>) observable; 56 set.add(createElement(set)); 57 } 58 59 @Override getElementType(IObservableCollection<Object> collection)60 public Object getElementType(IObservableCollection<Object> collection) { 61 return Object.class; 62 } 63 } 64 65 private static class IdentityElementComparer implements IElementComparer { 66 @Override equals(Object a, Object b)67 public boolean equals(Object a, Object b) { 68 return a == b; 69 } 70 71 @Override hashCode(Object element)72 public int hashCode(Object element) { 73 return System.identityHashCode(element); 74 } 75 } 76 } 77