package org.bindgen.example.methods;
import junit.framework.Assert;
import junit.framework.TestCase;
import org.bindgen.Binding;
import org.bindgen.ContainerBinding;
public class MethodExampleTest extends TestCase {
public void testReadWrite() {
MethodExample e = new MethodExample("1", "fred");
MethodExampleBinding b = new MethodExampleBinding(e);
Assert.assertEquals("fred", b.name().get());
b.name().set("bob");
Assert.assertEquals("bob", e.getName());
}
public void testReadOnly() {
MethodExample e = new MethodExample("1", "name");
MethodExampleBinding b = new MethodExampleBinding(e);
Assert.assertEquals("1", b.id().get());
try {
b.id().set("name1");
Assert.fail();
} catch (RuntimeException re) {
Assert.assertEquals("id is read only", re.getMessage());
}
Assert.assertEquals(true, b.id().getBindingIsReadOnly());
}
public void testBoolean() {
MethodExample e = new MethodExample("1", "name");
MethodExampleBinding b = new MethodExampleBinding(e);
Assert.assertEquals(false, b.good().get().booleanValue());
b.good().set(true);
Assert.assertEquals(true, e.isGood());
}
public void testToString() {
MethodExample e = new MethodExample("1", "name");
MethodExampleBinding b = new MethodExampleBinding(e);
Assert.assertEquals("method", b.toStringBinding().get());
}
public void testHasMethod() {
MethodExample e = new MethodExample("1", "name");
MethodExampleBinding b = new MethodExampleBinding(e);
Assert.assertEquals(false, b.stuff().get().booleanValue());
}
public void testBooleanThatIsAKeywordFallsBackOnMethodName() {
MethodExample e = new MethodExample("1", "name");
MethodExampleBinding b = new MethodExampleBinding(e);
Assert.assertEquals(false, b.isNew().get().booleanValue());
}
public void testGetBindings() {
MethodExample e = new MethodExample("1", "name");
MethodExampleBinding b = new MethodExampleBinding(e);
Assert.assertEquals(21, b.getChildBindings().size());
boolean foundName = false;
for (Binding<?> sub : b.getChildBindings()) {
if (sub.getName().equals("name")) {
foundName = true;
}
}
Assert.assertTrue(foundName);
}
public void testList() {
MethodExampleBinding b = new MethodExampleBinding();
Assert.assertEquals(String.class, ((ContainerBinding) b.list()).getContainedType());
}
public void testNull() {
MethodExample e = new MethodExample("1", "name");
MethodExampleBinding b = new MethodExampleBinding(e);
Assert.assertEquals(false, b.isNull().get().booleanValue());
}
@SuppressWarnings("unchecked")
public void testWildcards() {
MethodExample e = new MethodExample("1", "name");
e.setWildcards(new Wildcards());
MethodExampleBinding b = new MethodExampleBinding(e);
b.wildcards().a().set("a string");
// needs casting b.wildcards().b().set("anything");
}
public void testProtected() {
MethodExample e = new MethodExample("1", "name");
MethodExampleBinding b = new MethodExampleBinding(e);
// was causing read only exception
b.protectedProperty().set(1);
Assert.assertEquals(2, e.protectedProperty);
}
public void testOneChar() {
MethodExample e = new MethodExample("1", "name");
MethodExampleBinding b = new MethodExampleBinding(e);
Assert.assertEquals(null, b.m().get());
b.m().set("onechar");
Assert.assertEquals("onechar", e.getM());
}
public void testNoArg() {
MethodExample e = new MethodExample("1", "name");
MethodExampleBinding b = new MethodExampleBinding(e);
Assert.assertEquals(new Integer(1), b.noArg().get());
}
public void testArray() {
MethodExample e = new MethodExample("1", "name");
MethodExampleBinding b = new MethodExampleBinding(e);
String[] arrayProp = { "foo", "bar" };
String[] arrayProp2 = { "foobar" };
e.setArrayProp(arrayProp);
Assert.assertEquals(arrayProp, b.arrayProp().get());
b.arrayProp().set(arrayProp2);
Assert.assertEquals(arrayProp2, b.arrayProp().get());
}
}