diff options
author | Leif Åstrand <legioth@gmail.com> | 2017-01-10 12:22:22 +0200 |
---|---|---|
committer | Denis <denis@vaadin.com> | 2017-01-10 12:22:22 +0200 |
commit | b4af93bebf1b7e51d33330c42e3c89d5e3e4fd45 (patch) | |
tree | c6684248c5276da05ce50b7e92fcd7a87eaedd01 /server/src/test | |
parent | cba4eb476b559cc97ccf2d8197d176a0813707c7 (diff) | |
download | vaadin-framework-b4af93bebf1b7e51d33330c42e3c89d5e3e4fd45.tar.gz vaadin-framework-b4af93bebf1b7e51d33330c42e3c89d5e3e4fd45.zip |
Allow AbstractField to override value equality (#8201)
* Allow AbstractField to override value equality
Fixes #8089
Diffstat (limited to 'server/src/test')
-rw-r--r-- | server/src/test/java/com/vaadin/ui/AbstractFieldTest.java | 57 |
1 files changed, 57 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 index 7f66ca5ed3..8d8d9a6499 100644 --- a/server/src/test/java/com/vaadin/ui/AbstractFieldTest.java +++ b/server/src/test/java/com/vaadin/ui/AbstractFieldTest.java @@ -15,6 +15,14 @@ import com.vaadin.server.ClientConnector; public class AbstractFieldTest extends EasyMockSupport { + private final class IdentityTextField extends TextField { + @Override + protected boolean isDifferentValue(String newValue) { + // Checks for identity instead of equality + return newValue != getValue(); + } + } + class TextField extends AbstractField<String> { String value = ""; @@ -119,4 +127,53 @@ public class AbstractFieldTest extends EasyMockSupport { assertSame("event source connector", source, e.getSource()); assertEquals("event from user", userOriginated, e.isUserOriginated()); } + + @Test + public void identityField_realChange() { + TextField identityField = new IdentityTextField(); + + identityField.addValueChangeListener(l); + + // Expect event to both listeners for actual change + l.valueChange(EasyMock.capture(capture)); + + replayAll(); + + identityField.setValue("value"); + + verifyAll(); + } + + @Test + public void identityField_onlyIdentityChange() { + TextField identityField = new IdentityTextField(); + identityField.setValue("value"); + + identityField.addValueChangeListener(l); + + // Expect event to both listeners for actual change + l.valueChange(EasyMock.capture(capture)); + + replayAll(); + + String sameValueDifferentIdentity = new String("value"); + identityField.setValue(sameValueDifferentIdentity); + + verifyAll(); + } + + @Test + public void identityField_noChange() { + TextField identityField = new IdentityTextField(); + identityField.setValue("value"); + + identityField.addValueChangeListener(l); + + // Expect no event for identical value + replayAll(); + + identityField.setValue(identityField.getValue()); + + verifyAll(); + } } |