diff options
author | Johannes Dahlström <johannesd@vaadin.com> | 2016-08-04 22:18:57 +0300 |
---|---|---|
committer | Johannes Dahlström <johannesd@vaadin.com> | 2016-08-05 22:10:56 +0300 |
commit | 5d864b14b385e303f6796bd55969ac5c44124ae0 (patch) | |
tree | ee8c7da7787d1581945559ab92342dec0f2cf166 /server/src/test/java/com/vaadin/ui/AbstractFieldTest.java | |
parent | f6f111b88fcf65c9d75f36daaa046dd26efc68e5 (diff) | |
download | vaadin-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.java | 122 |
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()); + } +} |