blob: d67acd877929c98b1965fc4b9ac8dbe23177ecdd [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2008 Matthew Hall 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:
* Matthew Hall - initial API and implementation (bug 254524)
******************************************************************************/
package org.eclipse.core.tests.databinding;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.eclipse.core.databinding.Binding;
import org.eclipse.core.databinding.DataBindingContext;
import org.eclipse.core.databinding.observable.IObservable;
import org.eclipse.core.databinding.observable.value.IObservableValue;
import org.eclipse.core.databinding.observable.value.WritableValue;
import org.eclipse.jface.tests.databinding.AbstractDefaultRealmTestCase;
import org.junit.Before;
import org.junit.Test;
public class BindingTest extends AbstractDefaultRealmTestCase {
private IObservable target;
private IObservable model;
private DataBindingContext dbc;
@Before
public void setUp() throws Exception {
super.setUp();
target = WritableValue.withValueType(String.class);
model = WritableValue.withValueType(String.class);
dbc = new DataBindingContext();
}
@Test
public void testDisposeTargetDisposesBinding() {
Binding binding = createBinding();
assertFalse(binding.isDisposed());
target.dispose();
assertTrue(binding.isDisposed());
}
@Test
public void testDisposeModelDisposesBinding() {
Binding binding = createBinding();
assertFalse(binding.isDisposed());
model.dispose();
assertTrue(binding.isDisposed());
}
@Test
public void testPreDisposedTarget_FiresIllegalArgumentException() {
try {
target.dispose();
createBinding();
fail("Expected IllegalArgumentException");
} catch (IllegalArgumentException expected) {
}
}
@Test
public void testPreDisposedModel_FiresIllegalArgumentException() {
try {
model.dispose();
createBinding();
fail("Expected IllegalArgumentException");
} catch (IllegalArgumentException expected) {
}
}
@Test
public void testDisposeModelThenBinding() {
Binding binding = createBinding();
model.dispose();
binding.dispose();
}
@Test
public void testDisposeTargetThenBinding() {
Binding binding = createBinding();
target.dispose();
binding.dispose();
}
@Test
public void testDisposeObservablesThenBinding() {
Binding binding = createBinding();
model.dispose();
target.dispose();
binding.dispose();
}
@Test
public void testDisposeBindingThenModel() {
Binding binding = createBinding();
binding.dispose();
model.dispose();
}
@Test
public void testDisposeBindingThenTarget() {
Binding binding = createBinding();
binding.dispose();
target.dispose();
}
@Test
public void testDisposeBindingThenObservables() {
Binding binding = createBinding();
binding.dispose();
model.dispose();
target.dispose();
}
private Binding createBinding() {
Binding binding = new BindingStub(target, model);
binding.init(dbc);
return binding;
}
private static class BindingStub extends Binding {
BindingStub(IObservable target, IObservable model) {
super(target, model);
}
@Override
public IObservableValue getValidationStatus() {
return null;
}
@Override
protected void postInit() {
}
@Override
protected void preInit() {
}
@Override
public void updateModelToTarget() {
}
@Override
public void updateTargetToModel() {
}
@Override
public void validateModelToTarget() {
}
@Override
public void validateTargetToModel() {
}
}
}