001: /*******************************************************************************
002: * Copyright (c) 2007 Bob Smith and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * Bob Smith - initial API and implementation (bug 198880)
010: ******************************************************************************/package org.eclipse.core.tests.databinding;
011:
012: import org.eclipse.core.databinding.DataBindingContext;
013: import org.eclipse.core.databinding.ObservablesManager;
014: import org.eclipse.core.databinding.observable.IChangeListener;
015: import org.eclipse.core.databinding.observable.IStaleListener;
016: import org.eclipse.core.databinding.observable.Realm;
017: import org.eclipse.core.databinding.observable.value.IObservableValue;
018: import org.eclipse.core.databinding.observable.value.IValueChangeListener;
019: import org.eclipse.jface.tests.databinding.AbstractDefaultRealmTestCase;
020:
021: /**
022: * @since 3.2
023: *
024: */
025: public class ObservablesManagerTest extends
026: AbstractDefaultRealmTestCase {
027: private DataBindingContext dbc;
028:
029: /*
030: * (non-Javadoc)
031: *
032: * @see org.eclipse.jface.tests.databinding.AbstractDefaultRealmTestCase#setUp()
033: */
034: protected void setUp() throws Exception {
035: super .setUp();
036:
037: dbc = new DataBindingContext();
038:
039: }
040:
041: /*
042: * (non-Javadoc)
043: *
044: * @see org.eclipse.jface.tests.databinding.AbstractDefaultRealmTestCase#tearDown()
045: */
046: protected void tearDown() throws Exception {
047: if (dbc != null) {
048: dbc.dispose();
049: }
050: super .tearDown();
051: }
052:
053: public void testOnlyModelIsDisposed() throws Exception {
054:
055: FlagOnDisposeObservableValue targetOv = new FlagOnDisposeObservableValue();
056: FlagOnDisposeObservableValue modelOv = new FlagOnDisposeObservableValue();
057: dbc.bindValue(targetOv, modelOv, null, null);
058:
059: ObservablesManager observablesManager = new ObservablesManager();
060:
061: observablesManager.addObservablesFromContext(dbc, false, true);
062: observablesManager.dispose();
063:
064: assertFalse(targetOv.disposeCalled);
065: assertTrue(modelOv.disposeCalled);
066: }
067:
068: public void testOnlyTargetIsDisposed() throws Exception {
069:
070: FlagOnDisposeObservableValue targetOv = new FlagOnDisposeObservableValue();
071: FlagOnDisposeObservableValue modelOv = new FlagOnDisposeObservableValue();
072: dbc.bindValue(targetOv, modelOv, null, null);
073:
074: ObservablesManager observablesManager = new ObservablesManager();
075:
076: observablesManager.addObservablesFromContext(dbc, true, false);
077: observablesManager.dispose();
078:
079: assertTrue(targetOv.disposeCalled);
080: assertFalse(modelOv.disposeCalled);
081: }
082:
083: public void testTargetAndModelIsDisposed() throws Exception {
084:
085: FlagOnDisposeObservableValue targetOv = new FlagOnDisposeObservableValue();
086: FlagOnDisposeObservableValue modelOv = new FlagOnDisposeObservableValue();
087: dbc.bindValue(targetOv, modelOv, null, null);
088:
089: ObservablesManager observablesManager = new ObservablesManager();
090:
091: observablesManager.addObservablesFromContext(dbc, true, true);
092: observablesManager.dispose();
093:
094: assertTrue(targetOv.disposeCalled);
095: assertTrue(modelOv.disposeCalled);
096: }
097:
098: private static class FlagOnDisposeObservableValue implements
099: IObservableValue {
100:
101: private boolean disposeCalled = false;
102:
103: /*
104: * (non-Javadoc)
105: *
106: * @see org.eclipse.core.databinding.observable.value.IObservableValue#addValueChangeListener(org.eclipse.core.databinding.observable.value.IValueChangeListener)
107: */
108: public void addValueChangeListener(IValueChangeListener listener) {
109: // dummy
110: }
111:
112: /*
113: * (non-Javadoc)
114: *
115: * @see org.eclipse.core.databinding.observable.value.IObservableValue#getValue()
116: */
117: public Object getValue() {
118: // dummy
119: return null;
120: }
121:
122: /*
123: * (non-Javadoc)
124: *
125: * @see org.eclipse.core.databinding.observable.value.IObservableValue#getValueType()
126: */
127: public Object getValueType() {
128: // dummy
129: return null;
130: }
131:
132: /*
133: * (non-Javadoc)
134: *
135: * @see org.eclipse.core.databinding.observable.value.IObservableValue#removeValueChangeListener(org.eclipse.core.databinding.observable.value.IValueChangeListener)
136: */
137: public void removeValueChangeListener(
138: IValueChangeListener listener) {
139: // dummy
140:
141: }
142:
143: /*
144: * (non-Javadoc)
145: *
146: * @see org.eclipse.core.databinding.observable.value.IObservableValue#setValue(java.lang.Object)
147: */
148: public void setValue(Object value) {
149: // dummy
150:
151: }
152:
153: /*
154: * (non-Javadoc)
155: *
156: * @see org.eclipse.core.databinding.observable.IObservable#addChangeListener(org.eclipse.core.databinding.observable.IChangeListener)
157: */
158: public void addChangeListener(IChangeListener listener) {
159: // dummy
160:
161: }
162:
163: /*
164: * (non-Javadoc)
165: *
166: * @see org.eclipse.core.databinding.observable.IObservable#addStaleListener(org.eclipse.core.databinding.observable.IStaleListener)
167: */
168: public void addStaleListener(IStaleListener listener) {
169: // dummy
170:
171: }
172:
173: /*
174: * (non-Javadoc)
175: *
176: * @see org.eclipse.core.databinding.observable.IObservable#dispose()
177: */
178: public void dispose() {
179: disposeCalled = true;
180: }
181:
182: /*
183: * (non-Javadoc)
184: *
185: * @see org.eclipse.core.databinding.observable.IObservable#getRealm()
186: */
187: public Realm getRealm() {
188: return Realm.getDefault();
189: }
190:
191: /*
192: * (non-Javadoc)
193: *
194: * @see org.eclipse.core.databinding.observable.IObservable#isStale()
195: */
196: public boolean isStale() {
197: // dummy
198: return false;
199: }
200:
201: /*
202: * (non-Javadoc)
203: *
204: * @see org.eclipse.core.databinding.observable.IObservable#removeChangeListener(org.eclipse.core.databinding.observable.IChangeListener)
205: */
206: public void removeChangeListener(IChangeListener listener) {
207: // dummy
208:
209: }
210:
211: /*
212: * (non-Javadoc)
213: *
214: * @see org.eclipse.core.databinding.observable.IObservable#removeStaleListener(org.eclipse.core.databinding.observable.IStaleListener)
215: */
216: public void removeStaleListener(IStaleListener listener) {
217: // dummy
218:
219: }
220:
221: }
222: }
|