package org.beanfabrics.model;
import static junit.framework.Assert.assertEquals;
import junit.framework.JUnit4TestAdapter;
import org.beanfabrics.support.OnChange;
import org.beanfabrics.support.SortOrder;
import org.beanfabrics.support.Validation;
import org.junit.Test;
public class PMManagerTest {
public static junit.framework.Test suite() {
return new JUnit4TestAdapter(PMManagerTest.class);
}
private static interface SomeInterfacePM extends PresentationModel {
@Validation(path = "name") @SortOrder(2)
public boolean isNameValid();
@OnChange(path = "name") @SortOrder(1)
void updateLengthOfName();
}
private static class SomeClassPM extends AbstractPM implements SomeInterfacePM {
TextPM name = new TextPM("invalid");
IntegerPM lengthOfName = new IntegerPM(0);
public SomeClassPM() {
PMManager.setup(this);
}
public boolean isNameValid() {
if (name.getText().startsWith("valid")) {
return true;
} else {
return false;
}
}
public void updateLengthOfName() {
lengthOfName.setInteger(name.getText().length());
}
}
@Test
public void overriddenValidation() {
SomeClassPM pm = new SomeClassPM();
assertEquals("pm.name.isValid()", false, pm.name.isValid());
assertEquals("pm.lengthOfName.getInteger()", 7, (int)pm.lengthOfName.getInteger());
pm.name.setText("valid");
assertEquals("pm.name.isValid()", true, pm.name.isValid());
assertEquals("pm.lengthOfName.getInteger()", 5, (int)pm.lengthOfName.getInteger());
}
}