tmf: Add equals/hashCode to TmfConstantTransform
authorAlexandre Montplaisir <alexmonthy@efficios.com>
Fri, 7 Oct 2016 22:02:39 +0000 (18:02 -0400)
committerAlexandre Montplaisir <alexmonthy@efficios.com>
Thu, 13 Oct 2016 19:06:50 +0000 (15:06 -0400)
Without that, two equivalent transforms would be considered
different, because the object is serialized every time, causing
it to become a new instance every time a trace is re-opened.

Change-Id: I4f1dcbf503032329cdce7ac5c0ef351545e392e8
Signed-off-by: Alexandre Montplaisir <alexmonthy@efficios.com>
Reviewed-on: https://git.eclipse.org/r/82779
Reviewed-by: Hudson CI
Reviewed-by: Genevieve Bastien <gbastien+lttng@versatic.net>
Tested-by: Genevieve Bastien <gbastien+lttng@versatic.net>
tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/synchronization/TsTransformTest.java
tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/internal/tmf/core/synchronization/TmfConstantTransform.java

index 7839cdc448c4db625371577c2890de5d067e855b..32ba5bb25378d446652284aec7d584e437f1ab72 100644 (file)
@@ -14,6 +14,7 @@ package org.eclipse.tracecompass.tmf.core.tests.synchronization;
 
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotEquals;
 import static org.junit.Assert.assertTrue;
 
 import java.math.BigDecimal;
@@ -21,6 +22,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.tracecompass.internal.tmf.core.synchronization.TmfConstantTransform;
 import org.eclipse.tracecompass.internal.tmf.core.synchronization.TmfTimestampTransform;
 import org.eclipse.tracecompass.internal.tmf.core.synchronization.TmfTimestampTransformLinear;
 import org.eclipse.tracecompass.tmf.core.synchronization.ITmfTimestampTransform;
@@ -107,7 +109,20 @@ public class TsTransformTest {
 
         assertFalse(ti.equals(ttl));
         assertFalse(ttl.equals(ti));
+    }
 
+    /**
+     * Test the equality of {@link TmfConstantTransform} objects.
+     */
+    @Test
+    public void testEqualityConstantTransform() {
+        ITmfTimestampTransform tt1 = new TmfConstantTransform(50L);
+        ITmfTimestampTransform tt2 = new TmfConstantTransform(50L);
+        ITmfTimestampTransform tt3 = new TmfConstantTransform(-10L);
+
+        assertEquals(tt1, tt2);
+        assertNotEquals(tt1, tt3);
+        assertNotEquals(tt2, tt3);
     }
 
     /**
index dfa470ddbcd818fbd90d2a9503c905a9943ed5f5..78baa2a138641e70a8fb3bd1fa42717f43dff2d5 100644 (file)
@@ -12,6 +12,8 @@
 
 package org.eclipse.tracecompass.internal.tmf.core.synchronization;
 
+import java.util.Objects;
+
 import org.eclipse.jdt.annotation.NonNull;
 import org.eclipse.tracecompass.tmf.core.synchronization.ITmfTimestampTransform;
 import org.eclipse.tracecompass.tmf.core.synchronization.TimestampTransformFactory;
@@ -98,6 +100,31 @@ public class TmfConstantTransform implements ITmfTimestampTransformInvertible {
         }
     }
 
+    @Override
+    public ITmfTimestampTransform inverse() {
+        return TimestampTransformFactory.createWithOffset(-1 * fOffset);
+    }
+
+    @Override
+    public int hashCode() {
+        return Objects.hash(fOffset);
+    }
+
+    @Override
+    public boolean equals(Object obj) {
+        if (this == obj) {
+            return true;
+        }
+        if (obj == null) {
+            return false;
+        }
+        if (getClass() != obj.getClass()) {
+            return false;
+        }
+        TmfConstantTransform other = (TmfConstantTransform) obj;
+        return (fOffset == other.fOffset);
+    }
+
     @Override
     public String toString() {
         StringBuilder builder = new StringBuilder();
@@ -107,9 +134,4 @@ public class TmfConstantTransform implements ITmfTimestampTransformInvertible {
         return builder.toString();
     }
 
-    @Override
-    public ITmfTimestampTransform inverse() {
-        return TimestampTransformFactory.createWithOffset(-1 * fOffset);
-    }
-
 }
This page took 0.027093 seconds and 5 git commands to generate.