aboutsummaryrefslogtreecommitdiffstats
path: root/server/src/test/java/com/vaadin/ui/AbstractFieldTest.java
diff options
context:
space:
mode:
authorJohannes Dahlström <johannesd@vaadin.com>2016-08-04 22:18:57 +0300
committerJohannes Dahlström <johannesd@vaadin.com>2016-08-05 22:10:56 +0300
commit5d864b14b385e303f6796bd55969ac5c44124ae0 (patch)
treeee8c7da7787d1581945559ab92342dec0f2cf166 /server/src/test/java/com/vaadin/ui/AbstractFieldTest.java
parentf6f111b88fcf65c9d75f36daaa046dd26efc68e5 (diff)
downloadvaadin-framework-5d864b14b385e303f6796bd55969ac5c44124ae0.tar.gz
vaadin-framework-5d864b14b385e303f6796bd55969ac5c44124ae0.zip
Implement new simple AbstractField
Change-Id: I9addcf8bec802967b1dfa39512dd140b8a4e4a25
Diffstat (limited to 'server/src/test/java/com/vaadin/ui/AbstractFieldTest.java')
-rw-r--r--server/src/test/java/com/vaadin/ui/AbstractFieldTest.java122
1 files changed, 122 insertions, 0 deletions
diff --git a/server/src/test/java/com/vaadin/ui/AbstractFieldTest.java b/server/src/test/java/com/vaadin/ui/AbstractFieldTest.java
new file mode 100644
index 0000000000..bdd63caaa4
--- /dev/null
+++ b/server/src/test/java/com/vaadin/ui/AbstractFieldTest.java
@@ -0,0 +1,122 @@
+package com.vaadin.ui;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertSame;
+
+import org.easymock.Capture;
+import org.easymock.EasyMock;
+import org.easymock.EasyMockSupport;
+import org.junit.Before;
+import org.junit.Test;
+
+import com.vaadin.data.HasValue.ValueChange;
+import com.vaadin.data.HasValue.ValueChangeListener;
+import com.vaadin.server.ClientConnector;
+
+public class AbstractFieldTest extends EasyMockSupport {
+
+ class TextField extends AbstractField<String> {
+
+ String value = "";
+
+ @Override
+ public String getValue() {
+ return value;
+ }
+
+ @Override
+ protected void doSetValue(String value) {
+ this.value = value;
+ }
+ }
+
+ TextField field;
+
+ ValueChangeListener<String> l;
+ Capture<ValueChange<String>> capture;
+
+ @Before
+ public void setUp() {
+ field = new TextField();
+ l = mockListener();
+ capture = new Capture<>();
+ }
+
+ @Test
+ public void readOnlyFieldAcceptsValueChangeFromServer() {
+ field.setReadOnly(true);
+ field.setValue("foo");
+ assertEquals("foo", field.getValue());
+ }
+
+ @Test
+ public void readOnlyFieldIgnoresValueChangeFromClient() {
+ field.setReadOnly(true);
+ field.setValue("bar", true);
+ assertEquals("", field.getValue());
+ }
+
+ @Test
+ public void valueChangeListenerInvoked() {
+ l.accept(EasyMock.capture(capture));
+ replayAll();
+
+ field.setValue("foo");
+ field.addValueChangeListener(l);
+ field.setValue("bar");
+
+ assertEventEquals(capture.getValue(), "bar", field, false);
+
+ verifyAll();
+ }
+
+ @Test
+ public void valueChangeListenerInvokedFromClient() {
+ l.accept(EasyMock.capture(capture));
+ replayAll();
+
+ field.setValue("foo");
+ field.addValueChangeListener(l);
+ field.setValue("bar", true);
+
+ assertEventEquals(capture.getValue(), "bar", field, true);
+
+ verifyAll();
+ }
+
+ @Test
+ public void valueChangeListenerNotInvokedIfValueUnchanged() {
+ // expect zero invocations of l
+ replayAll();
+
+ field.setValue("foo");
+ field.addValueChangeListener(l);
+ field.setValue("foo");
+
+ verifyAll();
+ }
+
+ @Test
+ public void valueChangeListenerNotInvokedAfterRemove() {
+ // expect zero invocations of l
+ replayAll();
+
+ field.addValueChangeListener(l).remove();
+ field.setValue("foo");
+
+ verifyAll();
+ }
+
+ @SuppressWarnings("unchecked")
+ private ValueChangeListener<String> mockListener() {
+ return createStrictMock(ValueChangeListener.class);
+ }
+
+ private void assertEventEquals(ValueChange<String> e, String value,
+ ClientConnector source, boolean userOriginated) {
+ assertEquals("event value", value, e.getValue());
+ assertSame("event source", source, e.getSource());
+ assertSame("event source connector", source, e.getConnector());
+ assertEquals("event from user", userOriginated, e.isUserOriginated());
+ }
+}