blob: 5a7d15817f862e4143ac18c2e1d010a43ae9e774 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006, 2008 IBM Corporation and others.
* 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:
* IBM Corporation - initial API and implementation
* Brad Reynolds - bug 164653, 147515
* Matthew Hall - bug 213145
*******************************************************************************/
package org.eclipse.core.tests.databinding.observable.list;
import java.util.ArrayList;
import java.util.Collections;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.eclipse.core.databinding.observable.IObservable;
import org.eclipse.core.databinding.observable.IObservableCollection;
import org.eclipse.core.databinding.observable.Realm;
import org.eclipse.core.databinding.observable.list.WritableList;
import org.eclipse.jface.databinding.conformance.MutableObservableListContractTest;
import org.eclipse.jface.databinding.conformance.delegate.AbstractObservableCollectionContractDelegate;
import org.eclipse.jface.databinding.conformance.util.CurrentRealm;
import org.eclipse.jface.databinding.conformance.util.RealmTester;
import org.eclipse.jface.databinding.swt.SWTObservables;
import org.eclipse.swt.widgets.Display;
/**
* @since 3.2
*/
public class WritableListTest extends TestCase {
protected void tearDown() throws Exception {
RealmTester.setDefault(null);
}
public void testSetRealmChecks() throws Exception {
RealmTester.exerciseCurrent(new Runnable() {
public void run() {
WritableList list = new WritableList();
list.add("");
list.set(0, "");
}
});
}
public void testAddRealmChecks() throws Exception {
RealmTester.exerciseCurrent(new Runnable() {
public void run() {
WritableList list = new WritableList();
list.add("");
}
});
}
public void testAddByIndexRealmChecks() throws Exception {
RealmTester.exerciseCurrent(new Runnable() {
public void run() {
WritableList list = new WritableList();
list.add(0, "");
}
});
}
public void testAddAllRealmChecks() throws Exception {
RealmTester.exerciseCurrent(new Runnable() {
public void run() {
WritableList list = new WritableList();
list.addAll(Collections.EMPTY_LIST);
}
});
}
public void testAddAllByIndexRealmChecks() throws Exception {
RealmTester.exerciseCurrent(new Runnable() {
public void run() {
WritableList list = new WritableList();
list.addAll(0, Collections.EMPTY_LIST);
}
});
}
public void testRemoveRealmChecks() throws Exception {
RealmTester.setDefault(new CurrentRealm(true));
final WritableList list = new WritableList();
list.add("");
list.add("");
RealmTester.exerciseCurrent(new Runnable() {
public void run() {
list.remove("");
}
});
RealmTester.setDefault(null);
}
public void testRemoveByIndexRealmChecks() throws Exception {
RealmTester.setDefault(new CurrentRealm(true));
final WritableList list = new WritableList();
list.add("");
list.add("");
RealmTester.exerciseCurrent(new Runnable() {
public void run() {
list.remove(list.size() - 1);
}
});
RealmTester.setDefault(null);
}
public void testRemoveAllRealmChecks() throws Exception {
RealmTester.exerciseCurrent(new Runnable() {
public void run() {
WritableList list = new WritableList();
list.removeAll(Collections.EMPTY_LIST);
}
});
}
public void testRetainAllRealmChecks() throws Exception {
RealmTester.exerciseCurrent(new Runnable() {
public void run() {
WritableList list = new WritableList();
list.retainAll(Collections.EMPTY_LIST);
}
});
}
public void testClearRealmChecks() throws Exception {
RealmTester.exerciseCurrent(new Runnable() {
public void run() {
WritableList list = new WritableList();
list.clear();
}
});
}
public void testNullElementType() throws Exception {
RealmTester.setDefault(SWTObservables.getRealm(Display.getDefault()));
WritableList writableList = new WritableList();
assertNull(writableList.getElementType());
writableList = new WritableList(Realm.getDefault());
assertNull(writableList.getElementType());
}
public void testWithElementType() throws Exception {
RealmTester.setDefault(SWTObservables.getRealm(Display.getDefault()));
Object elementType = String.class;
WritableList list = WritableList.withElementType(elementType);
assertNotNull(list);
assertEquals(Realm.getDefault(), list.getRealm());
assertEquals(elementType, list.getElementType());
}
public static Test suite() {
TestSuite suite = new TestSuite(WritableListTest.class.getName());
suite.addTestSuite(WritableListTest.class);
suite.addTest(MutableObservableListContractTest.suite(new Delegate()));
return suite;
}
/* package */static class Delegate extends
AbstractObservableCollectionContractDelegate {
public Object createElement(IObservableCollection collection) {
return String.valueOf(collection.size() + 1);
}
public Object getElementType(IObservableCollection collection) {
return String.class;
}
public IObservableCollection createObservableCollection(Realm realm,
final int itemCount) {
WritableList observable = new WritableList(realm, new ArrayList(), String.class);
for (int i = 0; i < itemCount; i++) {
observable.add(String.valueOf(i));
}
return observable;
}
public void change(IObservable observable) {
((WritableList) observable).add("");
}
}
}