package com.dooapp.fxform.issues;
import com.dooapp.fxform.reflection.ReflectionUtils;
import javafx.beans.property.ObjectProperty;
import javafx.beans.property.SimpleObjectProperty;
import junit.framework.Assert;
import org.junit.Test;
/**
* User: Antoine Mischler <antoine@dooapp.com>
* Date: 05/11/2013
* Time: 11:42
*/
public class Issue34Test {
private static class UpperBoundClass {
}
private static class Clazz extends UpperBoundClass {
}
private static class MyBean<T extends UpperBoundClass> {
private final ObjectProperty<T> t = new SimpleObjectProperty<T>();
}
private static class SubBean extends MyBean<Clazz> {
}
@Test
public void testUndeclared() throws NoSuchFieldException {
MyBean myBean = new MyBean();
Assert.assertEquals(UpperBoundClass.class, ReflectionUtils.getObjectPropertyGeneric(myBean, myBean.getClass().getDeclaredField("t")));
}
@Test
public void testSubBean() throws NoSuchFieldException {
SubBean myBean = new SubBean();
Assert.assertEquals(Clazz.class, ReflectionUtils.getObjectPropertyGeneric(myBean, myBean.getClass().getSuperclass().getDeclaredField("t")));
}
}