]> source.dussan.org Git - vaadin-framework.git/commitdiff
property formatter test
authorMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 13 Oct 2011 12:59:57 +0000 (12:59 +0000)
committerMatti Tahvonen <matti.tahvonen@itmill.com>
Thu, 13 Oct 2011 12:59:57 +0000 (12:59 +0000)
svn changeset:21705/svn branch:6.7

tests/server-side/com/vaadin/tests/server/component/textfield/TextFieldWithPropertyFormatter.java [new file with mode: 0644]

diff --git a/tests/server-side/com/vaadin/tests/server/component/textfield/TextFieldWithPropertyFormatter.java b/tests/server-side/com/vaadin/tests/server/component/textfield/TextFieldWithPropertyFormatter.java
new file mode 100644 (file)
index 0000000..5a494b8
--- /dev/null
@@ -0,0 +1,106 @@
+package com.vaadin.tests.server.component.textfield;
+
+import java.util.Collections;
+
+import com.vaadin.data.Property;
+import com.vaadin.data.Property.ValueChangeEvent;
+import com.vaadin.data.Property.ValueChangeListener;
+import com.vaadin.data.util.ObjectProperty;
+import com.vaadin.data.util.PropertyFormatter;
+import com.vaadin.terminal.Paintable;
+import com.vaadin.terminal.Paintable.RepaintRequestEvent;
+import com.vaadin.ui.TextField;
+
+import junit.framework.TestCase;
+
+public class TextFieldWithPropertyFormatter extends TestCase {
+
+    private static final String INPUT_VALUE = "foo";
+    private static final String PARSED_VALUE = "BAR";
+    private static final String FORMATTED_VALUE = "FOOBAR";
+    private static final String ORIGINAL_VALUE = "Original";
+    private TextField field;
+    private PropertyFormatter formatter;
+    private ObjectProperty<String> property;
+    private ValueChangeListener listener;
+    private int listenerCalled;
+    private int repainted;
+
+    @Override
+    protected void setUp() throws Exception {
+        super.setUp();
+
+        field = new TextField();
+
+        formatter = new PropertyFormatter() {
+
+            @Override
+            public Object parse(String formattedValue) throws Exception {
+                assertEquals(INPUT_VALUE, formattedValue);
+                return PARSED_VALUE;
+            }
+
+            @Override
+            public String format(Object value) {
+                return FORMATTED_VALUE;
+            }
+        };
+
+        property = new ObjectProperty<String>(ORIGINAL_VALUE);
+
+        formatter.setPropertyDataSource(property);
+        field.setPropertyDataSource(formatter);
+
+        listener = new Property.ValueChangeListener() {
+
+            public void valueChange(ValueChangeEvent event) {
+                listenerCalled++;
+                assertEquals(1, listenerCalled);
+                assertEquals(FORMATTED_VALUE, event.getProperty().getValue());
+            }
+        };
+        
+        field.addListener(listener);
+        field.addListener(new Paintable.RepaintRequestListener() {
+            public void repaintRequested(RepaintRequestEvent event) {
+                repainted++;
+            }
+        });
+        listenerCalled = 0;
+        repainted = 0;
+    }
+
+    public void testWithServerApi() {
+        checkInitialState();
+
+        field.setValue(INPUT_VALUE);
+
+        checkEndState();
+
+    }
+
+    private void checkEndState() {
+        assertEquals(1, listenerCalled);
+        assertEquals(1, repainted);
+        assertEquals(FORMATTED_VALUE, field.getValue());
+        assertEquals(FORMATTED_VALUE, formatter.getValue());
+        assertEquals(PARSED_VALUE, property.getValue());
+    }
+
+    private void checkInitialState() {
+        assertEquals(ORIGINAL_VALUE, property.getValue());
+        assertEquals(FORMATTED_VALUE, formatter.getValue());
+        assertEquals(FORMATTED_VALUE, field.getValue());
+    }
+
+    public void testWithSimulatedClientSideChange() {
+        checkInitialState();
+
+        field.changeVariables(null,
+                Collections.singletonMap("text", (Object) INPUT_VALUE));
+
+        checkEndState();
+
+    }
+
+}