package com.vaadin.v7.tests.server.component.textfield;
import org.junit.Before;
import org.junit.Test;
import com.vaadin.v7.data.util.ObjectProperty;
import com.vaadin.v7.data.validator.RangeValidator;
import com.vaadin.v7.tests.data.converter.ConverterFactoryTest.ConvertTo42;
import com.vaadin.v7.ui.TextField;
public class TextFieldWithConverterAndValidatorTest {
private TextField field;
private ObjectProperty<Integer> property;
@Before
public void setUp() {
field = new TextField();
field.setInvalidAllowed(false);
}
@Test
public void testConvert42AndValidator() {
property = new ObjectProperty<Integer>(123);
field.setConverter(new ConvertTo42());
field.setPropertyDataSource(property);
field.addValidator(new RangeValidator<Integer>("Incorrect value",
Integer.class, 42, 42));
// succeeds
field.setValue("a");
// succeeds
field.setValue("42");
// succeeds - no validation
property.setValue(42);
// nulls
// succeeds - validate() converts field value back to property type
// before validation
property.setValue(null);
field.validate();
// succeeds
field.setValue(null);
}
// TODO test converter changing value to null with validator
}