package org.bindgen;
import junit.framework.Assert;
import junit.framework.TestCase;
import org.bindgen.binding.GenericObjectBindingPath;
import org.bindgen.inscope.AddressIn;
import org.bindgen.inscope.Person;
import org.bindgen.inscope.PersonBinding;
import org.bindgen.outofscope.AddressOut;
public class ScopeTest extends TestCase {
public void testShouldGenerateGenericBindingForOutOfScopeProperty() throws Exception {
final Class<?> generic = GenericObjectBindingPath.class;
final Class<?> binding = new PersonBinding().addressOut().getClass();
assertTrue(generic.isAssignableFrom(binding));
}
public void testInnerClassIsStillTypeSafe() {
Person p = new Person();
PersonBinding b = new PersonBinding(p);
AddressOut a = new AddressOut();
b.addressOut().set(a);
Assert.assertSame(a, b.addressOut().get());
Assert.assertEquals(AddressOut.class, b.addressOut().getType());
}
public void testWithinScopeIsGenerated() {
Person p = new Person();
PersonBinding b = new PersonBinding(p);
AddressIn a = new AddressIn();
b.addressIn().set(a);
Assert.assertSame(a, b.addressIn().get());
Assert.assertEquals(AddressIn.class, b.addressIn().getType());
b.addressIn().city().set("Foo");
}
}