summaryrefslogtreecommitdiffstats
path: root/server/src/test
diff options
context:
space:
mode:
authorLeif Åstrand <legioth@gmail.com>2017-01-10 12:22:22 +0200
committerDenis <denis@vaadin.com>2017-01-10 12:22:22 +0200
commitb4af93bebf1b7e51d33330c42e3c89d5e3e4fd45 (patch)
treec6684248c5276da05ce50b7e92fcd7a87eaedd01 /server/src/test
parentcba4eb476b559cc97ccf2d8197d176a0813707c7 (diff)
downloadvaadin-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.java57
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();
+ }
}