blob: cd78c8e285beb2c00316827b062342debcd1676a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2005 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
*******************************************************************************/
/*
* Created Oct 21, 2005 by Gili Mendel
*
* $RCSfile: UpdatableFactoriesTest.java,v $
* $Revision: 1.4 $ $Date: 2005/11/15 19:11:42 $
*/
package org.eclipse.jface.tests.databinding.scenarios;
import java.util.Map;
import org.eclipse.jface.databinding.IChangeListener;
import org.eclipse.jface.databinding.IDataBindingContext;
import org.eclipse.jface.databinding.IUpdatable;
import org.eclipse.jface.databinding.IUpdatableFactory;
public class UpdatableFactoriesTest extends ScenariosTestCase {
interface Root {
};
interface None extends Root {
};
interface Middle extends None {
};
interface StandAlone {
};
class RootClass implements Root {
};
class NoneClass implements None {
};
class MiddleClass implements Middle {
};
class AllClass implements StandAlone, Middle, Root {
};
class MiddleChild extends MiddleClass {
};
interface TestIUpdatable extends IUpdatable {
public Class getType();
}
class Factory implements IUpdatableFactory {
Class c;
public Factory(Class c) {
this.c = c;
}
public IUpdatable createUpdatable(Map properties, Object description,
IDataBindingContext bindingContext) {
if (c.isInstance(description)) {
return new TestIUpdatable() {
public void dispose() {
}
public void removeChangeListener(
IChangeListener changeListener) {
}
public void addChangeListener(IChangeListener changeListener) {
}
public Class getType() {
return c;
}
};
}
return null;
}
}
IUpdatableFactory root = new Factory(Root.class);
IUpdatableFactory middle = new Factory(Middle.class);
IUpdatableFactory sa = new Factory(StandAlone.class);
IUpdatableFactory factory = new Factory(Object.class);
protected Class getFactoryType(Object src) {
TestIUpdatable u = (TestIUpdatable) getDbc().createUpdatable(src);
return u.getType();
}
public void test_factoryRegistration() {
getDbc().addUpdatableFactory(root);
getDbc().addUpdatableFactory(middle);
// Direct mapping
assertEquals(Root.class, getFactoryType(new RootClass()));
assertEquals(Middle.class, getFactoryType(new MiddleClass()));
// Inherent interface
assertEquals(Root.class, getFactoryType(new NoneClass()));
// AllClass inherent interface
assertEquals(Middle.class, getFactoryType(new AllClass()));
// class inheretence
assertEquals(Middle.class, getFactoryType(new MiddleChild()));
// Direct, first interface
getDbc().addUpdatableFactory(sa);
assertEquals(StandAlone.class, getFactoryType(new AllClass()));
// Class based contribution.
getDbc().addUpdatableFactory(factory);
assertEquals(Object.class, getFactoryType(new AllClass()));
}
}