diff --git a/flow-data/src/main/java/com/vaadin/flow/data/binder/SimpleResult.java b/flow-data/src/main/java/com/vaadin/flow/data/binder/SimpleResult.java index 6c40e4ff75a..24abbd59de6 100644 --- a/flow-data/src/main/java/com/vaadin/flow/data/binder/SimpleResult.java +++ b/flow-data/src/main/java/com/vaadin/flow/data/binder/SimpleResult.java @@ -110,4 +110,25 @@ public R getOrThrow( } } + @Override + public boolean equals(Object obj) { + if (obj == this) { + return true; + } + if (obj == null) { + return false; + } + if (!obj.getClass().equals(getClass())) { + return false; + } + SimpleResult that = (SimpleResult) obj; + return Objects.equals(that.value, value) + && Objects.equals(that.message, message); + } + + @Override + public int hashCode() { + return Objects.hash(value, message); + } + } diff --git a/flow-data/src/test/java/com/vaadin/flow/data/binder/SimpleResultTest.java b/flow-data/src/test/java/com/vaadin/flow/data/binder/SimpleResultTest.java new file mode 100644 index 00000000000..a84b541c3a4 --- /dev/null +++ b/flow-data/src/test/java/com/vaadin/flow/data/binder/SimpleResultTest.java @@ -0,0 +1,64 @@ +/* + * Copyright 2000-2021 Vaadin Ltd. + * + * Licensed under the Apache License, Version 2.0 (the "License"); you may not + * use this file except in compliance with the License. You may obtain a copy of + * the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT + * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the + * License for the specific language governing permissions and limitations under + * the License. + */ +package com.vaadin.flow.data.binder; + +import org.junit.Assert; +import org.junit.Test; + +public class SimpleResultTest { + + @Test + public void twoEqualSimpleResults_objectsAreEqual() { + SimpleResult one = new SimpleResult("foo", null); + SimpleResult two = new SimpleResult("foo", null); + Assert.assertEquals(one, two); + } + + @Test + public void differentValues_objectsAreUnequal() { + SimpleResult one = new SimpleResult("foo", null); + SimpleResult two = new SimpleResult("baz", null); + Assert.assertNotEquals(one, two); + } + + @Test + public void differentMessages_objectsAreUnequal() { + SimpleResult one = new SimpleResult(null, "bar"); + SimpleResult two = new SimpleResult(null, "baz"); + Assert.assertNotEquals(one, two); + } + + @Test + public void differentClasses_objectsAreUnequal() { + SimpleResult one = new SimpleResult("foo", null); + SimpleResult two = new SimpleResult("foo", null) { + }; + Assert.assertNotEquals(one, two); + } + + @Test + public void nullIsNotEqualToObject() { + SimpleResult one = new SimpleResult("foo", null); + Assert.assertNotEquals(one, null); + } + + @Test + public void twoEqualSimpleResults_hashCodeIsTheSame() { + SimpleResult one = new SimpleResult("foo", null); + SimpleResult two = new SimpleResult("foo", null); + Assert.assertEquals(one.hashCode(), two.hashCode()); + } +}