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 +">"; } }