/*******************************************************************************
* Copyright (c) 2000, 2008 QNX Software Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* QNX Software Systems - Initial API and implementation
*******************************************************************************/
package org.eclipse.cdt.debug.core.tests;
import java.io.IOException;
import junit.framework.Test;
import org.eclipse.cdt.debug.core.cdi.CDIException;
import org.eclipse.cdt.debug.core.cdi.ICDIFunctionLocation;
import org.eclipse.cdt.debug.core.cdi.ICDILineLocation;
import org.eclipse.cdt.debug.core.cdi.model.ICDIBreakpoint;
import org.eclipse.cdt.debug.core.cdi.model.ICDILocationBreakpoint;
import org.eclipse.cdt.debug.core.cdi.model.ICDITarget;
import org.eclipse.cdt.debug.mi.core.MIException;
import org.eclipse.core.runtime.CoreException;
/**
* @author Peter Graves
*
* This file contains a set of generic tests for the CDI Location interfaces.
* It will currenly use the mi implementation.
*
*/
public class LocationTests extends AbstractDebugTest {
public static Test suite() {
return new DebugTestWrapper(LocationTests.class){};
}
public static void main(String[] args) {
junit.textui.TestRunner.run(suite());
}
@Override
protected void setUp() throws Exception {
super.setUp();
createDebugSession();
assertNotNull(currentTarget);
currentTarget.deleteAllBreakpoints();
pause();
}
/***
* A couple tests to make sure comparing Locations works as expected.
*/
public void testIsEquals() throws CoreException, MIException, IOException, CDIException {
ICDITarget cdiTarget = currentTarget;
ICDILineLocation lineLocation, lineLocation2;
ICDIFunctionLocation functionLocation, functionLocation2;
ICDIBreakpoint[] breakpoints;
ICDILocationBreakpoint curbreak;
/**********************************************************************
* Simple test.. this should work.
**********************************************************************/
functionLocation=cdiTarget.createFunctionLocation("main.c", "func1");
functionLocation2=cdiTarget.createFunctionLocation("main.c", "func1");
assertTrue(functionLocation.equals(functionLocation2));
/**********************************************************************
* Simple test.. this should work.
**********************************************************************/
lineLocation=cdiTarget.createLineLocation("main.c", 10);
lineLocation2=cdiTarget.createLineLocation("main.c", 10);
assertTrue(lineLocation.equals(lineLocation2));
/**********************************************************************
* make sure that the location returned from getLocation on the
* ICDILocationBreakpoint.getLocation that is returned from
* setLocationBreakpoint is the same as the breakpoint returned from
* BreakpointManager.getBreakpoints.getLocation()
**********************************************************************/
functionLocation=cdiTarget.createFunctionLocation("main.c", "func1");
assertNotNull(functionLocation);
functionLocation2=cdiTarget.setFunctionBreakpoint(0, functionLocation, null, false).getLocator();
breakpoints=cdiTarget.getBreakpoints();
assertNotNull(breakpoints);
assertTrue(breakpoints.length==1);
if (breakpoints[0] instanceof ICDILocationBreakpoint) {
curbreak=(ICDILocationBreakpoint) breakpoints[0];
} else
curbreak=null;
assertNotNull(curbreak);
assertTrue(curbreak.getLocator().equals(functionLocation2));
cdiTarget.deleteAllBreakpoints();
pause();
/* Create a break point on a generic function with a file name that
* gdb will change to the relitive path of the source file. This
* should work, but at the time of writing (Sept 25, 2002) does not.
*/
functionLocation=cdiTarget.createFunctionLocation("main.c", "func1");
assertNotNull(functionLocation);
cdiTarget.setFunctionBreakpoint(0, functionLocation, null, false);
breakpoints=cdiTarget.getBreakpoints();
assertNotNull(breakpoints);
assertTrue(breakpoints.length==1);
if (breakpoints[0] instanceof ICDILocationBreakpoint) {
curbreak=(ICDILocationBreakpoint) breakpoints[0];
} else
curbreak=null;
assertNotNull(curbreak);
assertTrue("PR:23879",curbreak.getLocator().equals(functionLocation));
}
}