blob: 95c850bacd0e6a9cf841ff82fa68badb75b294e2 [file] [log] [blame]
/**
* Copyright (c) 2011 Broadcom Corporation and/or its subsidiary(-ies).
* All rights reserved.
* This component and the accompanying materials are made available
* under the terms of the License "Eclipse Public License v1.0"
* which accompanies this distribution, and is available
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
*
* Initial Contributors:
* Broadcom Corporation - initial contribution.
*
* Contributors:
*
* Description:
*
*/
package org.eclipse.cdt.debug.edc.tests;
import java.util.Collection;
import org.eclipse.cdt.debug.edc.internal.services.dsf.Symbols;
import org.eclipse.cdt.debug.edc.symbols.IExecutableSymbolicsReader;
import org.eclipse.cdt.debug.edc.symbols.ISymbol;
import org.eclipse.cdt.utils.Addr32;
import org.junit.Test;
public class TestSymbolicsReader extends AbstractDwarfReaderTest {
@Test
public void getSymbolAtAddress() {
for (TestInfo info : testInfos.values()) {
IExecutableSymbolicsReader reader = Symbols.getSymbolReader(info.symFile);
assertNotNull(reader);
if (info.symbols == null){// No test data for that info
continue;
}
for (SymbolInfo symbol : info.symbols) {
String addressString = "0x" + symbol.address;
ISymbol gotSymbol = reader.getSymbolAtAddress(new Addr32(addressString));
String assertMsgSuffix = symbol.toString() + ", " + gotSymbol.toString();
assertNotNull("Null symbol for : " + assertMsgSuffix, gotSymbol);
assertEquals("Addresses equal: " + assertMsgSuffix,
addressString, gotSymbol.getAddress().toHexAddressString());
assertEquals("Names equal " + assertMsgSuffix,
symbol.name, gotSymbol.getName());
assertEquals("Size equal " + assertMsgSuffix,
symbol.size, gotSymbol.getSize());
}
}
}
@Test
public void getSymbolsAtAddress() {
for (TestInfo info : testInfos.values()) {
IExecutableSymbolicsReader reader = Symbols.getSymbolReader(info.symFile);
assertNotNull(reader);
if (info.symbols == null){// No test data for that info
continue;
}
for (SymbolInfo symbol : info.symbols) {
String addressString = "0x" + symbol.address;
Collection<ISymbol> gotSymbols = reader.getSymbolsAtAddress(new Addr32(addressString));
assertTrue("At least one symbol", gotSymbols.size() >= 1);
boolean foundEqualName = false;
for (ISymbol gotSymbol : gotSymbols) {
assertNotNull(gotSymbol);
assertEquals("Addresses equal", addressString, gotSymbol.getAddress().toHexAddressString());
if (symbol.name.equals(gotSymbol.getName())) {
foundEqualName = true;
assertEquals("Size equal", symbol.size, gotSymbol.getSize());
}
}
assertTrue(foundEqualName);
}
}
}
}