blob: f162db8278ad2db96ba225221350e7ed1716f300 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2013, 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:
* Matthew Khouzam - Initial API and implementation
*******************************************************************************/
package org.eclipse.tracecompass.ctf.core.tests.event;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import org.eclipse.tracecompass.ctf.core.event.CTFCallsite;
import org.junit.Test;
/**
* The class <code>CTFCallsiteTest</code> contains tests for the class
* <code>{@link CTFCallsite}</code>.
*
* @author Matthew Khouzam
* @version $Revision: 1.0 $
*/
public class CTFCallsiteTest {
private static CTFCallsite GenerateCS(long ip) {
return new CTFCallsite("event name", "func name", ip, "file.java", 1);
}
/**
* Test the constructor
*/
@Test
public void constructorTest() {
CTFCallsite cs = GenerateCS(0x01);
assertNotNull(cs);
}
/**
* Test the getters
*/
@Test
public void getterTest() {
CTFCallsite cs = GenerateCS(0x01);
assertEquals("instruction pointer", 1, cs.getIp());
assertEquals("event name", "event name", cs.getEventName());
assertEquals("file name", "file.java", cs.getFileName());
assertEquals("function name", "func name", cs.getFunctionName());
assertEquals("line number", 1, cs.getLineNumber());
}
/**
* Test the hash code
*/
@Test
public void hashCodeTest() {
CTFCallsite cs = GenerateCS(0x01);
Map<CTFCallsite, Object> test = new HashMap<>();
test.put(cs, new Object());
assertTrue(test.containsKey(cs));
assertTrue(test.containsKey(GenerateCS(0x01)));
assertFalse(test.containsKey(GenerateCS(0x02)));
assertFalse(test.containsKey(new CTFCallsite("event nam", "func name", 1, "file.java", 1)));
assertFalse(test.containsKey(new CTFCallsite("event name", "func nam", 1, "file.java", 1)));
assertFalse(test.containsKey(new CTFCallsite("event name", "func name", 1, "file.jav", 1)));
assertFalse(test.containsKey(new CTFCallsite("event name", "func name", 1, "file.java", 2)));
}
/**
* Test equality
*/
@Test
public void equalsTest() {
CTFCallsite cs = GenerateCS(0x01);
CTFCallsite cs1 = GenerateCS(0x01);
assertEquals(cs, cs);
assertEquals(cs, cs1);
assertEquals(cs, new CTFCallsite("event name", "func name", 1, "file.java", 1));
assertFalse(cs.equals(null));
assertFalse(cs.equals(-1));
assertFalse(cs.equals(new CTFCallsite("event nam", "func name", 1, "file.java", 1)));
assertFalse(cs.equals(new CTFCallsite("event name", "func nam", 1, "file.java", 1)));
assertFalse(cs.equals(new CTFCallsite("event name", "func name", 2, "file.java", 1)));
assertFalse(cs.equals(new CTFCallsite("event name", "func name", 1, "file.jav", 1)));
assertFalse(cs.equals(new CTFCallsite("event name", "func name", 1, "file.java", 2)));
}
/**
* Test the comparator (it should sort using the IP)
*/
@Test
public void comparatorTest() {
CTFCallsite cs[] = new CTFCallsite[5];
long vals[] = { 1L, 0L, -2L, 2L, -1L };
for (int i = 0; i < 5; i++) {
cs[i] = GenerateCS(vals[i]);
}
Arrays.sort(cs, (o1, o2) -> Long.compareUnsigned(o1.getIp(), o2.getIp()));
assertEquals(0L, cs[0].getIp());
assertEquals(1L, cs[1].getIp());
assertEquals(2L, cs[2].getIp());
assertEquals(-2L, cs[3].getIp());
assertEquals(-1L, cs[4].getIp());
}
/**
* Tests the output of a callsite toString function
*/
@Test
public void toStringTest() {
CTFCallsite cs = GenerateCS(0x01);
assertEquals("file.java/func name:1", cs.toString());
}
}