package org.bindgen.example.employee;
import junit.framework.Assert;
import junit.framework.TestCase;
import org.bindgen.Binding;
public class EmployeeTest extends TestCase {
public void testEmployee() {
Employee e = new Employee();
e.name = "bob";
e.department = "accounting";
EmployeeBinding eb = new EmployeeBinding(e);
Assert.assertEquals("bob", new TextBox(eb.name()).toString());
Assert.assertEquals("accounting", new TextBox(eb.department()).toString());
Assert.assertEquals("name", new TextBox(eb.name()).getName());
Assert.assertEquals("department", new TextBox(eb.department()).getName());
}
public void testEmployer() {
Employer e = new Employer();
e.name = "at&t";
EmployerBinding eb = new EmployerBinding(e);
Assert.assertEquals("at&t", new TextBox(eb.name()).toString());
Assert.assertEquals("name", new TextBox(eb.name()).getName());
}
public void testEmployerThroughEmployee() {
Employer er = new Employer();
er.name = "at&t";
Employee ee = new Employee();
ee.name = "bob";
ee.department = "accounting";
ee.employer = er;
EmployeeBinding eb = new EmployeeBinding(ee);
// Assert.assertTrue(StringBinding.class.isAssignableFrom(eb.name().getClass()));
// Simulate page rendering
Assert.assertEquals("bob", new TextBox(eb.name()).toString());
Assert.assertEquals("accounting", new TextBox(eb.department()).toString());
Assert.assertEquals("at&t", new TextBox(eb.employer().name()).toString());
Assert.assertEquals("employer", new TextBox(eb.employer()).getName());
// Simulate form POST processing
new TextBox(eb.name()).set("newBob");
new TextBox(eb.employer().name()).set("newAt&t");
Assert.assertEquals("newBob", ee.name);
Assert.assertEquals("newAt&t", er.name);
}
public void testEmployerThroughEmployeeStateless() {
Employer er = new Employer();
er.name = "at&t";
Employee ee = new Employee();
ee.employer = er;
EmployeeBinding eb = new EmployeeBinding(); // no instance set
Assert.assertEquals("at&t", eb.employer().name().getWithRoot(ee));
}
public void testEmployerThroughEmployeeStatelessSafely() {
Employee ee = new Employee();
ee.employer = null; // leave null
EmployeeBinding eb = new EmployeeBinding(); // no instance set
Assert.assertEquals(null, eb.employer().name().getSafelyWithRoot(ee));
Assert.assertEquals(null, eb.employer().name().getSafelyWithRoot(null));
}
public void testSetEmployer() {
Employer er1 = new Employer();
er1.name = "at&t";
Employer er2 = new Employer();
er2.name = "exigence";
Employee ee = new Employee();
ee.employer = er1;
EmployeeBinding eb = new EmployeeBinding(ee);
Assert.assertEquals("at&t", new TextBox(eb.employer().name()).toString());
eb.employer().set(er2);
Assert.assertEquals("exigence", new TextBox(eb.employer().name()).toString());
}
public void testDelayedEmployee() {
Employee e1 = new Employee("bob");
Employee e2 = new Employee("fred");
EmployeeBinding eb = new EmployeeBinding();
TextBox tb = new TextBox(eb.name());
eb.set(e1);
Assert.assertEquals("bob", tb.toString());
eb.set(e2);
Assert.assertEquals("fred", tb.toString());
}
public void testEmployerNameWhenNullFails() {
Employee ee = new Employee("bob");
EmployeeBinding eb = new EmployeeBinding(ee);
Binding<String> erName = eb.employer().name();
try {
erName.get();
Assert.fail();
} catch (NullPointerException npe) {
}
try {
erName.set("at&t");
Assert.fail();
} catch (NullPointerException npe) {
}
}
public static class TextBox {
Binding<Object> binding;
@SuppressWarnings("unchecked")
public TextBox(Binding<?> binding) {
this.binding = (Binding<Object>) binding;
}
public String getName() {
return this.binding.getName();
}
public String toString() {
return this.binding.get().toString();
}
public void set(String value) {
this.binding.set(value);
}
}
}