blob: 96559edfaf97073f51627d5d95b1c654b70c2cca [file] [log] [blame]
package org.eclipse.jdt.debug.tests.core;
/**********************************************************************
Copyright (c) 2000, 2002 IBM Corp. and others.
All rights reserved. This program and the accompanying materials
are made available under the terms of the Common Public License v0.5
which accompanies this distribution, and is available at
http://www.eclipse.org/legal/cpl-v05.html
Contributors:
IBM Corporation - Initial implementation
*********************************************************************/
import java.util.ArrayList;
import java.util.List;
import org.eclipse.debug.core.model.IBreakpoint;
import org.eclipse.debug.core.model.ILineBreakpoint;
import org.eclipse.jdt.debug.core.IJavaThread;
import org.eclipse.jdt.debug.tests.AbstractDebugTest;
/**
* Tests deferred pattern breakpoints.
*/
public class PatternBreakpointTests extends AbstractDebugTest {
public PatternBreakpointTests(String name) {
super(name);
}
public void testPatternBreakpoints() throws Exception {
String sourceName = "Breakpoints.java";
String pattern = "Break";
List bps = new ArrayList();
// anonymous class
bps.add(createPatternBreakpoint(43, sourceName, pattern));
// blocks
bps.add(createPatternBreakpoint(102, sourceName, pattern));
// constructor
bps.add(createPatternBreakpoint(77, sourceName, pattern));
// else
bps.add(createPatternBreakpoint(88, sourceName, pattern));
//finally after catch
bps.add(createPatternBreakpoint(120, sourceName, pattern));
//finally after try
bps.add(createPatternBreakpoint(128, sourceName, pattern));
// for loop
bps.add(createPatternBreakpoint(93, sourceName, pattern));
// if
bps.add(createPatternBreakpoint(81, sourceName, pattern));
// initializer
bps.add(createPatternBreakpoint(17, sourceName, pattern));
// inner class
bps.add(createPatternBreakpoint(22, sourceName, pattern));
// return true
bps.add(createPatternBreakpoint(72, sourceName, pattern));
// instance method
bps.add(createPatternBreakpoint(107, sourceName, pattern));
// static method
bps.add(createPatternBreakpoint(53, sourceName, pattern));
// case statement
bps.add(createPatternBreakpoint(133, sourceName, pattern));
// default statement
bps.add(createPatternBreakpoint(140, sourceName, pattern));
// synchronized blocks
bps.add(createPatternBreakpoint(146, sourceName, pattern));
// try
bps.add(createPatternBreakpoint(125, sourceName, pattern));
//catch
bps.add(createPatternBreakpoint(118, sourceName, pattern));
// while
bps.add(createPatternBreakpoint(97, sourceName, pattern));
IJavaThread thread= null;
try {
thread= launchToBreakpoint("Breakpoints");
assertNotNull("Breakpoint not hit within timeout period", thread);
while (!bps.isEmpty()) {
IBreakpoint hit = getBreakpoint(thread);
assertNotNull("suspended, but not by breakpoint", hit);
assertTrue("hit un-registered breakpoint", bps.contains(hit));
assertTrue("suspended, but not by line breakpoint", hit instanceof ILineBreakpoint);
ILineBreakpoint breakpoint= (ILineBreakpoint) hit;
int lineNumber = breakpoint.getLineNumber();
int stackLine = thread.getTopStackFrame().getLineNumber();
assertTrue("line numbers of breakpoint and stack frame do not match", lineNumber == stackLine);
bps.remove(breakpoint);
breakpoint.delete();
if (!bps.isEmpty()) {
thread = resume(thread);
}
}
} finally {
terminateAndRemove(thread);
removeAllBreakpoints();
}
}
}