You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

TextFieldWithPropertyFormatterTest.java 3.1KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111
  1. package com.vaadin.tests.server.component.textfield;
  2. import static org.junit.Assert.assertEquals;
  3. import static org.junit.Assert.assertTrue;
  4. import java.util.Collections;
  5. import org.junit.Before;
  6. import org.junit.Test;
  7. import com.vaadin.data.Property;
  8. import com.vaadin.data.Property.ValueChangeEvent;
  9. import com.vaadin.data.Property.ValueChangeListener;
  10. import com.vaadin.data.util.ObjectProperty;
  11. import com.vaadin.data.util.PropertyFormatter;
  12. import com.vaadin.legacy.ui.LegacyTextField;
  13. public class TextFieldWithPropertyFormatterTest {
  14. private static final String INPUT_VALUE = "foo";
  15. private static final String PARSED_VALUE = "BAR";
  16. private static final String FORMATTED_VALUE = "FOOBAR";
  17. private static final String ORIGINAL_VALUE = "Original";
  18. private LegacyTextField field;
  19. private PropertyFormatter<String> formatter;
  20. private ObjectProperty<String> property;
  21. private ValueChangeListener listener;
  22. private int listenerCalled;
  23. private int repainted;
  24. @Before
  25. public void setUp() {
  26. field = new LegacyTextField() {
  27. @Override
  28. public void markAsDirty() {
  29. repainted++;
  30. super.markAsDirty();
  31. }
  32. };
  33. formatter = new PropertyFormatter<String>() {
  34. @Override
  35. public String parse(String formattedValue) throws Exception {
  36. assertEquals(INPUT_VALUE, formattedValue);
  37. return PARSED_VALUE;
  38. }
  39. @Override
  40. public String format(String value) {
  41. return FORMATTED_VALUE;
  42. }
  43. };
  44. property = new ObjectProperty<String>(ORIGINAL_VALUE);
  45. formatter.setPropertyDataSource(property);
  46. field.setPropertyDataSource(formatter);
  47. listener = new Property.ValueChangeListener() {
  48. @Override
  49. public void valueChange(ValueChangeEvent event) {
  50. listenerCalled++;
  51. assertEquals(1, listenerCalled);
  52. assertEquals(FORMATTED_VALUE, event.getProperty().getValue());
  53. }
  54. };
  55. field.addListener(listener);
  56. listenerCalled = 0;
  57. repainted = 0;
  58. }
  59. @Test
  60. public void testWithServerApi() {
  61. checkInitialState();
  62. field.setValue(INPUT_VALUE);
  63. checkEndState();
  64. }
  65. private void checkEndState() {
  66. assertEquals(1, listenerCalled);
  67. assertTrue(repainted >= 1);
  68. assertEquals(FORMATTED_VALUE, field.getValue());
  69. assertEquals(FORMATTED_VALUE, formatter.getValue());
  70. assertEquals(PARSED_VALUE, property.getValue());
  71. }
  72. private void checkInitialState() {
  73. assertEquals(ORIGINAL_VALUE, property.getValue());
  74. assertEquals(FORMATTED_VALUE, formatter.getValue());
  75. assertEquals(FORMATTED_VALUE, field.getValue());
  76. }
  77. @Test
  78. public void testWithSimulatedClientSideChange() {
  79. checkInitialState();
  80. field.changeVariables(null,
  81. Collections.singletonMap("text", (Object) INPUT_VALUE));
  82. checkEndState();
  83. }
  84. }