blob: 530171caa24caadcad815ebbe40cec68ebe217be [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2009, 2014 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
*
* Contributors:
* Francois Chouinard - Initial API and implementation
* Francois Chouinard - Adapted for TMF Trace Model 1.0
* Alexandre Montplaisir - Port to JUnit4
* Patrick Tasse - Updated for removal of context clone
*******************************************************************************/
package org.eclipse.tracecompass.tmf.core.tests.trace;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import static org.junit.Assert.fail;
import org.eclipse.tracecompass.tmf.core.timestamp.ITmfTimestamp;
import org.eclipse.tracecompass.tmf.core.timestamp.TmfTimestamp;
import org.eclipse.tracecompass.tmf.core.trace.ITmfContext;
import org.eclipse.tracecompass.tmf.core.trace.TmfContext;
import org.eclipse.tracecompass.tmf.core.trace.location.TmfLongLocation;
import org.eclipse.tracecompass.tmf.core.trace.location.TmfTimestampLocation;
import org.junit.Test;
/**
* Test suite for the TmfContext class.
*/
@SuppressWarnings("javadoc")
public class TmfContextTest {
// ------------------------------------------------------------------------
// Variables
// ------------------------------------------------------------------------
private final Long aLong = 12345L;
private final ITmfTimestamp aTimestamp = TmfTimestamp.fromSeconds(0);
private final TmfLongLocation fLocation1 = new TmfLongLocation(aLong);
private final TmfTimestampLocation fLocation2 = new TmfTimestampLocation(aTimestamp);
private final long fRank1 = 1;
private final long fRank2 = 2;
private final TmfContext fContext1 = new TmfContext(fLocation1, fRank1);
private final TmfContext fContext2 = new TmfContext(fLocation2, fRank2);
// ------------------------------------------------------------------------
// Constructors
// ------------------------------------------------------------------------
@Test
public void testTmfContextDefault() {
final TmfContext context = new TmfContext();
assertEquals("getLocation", null, context.getLocation());
assertEquals("getRank", ITmfContext.UNKNOWN_RANK, context.getRank());
}
@Test
public void testTmfContextNoRank() {
final TmfContext context1 = new TmfContext(fLocation1);
final TmfContext context2 = new TmfContext(fLocation2);
assertEquals("getLocation", fLocation1, context1.getLocation());
assertEquals("getLocation", fLocation2, context2.getLocation());
assertEquals("getRank", ITmfContext.UNKNOWN_RANK, context1.getRank());
assertEquals("getRank", ITmfContext.UNKNOWN_RANK, context2.getRank());
}
@Test
public void testTmfContext() {
assertEquals("getLocation", fLocation1, fContext1.getLocation());
assertEquals("getLocation", fLocation2, fContext2.getLocation());
assertEquals("getRank", fRank1, fContext1.getRank());
assertEquals("getRank", fRank2, fContext2.getRank());
}
@Test
public void testTmfContextCopy() {
final TmfContext context1 = new TmfContext(fContext1);
final TmfContext context2 = new TmfContext(fContext2);
assertEquals("getLocation", fLocation1, context1.getLocation());
assertEquals("getLocation", fLocation2, context2.getLocation());
assertEquals("getRank", fRank1, context1.getRank());
assertEquals("getRank", fRank2, context2.getRank());
}
@Test
public void testTmfContextCopy2() {
try {
new TmfContext((TmfContext) null);
fail("Copy constructor: no exception");
}
catch (final IllegalArgumentException e) {
// pass
}
catch (final Exception e) {
fail("Copy constructor: wrong exception");
}
}
// ------------------------------------------------------------------------
// equals
// ------------------------------------------------------------------------
@Test
public void testEqualsReflexivity() {
assertTrue("equals", fContext1.equals(fContext1));
assertTrue("equals", fContext2.equals(fContext2));
assertFalse("equals", fContext1.equals(fContext2));
assertFalse("equals", fContext2.equals(fContext1));
}
@Test
public void testEqualsSymmetry() {
final TmfContext context1 = new TmfContext(fContext1);
final TmfContext context2 = new TmfContext(fContext2);
assertTrue("equals", context1.equals(fContext1));
assertTrue("equals", fContext1.equals(context1));
assertTrue("equals", context2.equals(fContext2));
assertTrue("equals", fContext2.equals(context2));
}
@Test
public void testEqualsTransivity() {
final TmfContext context1 = new TmfContext(fContext1);
final TmfContext context2 = new TmfContext(context1);
final TmfContext context3 = new TmfContext(context2);
assertTrue("equals", context1.equals(context2));
assertTrue("equals", context2.equals(context3));
assertTrue("equals", context1.equals(context3));
}
@Test
public void testEqualsNull() {
assertFalse("equals", fContext1.equals(null));
assertFalse("equals", fContext2.equals(null));
}
private static class MyContext extends TmfContext {
}
@Test
public void testNonEquals() {
// Different classes
final MyContext myContext = new MyContext();
assertFalse("equals", fContext1.equals(myContext));
assertFalse("equals", myContext.equals(fContext1));
// Different locations
TmfContext context1 = new TmfContext(fContext1);
TmfContext context2 = new TmfContext(fContext1);
context1.setLocation(null);
context2.setLocation(null);
assertFalse("equals", fContext1.equals(context1));
assertFalse("equals", context1.equals(fContext1));
assertTrue("equals", context1.equals(context2));
// Different ranks
context1 = new TmfContext(fContext1);
context2 = new TmfContext(fContext1);
context1.setRank(fContext1.getRank() + 1);
context2.setRank(fContext1.getRank() + 2);
assertFalse("equals", fContext1.equals(context1));
assertFalse("equals", context1.equals(fContext1));
assertFalse("equals", context1.equals(context2));
}
// ------------------------------------------------------------------------
// hashCode
// ------------------------------------------------------------------------
@Test
public void testHashCode() {
final TmfContext context1 = new TmfContext(fContext1);
final TmfContext context2 = new TmfContext(fContext2);
assertEquals("hashCode", fContext1.hashCode(), context1.hashCode());
assertEquals("hashCode", fContext2.hashCode(), context2.hashCode());
assertFalse("hashCode", fContext1.hashCode() == context2.hashCode());
assertFalse("hashCode", fContext2.hashCode() == context1.hashCode());
final TmfContext nullContext1 = new TmfContext();
final TmfContext nullContext2 = new TmfContext(nullContext1);
assertEquals("hashCode", nullContext1.hashCode(), nullContext2.hashCode());
}
// ------------------------------------------------------------------------
// toString
// ------------------------------------------------------------------------
@Test
public void testToString() {
final String expected1 = "TmfContext [fLocation=" + fLocation1 + ", fRank=" + fRank1 + "]";
final String expected2 = "TmfContext [fLocation=" + fLocation2 + ", fRank=" + fRank2 + "]";
assertEquals("toString", expected1, fContext1.toString());
assertEquals("toString", expected2, fContext2.toString());
}
// ------------------------------------------------------------------------
// setLocation, setRank, updateRank
// ------------------------------------------------------------------------
@Test
public void testSetLocation() {
final TmfContext context1 = new TmfContext(fContext1);
context1.setLocation(fContext2.getLocation());
assertEquals("getLocation", fLocation2, context1.getLocation());
assertEquals("getRank", fRank1, context1.getRank());
}
@Test
public void testSetRank() {
final TmfContext context1 = new TmfContext(fContext1);
context1.setRank(fContext2.getRank());
assertEquals("getLocation", fLocation1, context1.getLocation());
assertEquals("getRank", fRank2, context1.getRank());
}
@Test
public void testIncreaseRank() {
final TmfContext context1 = new TmfContext(fContext1);
context1.increaseRank();
assertEquals("getRank", fRank1 + 1, context1.getRank());
context1.increaseRank();
assertEquals("getRank", fRank1 + 2, context1.getRank());
context1.setRank(ITmfContext.UNKNOWN_RANK);
context1.increaseRank();
assertEquals("getRank", ITmfContext.UNKNOWN_RANK, context1.getRank());
context1.increaseRank();
assertEquals("getRank", ITmfContext.UNKNOWN_RANK, context1.getRank());
}
}