tmf.test: Add JUnit tests for testing the class TmfTreeDataModel
Change-Id: I3a84be9146a77f501fc498a35be4182760dafc36
Signed-off-by: Bernd Hufmann <Bernd.Hufmann@ericsson.com>
Signed-off-by: Matthew Khouzam <matthew.khouzam@ericsson.com>
Reviewed-on: https://git.eclipse.org/r/c/tracecompass/org.eclipse.tracecompass/+/167021
Tested-by: Trace Compass Bot <tracecompass-bot@eclipse.org>
diff --git a/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/model/tree/TmfTreeDataModelTest.java b/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/model/tree/TmfTreeDataModelTest.java
new file mode 100644
index 0000000..e50979d
--- /dev/null
+++ b/tmf/org.eclipse.tracecompass.tmf.core.tests/src/org/eclipse/tracecompass/tmf/core/tests/model/tree/TmfTreeDataModelTest.java
@@ -0,0 +1,204 @@
+/**********************************************************************
+ * Copyright (c) 2020 Ericsson
+ *
+ * All rights reserved. This program and the accompanying materials are
+ * made available under the terms of the Eclipse Public License 2.0 which
+ * accompanies this distribution, and is available at
+ * https://www.eclipse.org/legal/epl-2.0/
+ *
+ * SPDX-License-Identifier: EPL-2.0
+ **********************************************************************/
+package org.eclipse.tracecompass.tmf.core.tests.model.tree;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertTrue;
+
+import java.util.Arrays;
+import java.util.List;
+
+import org.eclipse.jdt.annotation.NonNull;
+import org.eclipse.tracecompass.tmf.core.model.OutputElementStyle;
+import org.eclipse.tracecompass.tmf.core.model.tree.TmfTreeDataModel;
+import org.junit.Before;
+import org.junit.Test;
+
+/**
+ * JUnit Test class to test {@link TmfTreeDataModel}
+ */
+public class TmfTreeDataModelTest {
+ // ------------------------------------------------------------------------
+ // Test data
+ // ------------------------------------------------------------------------
+ private static final String TO_STRING = "toString";
+ private static final String HASH_CODE = "hashCode";
+ private static final String EQUALS = "equals";
+
+ private static final @NonNull List<@NonNull String> LABELS0 = Arrays.asList("label1, label2, label3");
+ private static final long ID0 = 0L;
+ private static final long PARENT_ID0 = -1L;
+ private static final OutputElementStyle STYLE0 = null;
+ private static final @NonNull List<@NonNull String> LABELS1 = Arrays.asList("label4, label5, label6", "label7");
+ private static final long ID1 = 1L;
+ private static final long PARENT_ID1 = 0L;
+ private static final boolean HAS_MODEL1 = false;
+ private static final @NonNull OutputElementStyle STYLE1 = new OutputElementStyle("1");
+
+ private static final long ID2 = 0L;
+ private static final long PARENT_ID2 = -1L;
+ private static final OutputElementStyle STYLE3 = null;
+ private static final String NAME = "Name";
+
+ private TmfTreeDataModel fModel0 = null;
+ private TmfTreeDataModel fModel1 = null;
+
+ // ------------------------------------------------------------------------
+ // Test setup
+ // ------------------------------------------------------------------------
+ /**
+ * Test initialization.
+ */
+ @Before
+ public void setUp() {
+ fModel0 = createModel(0);
+ fModel1 = createModel(1);
+ }
+
+ // ------------------------------------------------------------------------
+ // Tests
+ // ------------------------------------------------------------------------
+
+ /**
+ * Test constructors and getter/setters.
+ */
+ @Test
+ public void testConstructors() {
+ TmfTreeDataModel model0 = createModel(0);
+ assertEquals(ID0, model0.getId());
+ assertEquals(PARENT_ID0, model0.getParentId());
+ assertEquals(LABELS0.get(0), model0.getName());
+ assertEquals(LABELS0, model0.getLabels());
+ assertTrue(model0.hasRowModel());
+ assertEquals(STYLE0, model0.getStyle());
+
+ TmfTreeDataModel model1 = createModel(1);
+ assertEquals(ID1, model1.getId());
+ assertEquals(PARENT_ID1, model1.getParentId());
+ assertEquals(LABELS1.get(0), model1.getName());
+ assertEquals(LABELS1, model1.getLabels());
+ assertFalse(model1.hasRowModel());
+ assertEquals(STYLE1, model1.getStyle());
+
+ TmfTreeDataModel model2 = createModel(2);
+ assertEquals(ID2, model2.getId());
+ assertEquals(PARENT_ID2, model2.getParentId());
+ assertEquals(NAME, model2.getName());
+ assertEquals(1, model2.getLabels().size());
+ assertEquals(NAME, model2.getLabels().get(0));
+ assertTrue(model2.hasRowModel());
+ assertEquals(STYLE3, model2.getStyle());
+
+ }
+
+ // ------------------------------------------------------------------------
+ // TmfTreeDataModel#equals()
+ // ------------------------------------------------------------------------
+
+ /**
+ * Run the {@link TmfTreeDataModel#equals} method test.
+ */
+ @Test
+ public void testEqualsReflexivity() {
+ assertTrue(EQUALS, fModel0.equals(fModel0));
+ assertTrue(EQUALS, fModel1.equals(fModel1));
+
+ assertTrue(EQUALS, !fModel0.equals(fModel1));
+ assertTrue(EQUALS, !fModel1.equals(fModel0));
+ }
+
+ /**
+ * Run the {@link TmfTreeDataModel#equals} method test.
+ */
+ @Test
+ public void testEqualsSymmetry() {
+ TmfTreeDataModel model0 = createModel(0);
+ TmfTreeDataModel model1 = createModel(1);
+
+ assertTrue(EQUALS, model0.equals(fModel0));
+ assertTrue(EQUALS, fModel0.equals(model0));
+
+ assertTrue(EQUALS, model1.equals(fModel1));
+ assertTrue(EQUALS, fModel1.equals(model1));
+ }
+
+ /**
+ * Run the {@link TmfTreeDataModel#equals} method test.
+ */
+ @Test
+ public void testEqualsTransivity() {
+ TmfTreeDataModel model0 = createModel(0);
+ TmfTreeDataModel model1 = createModel(0);
+ TmfTreeDataModel model2 = createModel(0);
+
+ assertTrue(EQUALS, model0.equals(model1));
+ assertTrue(EQUALS, model1.equals(model2));
+ assertTrue(EQUALS, model0.equals(model2));
+ }
+
+ /**
+ * Run the {@link TmfTreeDataModel#equals} method test.
+ */
+ @Test
+ public void testEqualsNull() {
+ TmfTreeDataModel model0 = null;
+ assertFalse(EQUALS, fModel0.equals(model0));
+ assertFalse(EQUALS, fModel1.equals(model0));
+ }
+
+ // ------------------------------------------------------------------------
+ // TmfTreeDataModel#hashCode
+ // ------------------------------------------------------------------------
+
+ /**
+ * Run the {@link TmfTreeDataModel#hashCode} method test.
+ */
+ @Test
+ public void testHashCode() {
+ TmfTreeDataModel model0 = createModel(0);
+ TmfTreeDataModel model1 = createModel(1);
+
+ assertTrue(HASH_CODE, fModel0.hashCode() == model0.hashCode());
+ assertTrue(HASH_CODE, fModel1.hashCode() == model1.hashCode());
+
+ assertTrue(HASH_CODE, fModel0.hashCode() != model1.hashCode());
+ assertTrue(HASH_CODE, fModel1.hashCode() != model0.hashCode());
+ }
+
+ /**
+ * Test {@link TmfTreeDataModel#toString()}
+ */
+ @Test
+ public void testToString() {
+ assertEquals(TO_STRING, "<name=[label1, label2, label3] id=0 parentId=-1 style=null hasRowModel=true>", fModel0.toString());
+ assertEquals(TO_STRING, "<name=[label4, label5, label6, label7] id=1 parentId=0 style=Style [1, {}] hasRowModel=false>", fModel1.toString());
+ TmfTreeDataModel model2 = createModel(2);
+ assertEquals(TO_STRING, "<name=[Name] id=0 parentId=-1 style=null hasRowModel=true>", model2.toString());
+ }
+
+ // ------------------------------------------------------------------------
+ // Helpers
+ // ------------------------------------------------------------------------
+
+ private static TmfTreeDataModel createModel(int i) {
+ switch (i) {
+ case 0:
+ return new TmfTreeDataModel(ID0, PARENT_ID0, LABELS0);
+ case 1:
+ return new TmfTreeDataModel(ID1, PARENT_ID1, LABELS1, HAS_MODEL1, STYLE1);
+ case 2:
+ return new TmfTreeDataModel(ID2, PARENT_ID2, NAME);
+ default:
+ return new TmfTreeDataModel(ID0, PARENT_ID0, LABELS0);
+ }
+ }
+}
diff --git a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/model/tree/TmfTreeDataModel.java b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/model/tree/TmfTreeDataModel.java
index 3f525f6..0777bfe 100644
--- a/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/model/tree/TmfTreeDataModel.java
+++ b/tmf/org.eclipse.tracecompass.tmf.core/src/org/eclipse/tracecompass/tmf/core/model/tree/TmfTreeDataModel.java
@@ -127,18 +127,25 @@
return false;
}
TmfTreeDataModel other = (TmfTreeDataModel) obj;
+
+ if (!Objects.equals(fStyle, other.fStyle)) {
+ return false;
+ }
+
return fId == other.fId
&& fParentId == other.fParentId
- && fLabels.equals(other.fLabels);
+ && fLabels.equals(other.fLabels)
+ && fHasRowModel == other.fHasRowModel;
}
@Override
public int hashCode() {
- return Objects.hash(fId, fParentId, fLabels);
+ return Objects.hash(fId, fParentId, fLabels, fStyle, fHasRowModel);
}
+ @SuppressWarnings("nls")
@Override
public String toString() {
- return "<name=" + fLabels + " id=" + fId + " parentId=" + fParentId + ">"; //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ //$NON-NLS-4$
+ return "<name=" + fLabels + " id=" + fId + " parentId=" + fParentId + " style=" + fStyle + " hasRowModel=" + fHasRowModel +">";
}
}