blob: 2507db4f25cd99ca6f9425099f0394194a4678b9 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2006 Brad Reynolds 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:
* Brad Reynolds - initial API and implementation
******************************************************************************/
package org.eclipse.core.tests.databinding.observable.value;
import junit.framework.TestCase;
import org.eclipse.core.databinding.observable.Realm;
import org.eclipse.core.databinding.observable.value.AbstractVetoableValue;
import org.eclipse.core.databinding.observable.value.ValueDiff;
import org.eclipse.jface.databinding.conformance.util.CurrentRealm;
import org.eclipse.jface.databinding.conformance.util.RealmTester;
/**
* @since 3.2
*/
public class AbstractVetoableValueTest extends TestCase {
public void testSetValueInvokesDoSetApprovedValue() throws Exception {
class VetoableValue extends VetoableValueStub {
int count;
Object value;
VetoableValue(Realm realm) {
super(realm);
}
protected void doSetApprovedValue(Object value) {
count++;
this.value = value;
}
}
Realm realm = new CurrentRealm(true);
VetoableValue vetoableValue = new VetoableValue(realm);
assertEquals(0, vetoableValue.count);
assertEquals(null, vetoableValue.value);
Object value = new Object();
vetoableValue.setValue(value);
assertEquals(1, vetoableValue.count);
assertEquals(value, vetoableValue.value);
}
public void testFireValueChangeRealmChecks() throws Exception {
RealmTester.exerciseCurrent(new Runnable() {
public void run() {
VetoableValueStub observable = new VetoableValueStub();
observable.fireValueChanging(null);
}
});
}
private static class VetoableValueStub extends AbstractVetoableValue {
VetoableValueStub() {
this(Realm.getDefault());
}
VetoableValueStub(Realm realm) {
super(realm);
}
protected void doSetApprovedValue(Object value) {
}
protected Object doGetValue() {
return null;
}
public Object getValueType() {
return null;
}
protected boolean fireValueChanging(ValueDiff diff) {
return super.fireValueChanging(diff);
}
}
}