This is an automated email from the ASF dual-hosted git repository.

ibessonov pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/ignite-3.git


The following commit(s) were added to refs/heads/main by this push:
     new a0389e94f7 IGNITE-18500 HybridTimestamp defines equals(), but not 
hashCode() (#1492)
a0389e94f7 is described below

commit a0389e94f7192a4a56f48857a655e4817d6e5fe3
Author: Roman Puchkovskiy <[email protected]>
AuthorDate: Thu Jan 5 14:11:29 2023 +0400

    IGNITE-18500 HybridTimestamp defines equals(), but not hashCode() (#1492)
---
 .../ignite/internal/hlc/HybridTimestamp.java       | 22 ++++++++++++++-----
 .../internal/{ => hlc}/HybridTimestampTest.java    | 25 +++++++++++++++++++++-
 2 files changed, 41 insertions(+), 6 deletions(-)

diff --git 
a/modules/core/src/main/java/org/apache/ignite/internal/hlc/HybridTimestamp.java
 
b/modules/core/src/main/java/org/apache/ignite/internal/hlc/HybridTimestamp.java
index 79495518bc..d3c8415cc8 100644
--- 
a/modules/core/src/main/java/org/apache/ignite/internal/hlc/HybridTimestamp.java
+++ 
b/modules/core/src/main/java/org/apache/ignite/internal/hlc/HybridTimestamp.java
@@ -107,17 +107,30 @@ public final class HybridTimestamp implements 
Comparable<HybridTimestamp>, Seria
         return new HybridTimestamp(physical, this.logical + ticks);
     }
 
-    /** {@inheritDoc} */
     @Override
     public boolean equals(Object o) {
-        if (!(o instanceof HybridTimestamp)) {
+        if (this == o) {
+            return true;
+        }
+        if (o == null || getClass() != o.getClass()) {
             return false;
         }
 
-        return compareTo((HybridTimestamp) o) == 0;
+        HybridTimestamp that = (HybridTimestamp) o;
+
+        if (physical != that.physical) {
+            return false;
+        }
+        return logical == that.logical;
+    }
+
+    @Override
+    public int hashCode() {
+        int result = (int) (physical ^ (physical >>> 32));
+        result = 31 * result + logical;
+        return result;
     }
 
-    /** {@inheritDoc} */
     @Override
     public int compareTo(HybridTimestamp other) {
         if (this.physical == other.physical) {
@@ -127,7 +140,6 @@ public final class HybridTimestamp implements 
Comparable<HybridTimestamp>, Seria
         return Long.compare(this.physical, other.physical);
     }
 
-    /** {@inheritDoc} */
     @Override
     public String toString() {
         return S.toString(HybridTimestamp.class, this);
diff --git 
a/modules/core/src/test/java/org/apache/ignite/internal/HybridTimestampTest.java
 
b/modules/core/src/test/java/org/apache/ignite/internal/hlc/HybridTimestampTest.java
similarity index 66%
rename from 
modules/core/src/test/java/org/apache/ignite/internal/HybridTimestampTest.java
rename to 
modules/core/src/test/java/org/apache/ignite/internal/hlc/HybridTimestampTest.java
index 95a5429a00..12a2d31374 100644
--- 
a/modules/core/src/test/java/org/apache/ignite/internal/HybridTimestampTest.java
+++ 
b/modules/core/src/test/java/org/apache/ignite/internal/hlc/HybridTimestampTest.java
@@ -18,6 +18,9 @@
 package org.apache.ignite.internal.hlc;
 
 import static org.apache.ignite.internal.hlc.HybridTimestamp.max;
+import static org.hamcrest.MatcherAssert.assertThat;
+import static org.hamcrest.Matchers.equalTo;
+import static org.hamcrest.Matchers.not;
 import static org.junit.jupiter.api.Assertions.assertEquals;
 
 import org.junit.jupiter.api.Test;
@@ -28,7 +31,7 @@ import org.junit.jupiter.api.Test;
  */
 class HybridTimestampTest {
     @Test
-    public void testComparison() {
+    void testComparison() {
         assertEquals(new HybridTimestamp(10, 5),
                 max(new HybridTimestamp(10, 5), new HybridTimestamp(5, 7))
         );
@@ -43,4 +46,24 @@ class HybridTimestampTest {
 
         assertEquals(null, max());
     }
+
+    @Test
+    void equalWhenComponentsAreSame() {
+        assertThat(new HybridTimestamp(1, 2), equalTo(new HybridTimestamp(1, 
2)));
+    }
+
+    @Test
+    void notEqualWhenPhysicalIsDifferent() {
+        assertThat(new HybridTimestamp(1, 2), not(equalTo(new 
HybridTimestamp(2, 2))));
+    }
+
+    @Test
+    void notEqualWhenLogicalIsDifferent() {
+        assertThat(new HybridTimestamp(1, 2), not(equalTo(new 
HybridTimestamp(1, 3))));
+    }
+
+    @Test
+    void hashCodeSameWhenComponentsAreSame() {
+        assertEquals(new HybridTimestamp(1, 2).hashCode(), new 
HybridTimestamp(1, 2).hashCode());
+    }
 }

Reply via email to