Bug 307938 - Rhino debugger line tracking is bogus
diff --git a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/scripts/script1.js b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/scripts/script1.js
index f19e46d..b22318e 100644
--- a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/scripts/script1.js
+++ b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/scripts/script1.js
@@ -1,6 +1,6 @@
var line1 = true;
function test() { //line 2
- return; "line 3"; //line 3
+ return "line 3"; //line 3
}//line 4
// line 5
var line6 = test();
diff --git a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/BreakpointRequestTests.java b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/BreakpointRequestTests.java
new file mode 100644
index 0000000..8cd3e88
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/BreakpointRequestTests.java
@@ -0,0 +1,188 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.debug.rhino.tests;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.eclipse.wst.jsdt.debug.core.jsdi.VirtualMachine;
+import org.eclipse.wst.jsdt.debug.rhino.transport.DebugSession;
+import org.eclipse.wst.jsdt.debug.rhino.transport.DisconnectedException;
+import org.eclipse.wst.jsdt.debug.rhino.transport.JSONConstants;
+import org.eclipse.wst.jsdt.debug.rhino.transport.Request;
+import org.eclipse.wst.jsdt.debug.rhino.transport.Response;
+import org.eclipse.wst.jsdt.debug.rhino.transport.TimeoutException;
+import org.mozilla.javascript.Context;
+import org.mozilla.javascript.Scriptable;
+
+/**
+ * Variety of tests for requesting breakpoint(s)
+ *
+ * @since 1.1
+ */
+public class BreakpointRequestTests extends RequestTest {
+
+ /**
+ * Tests that asking for an invalid breakpoint returns an unsuccessful response
+ *
+ * @throws Exception
+ */
+ public void testInvalidBreakpoint() throws Exception {
+ Request request = new Request(JSONConstants.BREAKPOINT);
+ request.getArguments().put(JSONConstants.BREAKPOINT_ID, new Integer("9999"));
+ debugSession.sendRequest(request);
+ Response response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertFalse(response.isSuccess());
+ }
+
+
+ /**
+ * Tests asking for all breakpoints when none have been set
+ *
+ * @throws Exception
+ */
+ public void testBreakpointsWithNoBreakpoints() throws Exception {
+ Request request = new Request(JSONConstants.BREAKPOINTS);
+ debugSession.sendRequest(request);
+ Response response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+ Collection breakpoints = (Collection) response.getBody().get(JSONConstants.BREAKPOINTS);
+ assertNotNull(breakpoints);
+ assertTrue(breakpoints.isEmpty());
+ }
+
+ /**
+ * Tests trying to clear an invalid breakpoint id
+ * @throws Exception
+ */
+ public void testClearInvalidBreakpoint() throws Exception {
+ Request request = new Request(JSONConstants.CLEARBREAKPOINT);
+ request.getArguments().put(JSONConstants.BREAKPOINT_ID, new Integer("9999"));
+ debugSession.sendRequest(request);
+ Response response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertFalse(response.isSuccess());
+ }
+
+ /**
+ * Tests setting a breakpoint on every valid line of the test script and verifying they exist
+ *
+ * @throws Exception
+ */
+ public void testBreakpoints() throws Exception {
+ eventHandler.addSubhandler(setBreakpointsHandler);
+ Request request = new Request(JSONConstants.BREAKPOINTS);
+ debugSession.sendRequest(request);
+ Response response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+ Collection breakpoints = (Collection) response.getBody().get(JSONConstants.BREAKPOINTS);
+ assertNotNull(breakpoints);
+ assertTrue(breakpoints.isEmpty());
+
+ String script = Util.getTestSource(Util.SRC_SCRIPTS_CONTAINER, "script1.js");
+ assertNotNull("The test source for [script1.js] must exist", script);
+
+ Scriptable scope = null;
+ Context context = contextFactory.enterContext();
+ try {
+ scope = context.initStandardObjects();
+ context.evaluateString(scope, script, "script", 0, null);
+ } finally {
+ Context.exit();
+ }
+
+ waitForEvents(1);
+
+ request = new Request(JSONConstants.BREAKPOINTS);
+ debugSession.sendRequest(request);
+ response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+ breakpoints = (Collection) response.getBody().get(JSONConstants.BREAKPOINTS);
+ assertNotNull(breakpoints);
+ assertEquals(7, breakpoints.size());
+
+ for (Iterator iterator = breakpoints.iterator(); iterator.hasNext();) {
+ Number breakpointId = (Number) iterator.next();
+ request = new Request(JSONConstants.BREAKPOINT);
+ request.getArguments().put(JSONConstants.BREAKPOINT_ID, breakpointId);
+ debugSession.sendRequest(request);
+ response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+ Map breakpoint = (Map) response.getBody().get(JSONConstants.BREAKPOINT);
+ assertEquals(breakpointId.intValue(), Util.numberAsInt(breakpoint.get(JSONConstants.BREAKPOINT_ID)));
+ assertTrue(breakpoint.containsKey(JSONConstants.SCRIPT_ID));
+ }
+ }
+
+ /**
+ * Tests setting breakpoints and removing them
+ * @throws Exception
+ */
+ public void testGetSetClearBreakpoint() throws Exception {
+ eventHandler.addSubhandler(setBreakpointsHandler);
+ eventHandler.addSubhandler(clearBreakpointsHandler);
+
+ Request request = new Request(JSONConstants.BREAKPOINTS);
+ debugSession.sendRequest(request);
+ Response response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+ Collection breakpoints = (Collection) response.getBody().get(JSONConstants.BREAKPOINTS);
+ assertNotNull(breakpoints);
+ assertTrue(breakpoints.isEmpty());
+
+ String script = Util.getTestSource(Util.SRC_SCRIPTS_CONTAINER, "script1.js");
+ assertNotNull("The test source for [script1.js] must exist", script);
+
+ Scriptable scope = null;
+ Context context = contextFactory.enterContext();
+ try {
+ scope = context.initStandardObjects();
+ context.evaluateString(scope, script, "script", 0, null);
+ } finally {
+ Context.exit();
+ }
+ waitForEvents(6);
+ request = new Request(JSONConstants.BREAKPOINTS);
+ debugSession.sendRequest(request);
+ response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+ breakpoints = (Collection) response.getBody().get(JSONConstants.BREAKPOINTS);
+ assertNotNull(breakpoints);
+ assertEquals(2, breakpoints.size());
+
+ for (Iterator iterator = breakpoints.iterator(); iterator.hasNext();) {
+ Number breakpointId = (Number) iterator.next();
+ request = new Request(JSONConstants.BREAKPOINT);
+ request.getArguments().put(JSONConstants.BREAKPOINT_ID, breakpointId);
+ debugSession.sendRequest(request);
+ response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+ Map breakpoint = (Map) response.getBody().get(JSONConstants.BREAKPOINT);
+ assertEquals(breakpointId.intValue(), Util.numberAsInt(breakpoint.get(JSONConstants.BREAKPOINT_ID)));
+ assertTrue(breakpoint.containsKey(JSONConstants.SCRIPT_ID));
+ deleteBreakpoint(debugSession, breakpointId);
+ }
+ }
+
+ void deleteBreakpoint(DebugSession session, Number breakpointid) {
+ Request request = new Request(JSONConstants.CLEARBREAKPOINT);
+ request.getArguments().put(JSONConstants.BREAKPOINT_ID, breakpointid);
+ try {
+ debugSession.sendRequest(request);
+ Response response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+ } catch (DisconnectedException e) {
+ e.printStackTrace();
+ } catch (TimeoutException e) {
+ e.printStackTrace();
+ }
+ }
+}
diff --git a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/FrameRequestTests.java b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/FrameRequestTests.java
new file mode 100644
index 0000000..7fd5b7e
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/FrameRequestTests.java
@@ -0,0 +1,188 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.debug.rhino.tests;
+
+import java.util.Collection;
+import java.util.Iterator;
+import java.util.Map;
+
+import org.eclipse.wst.jsdt.debug.core.jsdi.VirtualMachine;
+import org.eclipse.wst.jsdt.debug.rhino.tests.TestEventHandler.Subhandler;
+import org.eclipse.wst.jsdt.debug.rhino.transport.DebugSession;
+import org.eclipse.wst.jsdt.debug.rhino.transport.DisconnectedException;
+import org.eclipse.wst.jsdt.debug.rhino.transport.EventPacket;
+import org.eclipse.wst.jsdt.debug.rhino.transport.JSONConstants;
+import org.eclipse.wst.jsdt.debug.rhino.transport.Request;
+import org.eclipse.wst.jsdt.debug.rhino.transport.Response;
+import org.eclipse.wst.jsdt.debug.rhino.transport.TimeoutException;
+import org.mozilla.javascript.Context;
+import org.mozilla.javascript.Scriptable;
+
+/**
+ * Variety of tests for requesting frame(s) / frame information
+ *
+ * @since 1.1
+ */
+public class FrameRequestTests extends RequestTest {
+
+
+ Subhandler setBreakpointHandler = new Subhandler() {
+ public boolean handleEvent(DebugSession debugSession, EventPacket event) {
+ if (event.getEvent().equals(JSONConstants.SCRIPT)) {
+ Object scriptId = event.getBody().get(JSONConstants.SCRIPT_ID);
+ Request request = new Request(JSONConstants.SCRIPT);
+ request.getArguments().put(JSONConstants.SCRIPT_ID, scriptId);
+ try {
+ debugSession.sendRequest(request);
+ Response response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+ Map result = (Map) response.getBody().get(JSONConstants.SCRIPT);
+ assertNotNull("The script map cannot be null", result);
+ // just set the breakpoint on line 6
+ request = new Request(JSONConstants.SETBREAKPOINT);
+ request.getArguments().put(JSONConstants.SCRIPT_ID, scriptId);
+ request.getArguments().put(JSONConstants.LINE, new Integer(6));
+ debugSession.sendRequest(request);
+ response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+ } catch (DisconnectedException e) {
+ e.printStackTrace();
+ } catch (TimeoutException e) {
+ e.printStackTrace();
+ }
+ return true;
+ }
+ return false;
+ }
+ };
+ /**
+ * Tests getting a frame once suspended
+ * @throws Exception
+ */
+ public void testFramesAndFrameLookup() throws Exception {
+
+ eventHandler.addSubhandler(setBreakpointHandler);
+
+ final Object[] success = new Object[1];
+
+ Subhandler frameCheckHandler = new Subhandler() {
+ public boolean handleEvent(DebugSession debugSession, EventPacket event) {
+ if (event.getEvent().equals(JSONConstants.BREAK)) {
+ Number threadId = (Number) event.getBody().get(JSONConstants.THREAD_ID);
+ Number contextId = (Number) event.getBody().get(JSONConstants.CONTEXT_ID);
+ Request request = new Request(JSONConstants.FRAMES);
+ request.getArguments().put(JSONConstants.THREAD_ID, threadId);
+ try {
+ debugSession.sendRequest(request);
+ Response response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+ Collection frames = (Collection) response.getBody().get(JSONConstants.FRAMES);
+ for (Iterator iterator = frames.iterator(); iterator.hasNext();) {
+ Number frameId = (Number) iterator.next();
+ request = new Request(JSONConstants.FRAME);
+ request.getArguments().put(JSONConstants.THREAD_ID, threadId);
+ request.getArguments().put(JSONConstants.CONTEXT_ID, contextId);
+ request.getArguments().put(JSONConstants.FRAME_ID, frameId);
+ debugSession.sendRequest(request);
+ response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+ }
+ success[0] = Boolean.TRUE;
+ } catch (DisconnectedException e) {
+ e.printStackTrace();
+ } catch (TimeoutException e) {
+ e.printStackTrace();
+ }
+ return true;
+ }
+ return false;
+ }
+ };
+ eventHandler.addSubhandler(frameCheckHandler);
+
+ String script = Util.getTestSource(Util.SRC_SCRIPTS_CONTAINER, "script1.js");
+ assertNotNull("The test source for [script1.js] must exist", script);
+
+ Scriptable scope = null;
+ Context context = contextFactory.enterContext();
+ try {
+ scope = context.initStandardObjects();
+ context.evaluateString(scope, script, JSONConstants.SCRIPT, 0, null);
+ } finally {
+ Context.exit();
+ }
+ //script + breakpoint on line 6
+ waitForEvents(2);
+ assertEquals(Boolean.TRUE, success[0]);
+ }
+
+ /**
+ * Tests getting frames and running an evaluate
+ * @throws Exception
+ */
+ public void testFramesAndFrameLookupAndEvaluate() throws Exception {
+ eventHandler.addSubhandler(setBreakpointHandler);
+
+ final Object[] success = new Object[1];
+
+ Subhandler frameCheckHandler = new Subhandler() {
+ public boolean handleEvent(DebugSession debugSession, EventPacket event) {
+ if (event.getEvent().equals(JSONConstants.BREAK)) {
+ Number threadId = (Number) event.getBody().get(JSONConstants.THREAD_ID);
+ Number contextId = (Number) event.getBody().get(JSONConstants.CONTEXT_ID);
+ Request request = new Request(JSONConstants.FRAMES);
+ request.getArguments().put(JSONConstants.THREAD_ID, threadId);
+ try {
+ debugSession.sendRequest(request);
+ Response response = debugSession.receiveResponse(request.getSequence(), 10000);
+ assertTrue(response.isSuccess());
+ Collection frames = (Collection) response.getBody().get(JSONConstants.FRAMES);
+ for (Iterator iterator = frames.iterator(); iterator.hasNext();) {
+ Number frameId = (Number) iterator.next();
+ request = new Request(JSONConstants.EVALUATE);
+ request.getArguments().put(JSONConstants.THREAD_ID, threadId);
+ request.getArguments().put(JSONConstants.CONTEXT_ID, contextId);
+ request.getArguments().put(JSONConstants.FRAME_ID, frameId);
+ request.getArguments().put(JSONConstants.EXPRESSION, "this");
+ debugSession.sendRequest(request);
+ response = debugSession.receiveResponse(request.getSequence(), 10000);
+ assertTrue(response.isSuccess());
+ assertTrue(response.getBody().containsKey(JSONConstants.EVALUATE));
+ }
+ success[0] = Boolean.TRUE;
+ } catch (DisconnectedException e) {
+ e.printStackTrace();
+ } catch (TimeoutException e) {
+ e.printStackTrace();
+ }
+ return true;
+ }
+ return false;
+ }
+ };
+ eventHandler.addSubhandler(frameCheckHandler);
+
+ String script = Util.getTestSource(Util.SRC_SCRIPTS_CONTAINER, "script1.js");
+ assertNotNull("The test source for [script1.js] must exist", script);
+
+ Scriptable scope = null;
+ Context context = contextFactory.enterContext();
+ try {
+ scope = context.initStandardObjects();
+ context.evaluateString(scope, script, "script", 0, null);
+ } finally {
+ Context.exit();
+ }
+ //script + breakpoint + StepEvent when we exit context
+ waitForEvents(3);
+ assertEquals(Boolean.TRUE, success[0]);
+ }
+}
diff --git a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestBreakpointTest.java b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestBreakpointTest.java
deleted file mode 100644
index 2d47952..0000000
--- a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestBreakpointTest.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation 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:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.jsdt.debug.rhino.tests;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.wst.jsdt.debug.rhino.tests.TestEventHandler.Subhandler;
-import org.eclipse.wst.jsdt.debug.rhino.transport.DebugSession;
-import org.eclipse.wst.jsdt.debug.rhino.transport.DisconnectedException;
-import org.eclipse.wst.jsdt.debug.rhino.transport.EventPacket;
-import org.eclipse.wst.jsdt.debug.rhino.transport.JSONConstants;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Request;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Response;
-import org.eclipse.wst.jsdt.debug.rhino.transport.TimeoutException;
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.Scriptable;
-
-public class RequestBreakpointTest extends RequestTest {
-
- /**
- * Tests that asking for an invalid breakpoint returns an unsuccessful response
- *
- * @throws DisconnectedException
- * @throws TimeoutException
- */
- public void testInvalidBreakpoint() throws DisconnectedException, TimeoutException {
- Request request = new Request(JSONConstants.BREAKPOINT);
- request.getArguments().put(JSONConstants.BREAKPOINT_ID, new Integer("9999"));
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 30000);
- assertFalse(response.isSuccess());
- }
-
- public void testGetSetClearBreakpoint() throws DisconnectedException, TimeoutException {
-
- Subhandler setbreakpointHandler = new Subhandler() {
- public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals(JSONConstants.SCRIPT)) {
- Number scriptId = (Number) event.getBody().get(JSONConstants.SCRIPT_ID);
- Request request = new Request(JSONConstants.SCRIPT);
- request.getArguments().put(JSONConstants.SCRIPT_ID, scriptId);
- try {
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- Map result = (Map) response.getBody().get(JSONConstants.SCRIPT);
-
- // line numbers
- List lineNumbers = (List) result.get(JSONConstants.LINES);
- for (Iterator iterator = lineNumbers.iterator(); iterator.hasNext();) {
- Number lineNumber = (Number) iterator.next();
- request = new Request(JSONConstants.SETBREAKPOINT);
- request.getArguments().put(JSONConstants.SCRIPT_ID, scriptId);
- request.getArguments().put(JSONConstants.LINE, lineNumber);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
-
- Map breakpoint = (Map) response.getBody().get(JSONConstants.BREAKPOINT);
- Number breakpointId = (Number) breakpoint.get(JSONConstants.BREAKPOINT_ID);
- request = new Request(JSONConstants.BREAKPOINT);
- request.getArguments().put(JSONConstants.BREAKPOINT_ID, breakpointId);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- breakpoint = (Map) response.getBody().get(JSONConstants.BREAKPOINT);
- assertEquals(breakpointId.intValue(), Util.numberAsInt(breakpoint.get(JSONConstants.BREAKPOINT_ID)));
- assertEquals(scriptId.intValue(), Util.numberAsInt(breakpoint.get(JSONConstants.SCRIPT_ID)));
- assertEquals(lineNumber.intValue(), Util.numberAsInt(breakpoint.get(JSONConstants.LINE)));
- assertNull(breakpoint.get(JSONConstants.FUNCTION));
- }
-
- // functions
- List functionNames = (List) result.get(JSONConstants.FUNCTIONS);
- for (Iterator iterator = functionNames.iterator(); iterator.hasNext();) {
- String functionName = (String) iterator.next();
- request = new Request(JSONConstants.SETBREAKPOINT);
- request.getArguments().put(JSONConstants.SCRIPT_ID, scriptId);
- request.getArguments().put(JSONConstants.FUNCTION, functionName);
- request.getArguments().put(JSONConstants.CONDITION, "1===1");
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
-
- Map breakpoint = (Map) response.getBody().get(JSONConstants.BREAKPOINT);
- Number breakpointId = (Number) breakpoint.get(JSONConstants.BREAKPOINT_ID);
- request = new Request(JSONConstants.BREAKPOINT);
- request.getArguments().put(JSONConstants.BREAKPOINT_ID, breakpointId);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- breakpoint = (Map) response.getBody().get(JSONConstants.BREAKPOINT);
- assertEquals(breakpointId.intValue(), Util.numberAsInt(breakpoint.get(JSONConstants.BREAKPOINT_ID)));
- assertEquals(scriptId.intValue(), Util.numberAsInt(breakpoint.get(JSONConstants.SCRIPT_ID)));
- assertEquals(functionName, breakpoint.get(JSONConstants.FUNCTION));
- assertEquals("1===1", breakpoint.get(JSONConstants.CONDITION));
- assertNull(breakpoint.get(JSONConstants.LINE));
- }
-
- // script onEnter
- request = new Request(JSONConstants.SETBREAKPOINT);
- request.getArguments().put(JSONConstants.SCRIPT_ID, scriptId);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
-
- Map breakpoint = (Map) response.getBody().get(JSONConstants.BREAKPOINT);
- Number breakpointId = (Number) breakpoint.get(JSONConstants.BREAKPOINT_ID);
- request = new Request(JSONConstants.BREAKPOINT);
- request.getArguments().put(JSONConstants.BREAKPOINT_ID, breakpointId);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- breakpoint = (Map) response.getBody().get(JSONConstants.BREAKPOINT);
- assertEquals(breakpointId.intValue(), Util.numberAsInt(breakpoint.get(JSONConstants.BREAKPOINT_ID)));
- assertEquals(scriptId.intValue(), Util.numberAsInt(breakpoint.get(JSONConstants.SCRIPT_ID)));
- assertNull(breakpoint.get(JSONConstants.LINE));
- assertNull(breakpoint.get(JSONConstants.FUNCTION));
- } catch (DisconnectedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return true;
- }
- return false;
- }
- };
- eventHandler.addSubhandler(setbreakpointHandler);
-
- Subhandler clearbreakpointHandler = new Subhandler() {
- public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals(JSONConstants.BREAK)) {
- List breakpoints = (List) event.getBody().get(JSONConstants.BREAKPOINTS);
- for (Iterator iterator = breakpoints.iterator(); iterator.hasNext();) {
- Number breakpointId = (Number) iterator.next();
- Request request = new Request(JSONConstants.CLEARBREAKPOINT);
- request.getArguments().put(JSONConstants.BREAKPOINT_ID, breakpointId);
- try {
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
-
- Map breakpoint = (Map) response.getBody().get(JSONConstants.BREAKPOINT);
- breakpointId = (Number) breakpoint.get(JSONConstants.BREAKPOINT_ID);
- request = new Request(JSONConstants.BREAKPOINT);
- request.getArguments().put(JSONConstants.BREAKPOINT_ID, breakpointId);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertFalse(response.isSuccess());
- } catch (DisconnectedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- return true;
- }
- return false;
- }
- };
- eventHandler.addSubhandler(clearbreakpointHandler);
-
- Request request = new Request(JSONConstants.BREAKPOINTS);
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 30000);
- assertTrue(response.isSuccess());
- Collection breakpoints = (Collection) response.getBody().get(JSONConstants.BREAKPOINTS);
- assertNotNull(breakpoints);
- assertTrue(breakpoints.isEmpty());
-
- String script = "var line1 = true;\r\n";
- script += "function test() { // line 2 \r\n";
- script += " return \"line 3\";\r\n";
- script += "} // line 4 \r\n";
- script += "// line 5\r\n";
- script += "var line6 = test();\r\n";
- script += "var line7 = test();\r\n";
- script += "// line 8\r\n";
- script += "// line 9\r\n";
- script += "var line10 = test();\r\n";
- script += "// line 11\r\n";
- script += "// line 12\r\n";
- script += "function test2() { // line 13 \r\n";
- script += " return \"line 14\";\r\n";
- script += "} // line 15 \r\n";
- script += "// line 16\r\n";
- script += "// line 17\r\n";
-
- Scriptable scope = null;
- Context context = contextFactory.enterContext();
- try {
- scope = context.initStandardObjects();
- context.evaluateString(scope, script, "script", 0, null);
- } finally {
- Context.exit();
- }
- waitForEvents(8);
- request = new Request(JSONConstants.BREAKPOINTS);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 30000);
- assertTrue(response.isSuccess());
- breakpoints = (Collection) response.getBody().get(JSONConstants.BREAKPOINTS);
- assertNotNull(breakpoints);
- assertEquals(3, breakpoints.size());
-
- for (Iterator iterator = breakpoints.iterator(); iterator.hasNext();) {
- Number breakpointId = (Number) iterator.next();
- request = new Request(JSONConstants.BREAKPOINT);
- request.getArguments().put(JSONConstants.BREAKPOINT_ID, breakpointId);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- Map breakpoint = (Map) response.getBody().get(JSONConstants.BREAKPOINT);
- assertEquals(breakpointId.intValue(), Util.numberAsInt(breakpoint.get(JSONConstants.BREAKPOINT_ID)));
- assertTrue(breakpoint.containsKey(JSONConstants.SCRIPT_ID));
- }
- }
-}
diff --git a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestBreakpointsTest.java b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestBreakpointsTest.java
deleted file mode 100644
index 53e098b..0000000
--- a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestBreakpointsTest.java
+++ /dev/null
@@ -1,296 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation 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:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.jsdt.debug.rhino.tests;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.wst.jsdt.debug.rhino.tests.TestEventHandler.Subhandler;
-import org.eclipse.wst.jsdt.debug.rhino.transport.DebugSession;
-import org.eclipse.wst.jsdt.debug.rhino.transport.DisconnectedException;
-import org.eclipse.wst.jsdt.debug.rhino.transport.EventPacket;
-import org.eclipse.wst.jsdt.debug.rhino.transport.JSONConstants;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Request;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Response;
-import org.eclipse.wst.jsdt.debug.rhino.transport.TimeoutException;
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.Scriptable;
-
-public class RequestBreakpointsTest extends RequestTest {
-
- public void testBreakpointsWithNoBreakpoints() throws DisconnectedException, TimeoutException {
- Request request = new Request(JSONConstants.BREAKPOINTS);
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 30000);
- assertTrue(response.isSuccess());
- Collection breakpoints = (Collection) response.getBody().get(JSONConstants.BREAKPOINTS);
- assertNotNull(breakpoints);
- assertTrue(breakpoints.isEmpty());
- }
-
- public void testBreakpoints() throws DisconnectedException, TimeoutException {
- Subhandler setbreakpointHandler = new Subhandler() {
- public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals("script")) {
- Object scriptId = event.getBody().get("scriptId");
- Request request = new Request("script");
- request.getArguments().put("scriptId", scriptId);
- try {
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- Map result = (Map) response.getBody().get("script");
-
- // line numbers
- List lineNumbers = (List) result.get("lines");
- for (Iterator iterator = lineNumbers.iterator(); iterator.hasNext();) {
- Number lineNumber = (Number) iterator.next();
- request = new Request("setbreakpoint");
- request.getArguments().put("scriptId", scriptId);
- request.getArguments().put("line", lineNumber);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- }
-
- // functions
- List functionNames = (List) result.get("functions");
- for (Iterator iterator = functionNames.iterator(); iterator.hasNext();) {
- String functionName = (String) iterator.next();
- request = new Request("setbreakpoint");
- request.getArguments().put("scriptId", scriptId);
- request.getArguments().put("function", functionName);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- }
-
- // script onEnter
- request = new Request("setbreakpoint");
- request.getArguments().put("scriptId", scriptId);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- } catch (DisconnectedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return true;
- }
- return false;
- }
- };
- eventHandler.addSubhandler(setbreakpointHandler);
-
- Request request = new Request(JSONConstants.BREAKPOINTS);
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 30000);
- assertTrue(response.isSuccess());
- Collection breakpoints = (Collection) response.getBody().get(JSONConstants.BREAKPOINTS);
- assertNotNull(breakpoints);
- assertTrue(breakpoints.isEmpty());
-
- String script = "var line1 = true;\r\n";
- script += "function test() { // line 2 \r\n";
- script += " return \"line 3\";\r\n";
- script += "} // line 4 \r\n";
- script += "// line 5\r\n";
- script += "var line6 = test();\r\n";
- script += "var line7 = test();\r\n";
- script += "// line 8\r\n";
- script += "// line 9\r\n";
- script += "var line10 = test();\r\n";
- script += "// line 11\r\n";
- script += "// line 12\r\n";
- script += "function test2() { // line 13 \r\n";
- script += " return \"line 14\";\r\n";
- script += "} // line 15 \r\n";
- script += "// line 16\r\n";
- script += "// line 17\r\n";
-
- Scriptable scope = null;
- Context context = contextFactory.enterContext();
- try {
- scope = context.initStandardObjects();
- context.evaluateString(scope, script, "script", 0, null);
- } finally {
- Context.exit();
- }
-
- waitForEvents(1);
-
- request = new Request(JSONConstants.BREAKPOINTS);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 30000);
- assertTrue(response.isSuccess());
- breakpoints = (Collection) response.getBody().get(JSONConstants.BREAKPOINTS);
- assertNotNull(breakpoints);
- assertEquals(10, breakpoints.size());
-
- for (Iterator iterator = breakpoints.iterator(); iterator.hasNext();) {
- Number breakpointId = (Number) iterator.next();
- request = new Request("breakpoint");
- request.getArguments().put("breakpointId", breakpointId);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- Map breakpoint = (Map) response.getBody().get("breakpoint");
- assertEquals(breakpointId.intValue(), Util.numberAsInt(breakpoint.get("breakpointId")));
- assertTrue(breakpoint.containsKey("scriptId"));
- }
- }
-
- public void testBreakpointsWithClear() throws DisconnectedException, TimeoutException {
- Subhandler setbreakpointHandler = new Subhandler() {
- public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals("script")) {
- Object scriptId = event.getBody().get("scriptId");
- Request request = new Request("script");
- request.getArguments().put("scriptId", scriptId);
- try {
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- Map result = (Map) response.getBody().get("script");
-
- // line numbers
- List lineNumbers = (List) result.get("lines");
- for (Iterator iterator = lineNumbers.iterator(); iterator.hasNext();) {
- Number lineNumber = (Number) iterator.next();
- request = new Request("setbreakpoint");
- request.getArguments().put("scriptId", scriptId);
- request.getArguments().put("line", lineNumber);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- }
-
- // functions
- List functionNames = (List) result.get("functions");
- for (Iterator iterator = functionNames.iterator(); iterator.hasNext();) {
- String functionName = (String) iterator.next();
- request = new Request("setbreakpoint");
- request.getArguments().put("scriptId", scriptId);
- request.getArguments().put("function", functionName);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- }
-
- // script onEnter
- request = new Request("setbreakpoint");
- request.getArguments().put("scriptId", scriptId);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- } catch (DisconnectedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return true;
- }
- return false;
- }
- };
- eventHandler.addSubhandler(setbreakpointHandler);
-
- Subhandler clearbreakpointHandler = new Subhandler() {
- public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals("break")) {
- List breakpoints = (List) event.getBody().get(JSONConstants.BREAKPOINTS);
- for (Iterator iterator = breakpoints.iterator(); iterator.hasNext();) {
- Number breakpointId = (Number) iterator.next();
- Request request = new Request("clearbreakpoint");
- request.getArguments().put("breakpointId", breakpointId);
- try {
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- } catch (DisconnectedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- return true;
- }
- return false;
- }
- };
- eventHandler.addSubhandler(clearbreakpointHandler);
-
- Request request = new Request(JSONConstants.BREAKPOINTS);
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 30000);
- assertTrue(response.isSuccess());
- Collection breakpoints = (Collection) response.getBody().get(JSONConstants.BREAKPOINTS);
- assertNotNull(breakpoints);
- assertTrue(breakpoints.isEmpty());
-
- String script = "var line1 = true;\r\n";
- script += "function test() { // line 2 \r\n";
- script += " return \"line 3\";\r\n";
- script += "} // line 4 \r\n";
- script += "// line 5\r\n";
- script += "var line6 = test();\r\n";
- script += "var line7 = test();\r\n";
- script += "// line 8\r\n";
- script += "// line 9\r\n";
- script += "var line10 = test();\r\n";
- script += "// line 11\r\n";
- script += "// line 12\r\n";
- script += "function test2() { // line 13 \r\n";
- script += " return \"line 14\";\r\n";
- script += "} // line 15 \r\n";
- script += "// line 16\r\n";
- script += "// line 17\r\n";
-
- Scriptable scope = null;
- Context context = contextFactory.enterContext();
- try {
- scope = context.initStandardObjects();
- context.evaluateString(scope, script, "script", 0, null);
- } finally {
- Context.exit();
- }
- waitForEvents(8);
- request = new Request(JSONConstants.BREAKPOINTS);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 30000);
- assertTrue(response.isSuccess());
- breakpoints = (Collection) response.getBody().get(JSONConstants.BREAKPOINTS);
- assertNotNull(breakpoints);
- assertEquals(3, breakpoints.size());
-
- for (Iterator iterator = breakpoints.iterator(); iterator.hasNext();) {
- Number breakpointId = (Number) iterator.next();
- request = new Request("breakpoint");
- request.getArguments().put("breakpointId", breakpointId);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- Map breakpoint = (Map) response.getBody().get("breakpoint");
- assertEquals(breakpointId.intValue(), Util.numberAsInt(breakpoint.get("breakpointId")));
- assertTrue(breakpoint.containsKey("scriptId"));
- }
- }
-
-}
diff --git a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestClearBreakpointTest.java b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestClearBreakpointTest.java
deleted file mode 100644
index 6d14a54..0000000
--- a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestClearBreakpointTest.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation 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:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.jsdt.debug.rhino.tests;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.wst.jsdt.debug.rhino.tests.TestEventHandler.Subhandler;
-import org.eclipse.wst.jsdt.debug.rhino.transport.DebugSession;
-import org.eclipse.wst.jsdt.debug.rhino.transport.DisconnectedException;
-import org.eclipse.wst.jsdt.debug.rhino.transport.EventPacket;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Request;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Response;
-import org.eclipse.wst.jsdt.debug.rhino.transport.TimeoutException;
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.Scriptable;
-
-public class RequestClearBreakpointTest extends RequestTest {
-
- public void testClearInvalidBreakpoint() throws DisconnectedException, TimeoutException {
- Request request = new Request("clearbreakpoint");
- request.getArguments().put("breakpointId", new Integer("9999"));
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 30000);
- assertFalse(response.isSuccess());
- }
-
- public void testGetSetClearBreakpoint() throws DisconnectedException, TimeoutException {
-
- Subhandler setbreakpointHandler = new Subhandler() {
- public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals("script")) {
- Object scriptId = event.getBody().get("scriptId");
- Request request = new Request("script");
- request.getArguments().put("scriptId", scriptId);
- try {
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- Map result = (Map) response.getBody().get("script");
-
- // line numbers
- List lineNumbers = (List) result.get("lines");
- for (Iterator iterator = lineNumbers.iterator(); iterator.hasNext();) {
- Number lineNumber = (Number) iterator.next();
- request = new Request("setbreakpoint");
- request.getArguments().put("scriptId", scriptId);
- request.getArguments().put("line", lineNumber);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- }
-
- // functions
- List functionNames = (List) result.get("functions");
- for (Iterator iterator = functionNames.iterator(); iterator.hasNext();) {
- String functionName = (String) iterator.next();
- request = new Request("setbreakpoint");
- request.getArguments().put("scriptId", scriptId);
- request.getArguments().put("function", functionName);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- }
-
- // script onEnter
- request = new Request("setbreakpoint");
- request.getArguments().put("scriptId", scriptId);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- } catch (DisconnectedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return true;
- }
- return false;
- }
- };
- eventHandler.addSubhandler(setbreakpointHandler);
-
- Subhandler clearbreakpointHandler = new Subhandler() {
- public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals("break")) {
- List breakpoints = (List) event.getBody().get("breakpoints");
- for (Iterator iterator = breakpoints.iterator(); iterator.hasNext();) {
- Number breakpointId = (Number) iterator.next();
- Request request = new Request("clearbreakpoint");
- request.getArguments().put("breakpointId", breakpointId);
- try {
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- } catch (DisconnectedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- }
- return true;
- }
- return false;
- }
- };
- eventHandler.addSubhandler(clearbreakpointHandler);
-
- Request request = new Request("breakpoints");
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 30000);
- assertTrue(response.isSuccess());
- Collection breakpoints = (Collection) response.getBody().get("breakpoints");
- assertNotNull(breakpoints);
- assertTrue(breakpoints.isEmpty());
-
- String script = "var line1 = true;\r\n";
- script += "function test() { // line 2 \r\n";
- script += " return \"line 3\";\r\n";
- script += "} // line 4 \r\n";
- script += "// line 5\r\n";
- script += "var line6 = test();\r\n";
- script += "var line7 = test();\r\n";
- script += "// line 8\r\n";
- script += "// line 9\r\n";
- script += "var line10 = test();\r\n";
- script += "// line 11\r\n";
- script += "// line 12\r\n";
- script += "function test2() { // line 13 \r\n";
- script += " return \"line 14\";\r\n";
- script += "} // line 15 \r\n";
- script += "// line 16\r\n";
- script += "// line 17\r\n";
-
- Scriptable scope = null;
- Context context = contextFactory.enterContext();
- try {
- scope = context.initStandardObjects();
- context.evaluateString(scope, script, "script", 0, null);
- } finally {
- Context.exit();
- }
- waitForEvents(8);
- request = new Request("breakpoints");
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 30000);
- assertTrue(response.isSuccess());
- breakpoints = (Collection) response.getBody().get("breakpoints");
- assertNotNull(breakpoints);
- assertEquals(3, breakpoints.size());
-
- for (Iterator iterator = breakpoints.iterator(); iterator.hasNext();) {
- Number breakpointId = (Number) iterator.next();
- request = new Request("breakpoint");
- request.getArguments().put("breakpointId", breakpointId);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- Map breakpoint = (Map) response.getBody().get("breakpoint");
- assertEquals(breakpointId.intValue(), Util.numberAsInt(breakpoint.get("breakpointId")));
- assertTrue(breakpoint.containsKey("scriptId"));
- }
- }
-}
diff --git a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestEvaluateTest.java b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestEvaluateTest.java
deleted file mode 100644
index 5656a0e..0000000
--- a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestEvaluateTest.java
+++ /dev/null
@@ -1,138 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation 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:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.jsdt.debug.rhino.tests;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.wst.jsdt.debug.rhino.tests.TestEventHandler.Subhandler;
-import org.eclipse.wst.jsdt.debug.rhino.transport.DebugSession;
-import org.eclipse.wst.jsdt.debug.rhino.transport.DisconnectedException;
-import org.eclipse.wst.jsdt.debug.rhino.transport.EventPacket;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Request;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Response;
-import org.eclipse.wst.jsdt.debug.rhino.transport.TimeoutException;
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.Scriptable;
-
-public class RequestEvaluateTest extends RequestTest {
-
- public void testFramesAndFrameLookupAndEvaluate() throws DisconnectedException, TimeoutException {
-
- Subhandler setbreakpointHandler = new Subhandler() {
- public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals("script")) {
- Object scriptId = event.getBody().get("scriptId");
- Request request = new Request("script");
- request.getArguments().put("scriptId", scriptId);
- try {
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- Map result = (Map) response.getBody().get("script");
- // functions
- List functionNames = (List) result.get("functions");
- for (Iterator iterator = functionNames.iterator(); iterator.hasNext();) {
- String functionName = (String) iterator.next();
- request = new Request("setbreakpoint");
- request.getArguments().put("scriptId", scriptId);
- request.getArguments().put("function", functionName);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- }
- } catch (DisconnectedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return true;
- }
- return false;
- }
- };
- eventHandler.addSubhandler(setbreakpointHandler);
-
- final Object[] success = new Object[1];
-
- Subhandler frameCheckHandler = new Subhandler() {
- public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals("break")) {
- Number threadId = (Number) event.getBody().get("threadId");
- Number contextId = (Number) event.getBody().get("contextId");
- Request request = new Request("frames");
- request.getArguments().put("threadId", threadId);
- try {
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- Collection frames = (Collection) response.getBody().get("frames");
- for (Iterator iterator = frames.iterator(); iterator.hasNext();) {
- Number frameId = (Number) iterator.next();
- request = new Request("evaluate");
- request.getArguments().put("threadId", threadId);
- request.getArguments().put("contextId", contextId);
- request.getArguments().put("frameId", frameId);
- request.getArguments().put("expression", "this");
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- assertTrue(response.getBody().containsKey("evaluate"));
- }
- success[0] = Boolean.TRUE;
- } catch (DisconnectedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return true;
- }
- return false;
- }
- };
- eventHandler.addSubhandler(frameCheckHandler);
-
- String script = "var line1 = true;\r\n";
- script += "function test() { // line 2 \r\n";
- script += " return \"line 3\";\r\n";
- script += "} // line 4 \r\n";
- script += "// line 5\r\n";
- script += "var line6 = test();\r\n";
- script += "var line7 = test();\r\n";
- script += "// line 8\r\n";
- script += "// line 9\r\n";
- script += "var line10 = test();\r\n";
- script += "// line 11\r\n";
- script += "// line 12\r\n";
- script += "function test2() { // line 13 \r\n";
- script += " return \"line 14\";\r\n";
- script += "} // line 15 \r\n";
- script += "// line 16\r\n";
- script += "// line 17\r\n";
-
- Scriptable scope = null;
- Context context = contextFactory.enterContext();
- try {
- scope = context.initStandardObjects();
- context.evaluateString(scope, script, "script", 0, null);
- } finally {
- Context.exit();
- }
- waitForEvents(4);
- assertEquals(Boolean.TRUE, success[0]);
- }
-}
diff --git a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestFrameTest.java b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestFrameTest.java
deleted file mode 100644
index bd95107..0000000
--- a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestFrameTest.java
+++ /dev/null
@@ -1,139 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation 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:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.jsdt.debug.rhino.tests;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.wst.jsdt.debug.rhino.tests.TestEventHandler.Subhandler;
-import org.eclipse.wst.jsdt.debug.rhino.transport.DebugSession;
-import org.eclipse.wst.jsdt.debug.rhino.transport.DisconnectedException;
-import org.eclipse.wst.jsdt.debug.rhino.transport.EventPacket;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Request;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Response;
-import org.eclipse.wst.jsdt.debug.rhino.transport.TimeoutException;
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.Scriptable;
-import org.osgi.framework.Constants;
-
-public class RequestFrameTest extends RequestTest {
-
- public void testFramesAndFrameLookupAndEvaluate() throws DisconnectedException, TimeoutException {
-
- Subhandler setbreakpointHandler = new Subhandler() {
- public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals("script")) {
- Object scriptId = event.getBody().get("scriptId");
- Request request = new Request("script");
- request.getArguments().put("scriptId", scriptId);
- try {
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- Map result = (Map) response.getBody().get("script");
- // functions
- List functionNames = (List) result.get("functions");
- for (Iterator iterator = functionNames.iterator(); iterator.hasNext();) {
- String functionName = (String) iterator.next();
- request = new Request("setbreakpoint");
- request.getArguments().put("scriptId", scriptId);
- request.getArguments().put("function", functionName);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- }
- } catch (DisconnectedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return true;
- }
- return false;
- }
- };
- eventHandler.addSubhandler(setbreakpointHandler);
-
- final Object[] success = new Object[1];
-
- Subhandler frameCheckHandler = new Subhandler() {
- public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals("break")) {
- Number threadId = (Number) event.getBody().get("threadId");
- Number contextId = (Number) event.getBody().get("contextId");
- Request request = new Request("frames");
- request.getArguments().put("threadId", threadId);
- try {
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- Collection frames = (Collection) response.getBody().get("frames");
- for (Iterator iterator = frames.iterator(); iterator.hasNext();) {
- Number frameId = (Number) iterator.next();
- request = new Request("frame");
- request.getArguments().put("threadId", threadId);
- request.getArguments().put("contextId", contextId);
- request.getArguments().put("frameId", frameId);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- }
- success[0] = Boolean.TRUE;
- } catch (DisconnectedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return true;
- }
- return false;
- }
- };
- eventHandler.addSubhandler(frameCheckHandler);
-
- Map headers = new HashMap();
- headers.put(Constants.BUNDLE_SYMBOLICNAME, "test");
- String script = "var line1 = true;\r\n";
- script += "function test() { // line 2 \r\n";
- script += " return \"line 3\";\r\n";
- script += "} // line 4 \r\n";
- script += "// line 5\r\n";
- script += "var line6 = test();\r\n";
- script += "var line7 = test();\r\n";
- script += "// line 8\r\n";
- script += "// line 9\r\n";
- script += "var line10 = test();\r\n";
- script += "// line 11\r\n";
- script += "// line 12\r\n";
- script += "function test2() { // line 13 \r\n";
- script += " return \"line 14\";\r\n";
- script += "} // line 15 \r\n";
- script += "// line 16\r\n";
- script += "// line 17\r\n";
- Scriptable scope = null;
- Context context = contextFactory.enterContext();
- try {
- scope = context.initStandardObjects();
- context.evaluateString(scope, script, "script", 0, null);
- } finally {
- Context.exit();
- }
- waitForEvents(4);
- assertEquals(Boolean.TRUE, success[0]);
- }
-}
diff --git a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestFramesTest.java b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestFramesTest.java
deleted file mode 100644
index d7c38a9..0000000
--- a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestFramesTest.java
+++ /dev/null
@@ -1,160 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation 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:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.jsdt.debug.rhino.tests;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.wst.jsdt.debug.rhino.tests.TestEventHandler.Subhandler;
-import org.eclipse.wst.jsdt.debug.rhino.transport.DebugSession;
-import org.eclipse.wst.jsdt.debug.rhino.transport.DisconnectedException;
-import org.eclipse.wst.jsdt.debug.rhino.transport.EventPacket;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Request;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Response;
-import org.eclipse.wst.jsdt.debug.rhino.transport.TimeoutException;
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.Scriptable;
-import org.osgi.framework.Constants;
-
-public class RequestFramesTest extends RequestTest {
-
- public void testFramesAndFrameLookupAndEvaluate() throws DisconnectedException, TimeoutException {
-
- Subhandler setbreakpointHandler = new Subhandler() {
- public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals("script")) {
- Object scriptId = event.getBody().get("scriptId");
- Request request = new Request("script");
- request.getArguments().put("scriptId", scriptId);
- try {
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- Map result = (Map) response.getBody().get("script");
- // functions
- List functionNames = (List) result.get("functions");
- for (Iterator iterator = functionNames.iterator(); iterator.hasNext();) {
- String functionName = (String) iterator.next();
- request = new Request("setbreakpoint");
- request.getArguments().put("scriptId", scriptId);
- request.getArguments().put("function", functionName);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- }
- } catch (DisconnectedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return true;
- }
- return false;
- }
- };
- eventHandler.addSubhandler(setbreakpointHandler);
-
- final Object[] success = new Object[1];
-
- Subhandler frameCheckHandler = new Subhandler() {
- public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals("break")) {
- Number threadId = (Number) event.getBody().get("threadId");
- Number contextId = (Number) event.getBody().get("contextId");
- Request request = new Request("frames");
- request.getArguments().put("threadId", threadId);
- try {
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- Collection frames = (Collection) response.getBody().get("frames");
- for (Iterator iterator = frames.iterator(); iterator.hasNext();) {
- Number frameId = (Number) iterator.next();
- request = new Request("frame");
- request.getArguments().put("threadId", threadId);
- request.getArguments().put("contextId", contextId);
- request.getArguments().put("frameId", frameId);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
-
- request = new Request("lookup");
- request.getArguments().put("threadId", threadId);
- request.getArguments().put("contextId", contextId);
- request.getArguments().put("frameId", frameId);
- request.getArguments().put("handle", new Integer(0));
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- assertTrue(response.getBody().containsKey("lookup"));
-
- request = new Request("evaluate");
- request.getArguments().put("threadId", threadId);
- request.getArguments().put("contextId", contextId);
- request.getArguments().put("frameId", frameId);
- request.getArguments().put("expression", "this");
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- assertTrue(response.getBody().containsKey("evaluate"));
- }
- success[0] = Boolean.TRUE;
- } catch (DisconnectedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return true;
- }
- return false;
- }
- };
- eventHandler.addSubhandler(frameCheckHandler);
-
- Map headers = new HashMap();
- headers.put(Constants.BUNDLE_SYMBOLICNAME, "test");
- String script = "var line1 = true;\r\n";
- script += "function test() { // line 2 \r\n";
- script += " return \"line 3\";\r\n";
- script += "} // line 4 \r\n";
- script += "// line 5\r\n";
- script += "var line6 = test();\r\n";
- script += "var line7 = test();\r\n";
- script += "// line 8\r\n";
- script += "// line 9\r\n";
- script += "var line10 = test();\r\n";
- script += "// line 11\r\n";
- script += "// line 12\r\n";
- script += "function test2() { // line 13 \r\n";
- script += " return \"line 14\";\r\n";
- script += "} // line 15 \r\n";
- script += "// line 16\r\n";
- script += "// line 17\r\n";
-
- Scriptable scope = null;
- Context context = contextFactory.enterContext();
- try {
- scope = context.initStandardObjects();
- context.evaluateString(scope, script, "script", 0, null);
- } finally {
- Context.exit();
- }
- waitForEvents(4);
- assertEquals(Boolean.TRUE, success[0]);
- }
-}
diff --git a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestLookupTest.java b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestLookupTest.java
index fe705cb..29e3899 100644
--- a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestLookupTest.java
+++ b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestLookupTest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others.
+ * Copyright (c) 2009, 2010 IBM Corporation 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
@@ -11,94 +11,65 @@
package org.eclipse.wst.jsdt.debug.rhino.tests;
import java.util.Collection;
-import java.util.HashMap;
import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
+import org.eclipse.wst.jsdt.debug.core.jsdi.VirtualMachine;
import org.eclipse.wst.jsdt.debug.rhino.tests.TestEventHandler.Subhandler;
import org.eclipse.wst.jsdt.debug.rhino.transport.DebugSession;
import org.eclipse.wst.jsdt.debug.rhino.transport.DisconnectedException;
import org.eclipse.wst.jsdt.debug.rhino.transport.EventPacket;
+import org.eclipse.wst.jsdt.debug.rhino.transport.JSONConstants;
import org.eclipse.wst.jsdt.debug.rhino.transport.Request;
import org.eclipse.wst.jsdt.debug.rhino.transport.Response;
import org.eclipse.wst.jsdt.debug.rhino.transport.TimeoutException;
import org.mozilla.javascript.Context;
import org.mozilla.javascript.Scriptable;
-import org.osgi.framework.Constants;
-public class RequestLookupTest extends RequestTest {
+/**
+ * Variety of tests for sending <code>lookup</code> requests
+ *
+ * @since 1.0
+ */
+public class RequestLookupTest extends FrameRequestTests {
- public void testLookup() throws DisconnectedException, TimeoutException {
-
- Subhandler setbreakpointHandler = new Subhandler() {
- public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals("script")) {
- Object scriptId = event.getBody().get("scriptId");
- Request request = new Request("script");
- request.getArguments().put("scriptId", scriptId);
- try {
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- Map result = (Map) response.getBody().get("script");
- // functions
- List functionNames = (List) result.get("functions");
- for (Iterator iterator = functionNames.iterator(); iterator.hasNext();) {
- String functionName = (String) iterator.next();
- request = new Request("setbreakpoint");
- request.getArguments().put("scriptId", scriptId);
- request.getArguments().put("function", functionName);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- }
- } catch (DisconnectedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return true;
- }
- return false;
- }
- };
- eventHandler.addSubhandler(setbreakpointHandler);
+ /**
+ * Tests performing a <code>lookup</code>
+ * @throws Exception
+ */
+ public void testLookup() throws Exception {
+
+ eventHandler.addSubhandler(setBreakpointHandler);
final Object[] success = new Object[1];
Subhandler frameCheckHandler = new Subhandler() {
public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals("break")) {
- Number threadId = (Number) event.getBody().get("threadId");
- Number contextId = (Number) event.getBody().get("contextId");
+ if (event.getEvent().equals(JSONConstants.BREAK)) {
+ Number threadId = (Number) event.getBody().get(JSONConstants.THREAD_ID);
+ Number contextId = (Number) event.getBody().get(JSONConstants.CONTEXT_ID);
Request request = new Request("frames");
- request.getArguments().put("threadId", threadId);
+ request.getArguments().put(JSONConstants.THREAD_ID, threadId);
try {
debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 10000);
+ Response response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
assertTrue(response.isSuccess());
Collection frames = (Collection) response.getBody().get("frames");
for (Iterator iterator = frames.iterator(); iterator.hasNext();) {
Number frameId = (Number) iterator.next();
- request = new Request("lookup");
- request.getArguments().put("threadId", threadId);
- request.getArguments().put("contextId", contextId);
- request.getArguments().put("frameId", frameId);
- request.getArguments().put("handle", new Integer(0));
+ request = new Request(JSONConstants.LOOKUP);
+ request.getArguments().put(JSONConstants.THREAD_ID, threadId);
+ request.getArguments().put(JSONConstants.CONTEXT_ID, contextId);
+ request.getArguments().put(JSONConstants.FRAME_ID, frameId);
+ request.getArguments().put(JSONConstants.HANDLE, new Integer(0));
debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
+ response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
assertTrue(response.isSuccess());
- assertTrue(response.getBody().containsKey("lookup"));
+ assertTrue(response.getBody().containsKey(JSONConstants.LOOKUP));
}
success[0] = Boolean.TRUE;
} catch (DisconnectedException e) {
- // TODO Auto-generated catch block
e.printStackTrace();
} catch (TimeoutException e) {
- // TODO Auto-generated catch block
e.printStackTrace();
}
return true;
@@ -108,25 +79,8 @@
};
eventHandler.addSubhandler(frameCheckHandler);
- Map headers = new HashMap();
- headers.put(Constants.BUNDLE_SYMBOLICNAME, "test");
- String script = "var line1 = true;\r\n";
- script += "function test() { // line 2 \r\n";
- script += " return \"line 3\";\r\n";
- script += "} // line 4 \r\n";
- script += "// line 5\r\n";
- script += "var line6 = test();\r\n";
- script += "var line7 = test();\r\n";
- script += "// line 8\r\n";
- script += "// line 9\r\n";
- script += "var line10 = test();\r\n";
- script += "// line 11\r\n";
- script += "// line 12\r\n";
- script += "function test2() { // line 13 \r\n";
- script += " return \"line 14\";\r\n";
- script += "} // line 15 \r\n";
- script += "// line 16\r\n";
- script += "// line 17\r\n";
+ String script = Util.getTestSource(Util.SRC_SCRIPTS_CONTAINER, "script1.js");
+ assertNotNull("The test source for [script1.js] must exist", script);
Scriptable scope = null;
Context context = contextFactory.enterContext();
@@ -136,7 +90,8 @@
} finally {
Context.exit();
}
- waitForEvents(4);
+ //script + breakpoint on line 6 + exit step event
+ waitForEvents(3);
assertEquals(Boolean.TRUE, success[0]);
}
}
diff --git a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestScriptTest.java b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestScriptTest.java
deleted file mode 100644
index ee47838..0000000
--- a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestScriptTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation 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:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.jsdt.debug.rhino.tests;
-
-import java.math.BigDecimal;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.wst.jsdt.debug.rhino.transport.DisconnectedException;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Request;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Response;
-import org.eclipse.wst.jsdt.debug.rhino.transport.TimeoutException;
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.Scriptable;
-import org.osgi.framework.Constants;
-
-public class RequestScriptTest extends RequestTest {
-
- public void testScript() throws DisconnectedException, TimeoutException {
-
- Map headers = new HashMap();
- headers.put(Constants.BUNDLE_SYMBOLICNAME, "test");
- String script = "var line1 = true;\r\n";
- script += "function test() { // line 2 \r\n";
- script += " return \"line 3\";\r\n";
- script += "} // line 4 \r\n";
- script += "// line 5\r\n";
- script += "var line6 = test();\r\n";
- script += "var line7 = test();\r\n";
- script += "// line 8\r\n";
- script += "// line 9\r\n";
- script += "var line10 = test();\r\n";
- script += "// line 11\r\n";
- script += "// line 12\r\n";
- script += "function test2() { // line 13 \r\n";
- script += " return \"line 14\";\r\n";
- script += "} // line 15 \r\n";
- script += "// line 16\r\n";
- script += "// line 17\r\n";
-
- Scriptable scope = null;
- Context context = contextFactory.enterContext();
- try {
- scope = context.initStandardObjects();
- context.evaluateString(scope, script, "script", 0, null);
- } finally {
- Context.exit();
- }
-
- Request request = new Request("scripts");
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 30000);
- assertTrue(response.isSuccess());
- List scripts = (List) response.getBody().get("scripts");
- assertNotNull(scripts);
- assertFalse(scripts.isEmpty());
-
- request = new Request("script");
- request.getArguments().put("scriptId", scripts.get(0));
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 30000);
- assertTrue(response.isSuccess());
- Map result = (Map) response.getBody().get("script");
- assertEquals(script, result.get("source"));
- List lineNumbers = (List) result.get("lines");
- assertEquals(7, lineNumbers.size());
- assertTrue("The line number [2] should be returned", lineNumbers.contains(new BigDecimal(2)));
- assertTrue("The line number [3] should be returned", lineNumbers.contains(new BigDecimal(3)));
- assertTrue("The line number [6] should be returned", lineNumbers.contains(new BigDecimal(6)));
- assertTrue("The line number [7] should be returned", lineNumbers.contains(new BigDecimal(7)));
- assertTrue("The line number [10] should be returned", lineNumbers.contains(new BigDecimal(10)));
- assertTrue("The line number [13] should be returned", lineNumbers.contains(new BigDecimal(13)));
- assertTrue("The line number [14] should be returned", lineNumbers.contains(new BigDecimal(14)));
-
- List functionNames = (List) result.get("functions");
- assertEquals(2, functionNames.size());
- assertEquals("test", functionNames.get(0));
- assertEquals("test2", functionNames.get(1));
- }
-}
diff --git a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestScriptsTest.java b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestScriptsTest.java
deleted file mode 100644
index 055efbb..0000000
--- a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestScriptsTest.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation 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:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.jsdt.debug.rhino.tests;
-
-import java.util.Collection;
-
-import org.eclipse.wst.jsdt.debug.rhino.transport.DisconnectedException;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Request;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Response;
-import org.eclipse.wst.jsdt.debug.rhino.transport.TimeoutException;
-
-public class RequestScriptsTest extends RequestTest {
-
- public void testScriptsWithNoScripts() throws DisconnectedException, TimeoutException {
- Request request = new Request("scripts");
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 30000);
- assertTrue(response.isSuccess());
- Collection scripts = (Collection) response.getBody().get("scripts");
- assertNotNull(scripts);
- assertTrue(scripts.isEmpty());
- }
-}
diff --git a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestSetBreakpointTest.java b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestSetBreakpointTest.java
deleted file mode 100644
index d601e1c..0000000
--- a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestSetBreakpointTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009, 2010 IBM Corporation 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:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.jsdt.debug.rhino.tests;
-
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.Map;
-
-import org.eclipse.wst.jsdt.debug.core.jsdi.VirtualMachine;
-import org.eclipse.wst.jsdt.debug.rhino.transport.JSONConstants;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Request;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Response;
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.Scriptable;
-
-/**
- * Tests setting breakpoints and making sure we get the break events for them when evaluating the script
- *
- * @since 1.0
- */
-public class RequestSetBreakpointTest extends RequestTest {
-
- /**
- * Tests asking for the current set of breakpoints when the session has none
- *
- * @throws Exception if the test fails
- */
- public void testBreakpointsWithNoBreakpoints() throws Exception {
- Request request = new Request(JSONConstants.BREAKPOINTS);
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
- assertTrue(response.isSuccess());
- Collection breakpoints = (Collection) response.getBody().get(JSONConstants.BREAKPOINTS);
- assertNotNull(breakpoints);
- assertTrue(breakpoints.isEmpty());
- }
-
- /**
- * Tests setting a variety of breakpoints and that they are hit
- *
- * @throws Exception if the test fails
- */
- public void testGetSetClearBreakpoint() throws Exception {
- eventHandler.addSubhandler(setBreakpointsHandler);
- eventHandler.addSubhandler(clearBreakpointsHandler);
-
- Request request = new Request(JSONConstants.BREAKPOINTS);
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
- assertTrue(response.isSuccess());
- Collection breakpoints = (Collection) response.getBody().get(JSONConstants.BREAKPOINTS);
- assertNotNull(breakpoints);
- assertTrue(breakpoints.isEmpty());
- String script = Util.getTestSource(Util.SRC_SCRIPTS_CONTAINER, "script1.js");
- assertNotNull("The test source for [script1.js] should exist", script);
- Context context = contextFactory.enterContext();
- try {
- Scriptable scope = context.initStandardObjects();
- context.evaluateString(scope, script, JSONConstants.SCRIPT, 0, null);
- } finally {
- Context.exit();
- }
- waitForEvents(8);
-
- request = new Request(JSONConstants.BREAKPOINTS);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
- assertTrue(response.isSuccess());
- breakpoints = (Collection) response.getBody().get(JSONConstants.BREAKPOINTS);
- assertNotNull(breakpoints);
- assertEquals(3, breakpoints.size());
-
- for (Iterator iterator = breakpoints.iterator(); iterator.hasNext();) {
- Number breakpointId = (Number) iterator.next();
- request = new Request(JSONConstants.BREAKPOINT);
- request.getArguments().put(JSONConstants.BREAKPOINT_ID, breakpointId);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
- assertTrue(response.isSuccess());
- Map breakpoint = (Map) response.getBody().get(JSONConstants.BREAKPOINT);
- assertEquals(breakpointId.intValue(), Util.numberAsInt(breakpoint.get(JSONConstants.BREAKPOINT_ID)));
- assertTrue(breakpoint.containsKey(JSONConstants.SCRIPT_ID));
- }
- }
-}
diff --git a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestTest.java b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestTest.java
index e2135b7..bc87b56 100644
--- a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestTest.java
+++ b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestTest.java
@@ -22,6 +22,7 @@
import org.eclipse.wst.jsdt.debug.rhino.transport.DebugSession;
import org.eclipse.wst.jsdt.debug.rhino.transport.DisconnectedException;
import org.eclipse.wst.jsdt.debug.rhino.transport.EventPacket;
+import org.eclipse.wst.jsdt.debug.rhino.transport.JSONConstants;
import org.eclipse.wst.jsdt.debug.rhino.transport.PipedTransportService;
import org.eclipse.wst.jsdt.debug.rhino.transport.Request;
import org.eclipse.wst.jsdt.debug.rhino.transport.Response;
@@ -46,29 +47,44 @@
* @see org.eclipse.wst.jsdt.debug.rhino.tests.TestEventHandler.Subhandler#handleEvent(org.eclipse.wst.jsdt.debug.rhino.transport.DebugSession, org.eclipse.wst.jsdt.debug.rhino.transport.EventPacket)
*/
public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals("script")) {
- Object scriptId = event.getBody().get("scriptId");
- Request request = new Request("script");
- request.getArguments().put("scriptId", scriptId);
+ if (event.getEvent().equals(JSONConstants.SCRIPT)) {
+ Number scriptId = (Number) event.getBody().get(JSONConstants.SCRIPT_ID);
+ Request request = new Request(JSONConstants.SCRIPT);
+ request.getArguments().put(JSONConstants.SCRIPT_ID, scriptId);
try {
debugSession.sendRequest(request);
Response response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
assertTrue(response.isSuccess());
- Map result = (Map) response.getBody().get("script");
+ Map result = (Map) response.getBody().get(JSONConstants.SCRIPT);
// line numbers
- List lineNumbers = (List) result.get("lines");
+ List lineNumbers = (List) result.get(JSONConstants.LINES);
for (Iterator iterator = lineNumbers.iterator(); iterator.hasNext();) {
Number lineNumber = (Number) iterator.next();
- request = new Request("setbreakpoint");
- request.getArguments().put("scriptId", scriptId);
- request.getArguments().put("line", lineNumber);
+ request = new Request(JSONConstants.SETBREAKPOINT);
+ request.getArguments().put(JSONConstants.SCRIPT_ID, scriptId);
+ request.getArguments().put(JSONConstants.LINE, lineNumber);
+ request.getArguments().put(JSONConstants.CONDITION, "1===1");
debugSession.sendRequest(request);
response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
assertTrue(response.isSuccess());
+
+ Map breakpoint = (Map) response.getBody().get(JSONConstants.BREAKPOINT);
+ Number breakpointId = (Number) breakpoint.get(JSONConstants.BREAKPOINT_ID);
+ request = new Request(JSONConstants.BREAKPOINT);
+ request.getArguments().put(JSONConstants.BREAKPOINT_ID, breakpointId);
+ debugSession.sendRequest(request);
+ response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+ breakpoint = (Map) response.getBody().get(JSONConstants.BREAKPOINT);
+ assertEquals(breakpointId.intValue(), Util.numberAsInt(breakpoint.get(JSONConstants.BREAKPOINT_ID)));
+ assertEquals(scriptId.intValue(), Util.numberAsInt(breakpoint.get(JSONConstants.SCRIPT_ID)));
+ assertEquals(lineNumber.intValue(), Util.numberAsInt(breakpoint.get(JSONConstants.LINE)));
+ assertEquals("1===1", breakpoint.get(JSONConstants.CONDITION));
}
- // functions
+ //TODO the default breakpoint support only allows breakpoints on valid lines, which could be a function
+ /*// functions
List functionNames = (List) result.get("functions");
for (Iterator iterator = functionNames.iterator(); iterator.hasNext();) {
String functionName = (String) iterator.next();
@@ -78,14 +94,15 @@
debugSession.sendRequest(request);
response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
assertTrue(response.isSuccess());
- }
+ }*/
- // script onEnter
+ //TODO bogus now since we only allow breakpoints on valid lines
+ /*// script onEnter
request = new Request("setbreakpoint");
request.getArguments().put("scriptId", scriptId);
debugSession.sendRequest(request);
response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
- assertTrue(response.isSuccess());
+ assertTrue(response.isSuccess());*/
} catch (DisconnectedException e) {
e.printStackTrace();
} catch (TimeoutException e) {
@@ -108,23 +125,20 @@
* @see org.eclipse.wst.jsdt.debug.rhino.tests.TestEventHandler.Subhandler#handleEvent(org.eclipse.wst.jsdt.debug.rhino.transport.DebugSession, org.eclipse.wst.jsdt.debug.rhino.transport.EventPacket)
*/
public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals("break")) {
- List breakpoints = (List) event.getBody().get("breakpoints");
- for (Iterator iterator = breakpoints.iterator(); iterator.hasNext();) {
- Number breakpointId = (Number) iterator.next();
- Request request = new Request("clearbreakpoint");
- request.getArguments().put("breakpointId", breakpointId);
- try {
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
- assertTrue(response.isSuccess());
- } catch (DisconnectedException e) {
- e.printStackTrace();
- } catch (TimeoutException e) {
- e.printStackTrace();
- }
+ if (event.getEvent().equals(JSONConstants.BREAK)) {
+ Number bid = (Number)event.getBody().get(JSONConstants.BREAKPOINT);
+ Request request = new Request(JSONConstants.CLEARBREAKPOINT);
+ request.getArguments().put(JSONConstants.BREAKPOINT_ID, bid);
+ try {
+ debugSession.sendRequest(request);
+ Response response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+ return true;
+ } catch (DisconnectedException e) {
+ e.printStackTrace();
+ } catch (TimeoutException e) {
+ e.printStackTrace();
}
- return true;
}
return false;
}
diff --git a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestThreadTest.java b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestThreadTest.java
deleted file mode 100644
index 8820684..0000000
--- a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestThreadTest.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation 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:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.jsdt.debug.rhino.tests;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.wst.jsdt.debug.rhino.tests.TestEventHandler.Subhandler;
-import org.eclipse.wst.jsdt.debug.rhino.transport.DebugSession;
-import org.eclipse.wst.jsdt.debug.rhino.transport.DisconnectedException;
-import org.eclipse.wst.jsdt.debug.rhino.transport.EventPacket;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Request;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Response;
-import org.eclipse.wst.jsdt.debug.rhino.transport.TimeoutException;
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.Scriptable;
-import org.osgi.framework.Constants;
-
-public class RequestThreadTest extends RequestTest {
-
- public void testInvalidThread() throws DisconnectedException, TimeoutException {
- Request request = new Request("context");
- request.getArguments().put("threadId", new Integer("9999"));
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 30000);
- assertFalse(response.isSuccess());
- }
-
- public void testThread() throws DisconnectedException, TimeoutException {
-
- Subhandler setbreakpointHandler = new Subhandler() {
- public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals("script")) {
- Object scriptId = event.getBody().get("scriptId");
- Request request = new Request("script");
- request.getArguments().put("scriptId", scriptId);
- try {
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- // script onEnter
- request = new Request("setbreakpoint");
- request.getArguments().put("scriptId", scriptId);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- } catch (DisconnectedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return true;
- }
- return false;
- }
- };
- eventHandler.addSubhandler(setbreakpointHandler);
-
- final Object[] success = new Object[1];
-
- Subhandler contextCheckHandler = new Subhandler() {
- public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals("break")) {
- Number threadId = (Number) event.getBody().get("threadId");
- Request request = new Request("thread");
- request.getArguments().put("threadId", threadId);
- try {
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- Map thread = (Map) response.getBody().get("thread");
- assertEquals(threadId.intValue(), Util.numberAsInt(thread.get("threadId")));
- assertEquals("suspended", thread.get("state"));
- success[0] = Boolean.TRUE;
- } catch (DisconnectedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return true;
- }
- return false;
- }
- };
- eventHandler.addSubhandler(contextCheckHandler);
-
- Map headers = new HashMap();
- headers.put(Constants.BUNDLE_SYMBOLICNAME, "test");
- String script = "var line1 = true;\r\n";
- script += "function test() { // line 2 \r\n";
- script += " return \"line 3\";\r\n";
- script += "} // line 4 \r\n";
- script += "// line 5\r\n";
- script += "var line6 = test();\r\n";
- script += "var line7 = test();\r\n";
- script += "// line 8\r\n";
- script += "// line 9\r\n";
- script += "var line10 = test();\r\n";
- script += "// line 11\r\n";
- script += "// line 12\r\n";
- script += "function test2() { // line 13 \r\n";
- script += " return \"line 14\";\r\n";
- script += "} // line 15 \r\n";
- script += "// line 16\r\n";
- script += "// line 17\r\n";
-
- Scriptable scope = null;
- Context context = contextFactory.enterContext();
- try {
- scope = context.initStandardObjects();
- context.evaluateString(scope, script, "script", 0, null);
- } finally {
- Context.exit();
- }
-
- // TODO: figure out this intermittent problem
- // junit.framework.AssertionFailedError: expected:<suspended> but was:<running>
- // at junit.framework.Assert.fail(Assert.java:47)
- // at junit.framework.Assert.failNotEquals(Assert.java:280)
- // at junit.framework.Assert.assertEquals(Assert.java:64)
- // at junit.framework.Assert.assertEquals(Assert.java:71)
- // at org.eclipse.e4.languages.javascript.debug.connect.test.RequestThreadTest$2.handleEvent(RequestThreadTest.java:74)
- // at org.eclipse.e4.languages.javascript.debug.connect.test.TestEventHandler.handleEvent(TestEventHandler.java:117)
- // at org.eclipse.e4.languages.javascript.debug.connect.test.TestEventHandler.run(TestEventHandler.java:93)
- // at java.lang.Thread.run(Thread.java:619)
-
- waitForEvents(2);
- assertEquals(Boolean.TRUE, success[0]);
-
- }
-}
diff --git a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestThreadsTest.java b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestThreadsTest.java
deleted file mode 100644
index 08adec4..0000000
--- a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RequestThreadsTest.java
+++ /dev/null
@@ -1,133 +0,0 @@
-/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation 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:
- * IBM Corporation - initial API and implementation
- *******************************************************************************/
-package org.eclipse.wst.jsdt.debug.rhino.tests;
-
-import java.util.Collection;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.eclipse.wst.jsdt.debug.rhino.tests.TestEventHandler.Subhandler;
-import org.eclipse.wst.jsdt.debug.rhino.transport.DebugSession;
-import org.eclipse.wst.jsdt.debug.rhino.transport.DisconnectedException;
-import org.eclipse.wst.jsdt.debug.rhino.transport.EventPacket;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Request;
-import org.eclipse.wst.jsdt.debug.rhino.transport.Response;
-import org.eclipse.wst.jsdt.debug.rhino.transport.TimeoutException;
-import org.mozilla.javascript.Context;
-import org.mozilla.javascript.Scriptable;
-import org.osgi.framework.Constants;
-
-public class RequestThreadsTest extends RequestTest {
-
- public void testThreadsWithNoThreads() throws DisconnectedException, TimeoutException {
- Request request = new Request("threads");
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 30000);
- assertTrue(response.isSuccess());
- Collection threads = (Collection) response.getBody().get("threads");
- assertNotNull(threads);
- assertTrue(threads.isEmpty());
- }
-
- public void testThreads() throws DisconnectedException, TimeoutException {
-
- Subhandler setbreakpointHandler = new Subhandler() {
- public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals("script")) {
- Object scriptId = event.getBody().get("scriptId");
- Request request = new Request("script");
- request.getArguments().put("scriptId", scriptId);
- try {
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- // script onEnter
- request = new Request("setbreakpoint");
- request.getArguments().put("scriptId", scriptId);
- debugSession.sendRequest(request);
- response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- } catch (DisconnectedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return true;
- }
- return false;
- }
- };
- eventHandler.addSubhandler(setbreakpointHandler);
-
- final Object[] success = new Object[1];
-
- Subhandler contextCheckHandler = new Subhandler() {
- public boolean handleEvent(DebugSession debugSession, EventPacket event) {
- if (event.getEvent().equals("break")) {
- Number threadId = (Number) event.getBody().get("threadId");
- Request request = new Request("threads");
- try {
- debugSession.sendRequest(request);
- Response response = debugSession.receiveResponse(request.getSequence(), 10000);
- assertTrue(response.isSuccess());
- List threads = (List) response.getBody().get("threads");
- assertEquals(threadId.intValue(), Util.numberAsInt(threads.get(0)));
- success[0] = Boolean.TRUE;
- } catch (DisconnectedException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- } catch (TimeoutException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
- }
- return true;
- }
- return false;
- }
- };
- eventHandler.addSubhandler(contextCheckHandler);
-
- Map headers = new HashMap();
- headers.put(Constants.BUNDLE_SYMBOLICNAME, "test");
- String script = "var line1 = true;\r\n";
- script += "function test() { // line 2 \r\n";
- script += " return \"line 3\";\r\n";
- script += "} // line 4 \r\n";
- script += "// line 5\r\n";
- script += "var line6 = test();\r\n";
- script += "var line7 = test();\r\n";
- script += "// line 8\r\n";
- script += "// line 9\r\n";
- script += "var line10 = test();\r\n";
- script += "// line 11\r\n";
- script += "// line 12\r\n";
- script += "function test2() { // line 13 \r\n";
- script += " return \"line 14\";\r\n";
- script += "} // line 15 \r\n";
- script += "// line 16\r\n";
- script += "// line 17\r\n";
-
- Scriptable scope = null;
- Context context = contextFactory.enterContext();
- try {
- scope = context.initStandardObjects();
- context.evaluateString(scope, script, "script", 0, null);
- } finally {
- Context.exit();
- }
- waitForEvents(2);
- assertEquals(Boolean.TRUE, success[0]);
-
- }
-}
diff --git a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RhinoDebugTestSuite.java b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RhinoDebugTestSuite.java
index 757f2f8..392915d 100644
--- a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RhinoDebugTestSuite.java
+++ b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/RhinoDebugTestSuite.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009 IBM Corporation and others All rights reserved. This
+ * Copyright (c) 2009, 2010 IBM Corporation 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
@@ -11,31 +11,34 @@
import junit.framework.Test;
import junit.framework.TestSuite;
+/**
+ * Main test suite entry point
+ * @since 1.0
+ */
public class RhinoDebugTestSuite extends TestSuite {
+ /**
+ * @return the new test suite
+ */
public static Test suite() {
return new RhinoDebugTestSuite();
}
+ /**
+ * Constructor
+ */
public RhinoDebugTestSuite() {
addTestSuite(TransportTest.class);
addTestSuite(DebugSessionTest.class);
addTestSuite(RhinoDebuggerTest.class);
addTestSuite(RequestBadCommandTest.class);
- addTestSuite(RequestBreakpointsTest.class);
- addTestSuite(RequestBreakpointTest.class);
- addTestSuite(RequestClearBreakpointTest.class);
- addTestSuite(RequestThreadsTest.class);
- addTestSuite(RequestThreadTest.class);
+ addTestSuite(BreakpointRequestTests.class);
+ addTestSuite(ThreadRequestTests.class);
addTestSuite(RequestContinueTest.class);
addTestSuite(RequestDisposeTest.class);
- addTestSuite(RequestEvaluateTest.class);
- addTestSuite(RequestFramesTest.class);
- addTestSuite(RequestFrameTest.class);
+ addTestSuite(FrameRequestTests.class);
addTestSuite(RequestLookupTest.class);
- addTestSuite(RequestScriptsTest.class);
- addTestSuite(RequestScriptTest.class);
- addTestSuite(RequestSetBreakpointTest.class);
+ addTestSuite(ScriptRequestTests.class);
addTestSuite(RequestSuspendTest.class);
addTestSuite(RequestVersionTest.class);
}
diff --git a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/ScriptRequestTests.java b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/ScriptRequestTests.java
new file mode 100644
index 0000000..66fce81
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/ScriptRequestTests.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.debug.rhino.tests;
+
+import java.math.BigDecimal;
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.wst.jsdt.debug.core.jsdi.VirtualMachine;
+import org.eclipse.wst.jsdt.debug.rhino.transport.JSONConstants;
+import org.eclipse.wst.jsdt.debug.rhino.transport.Request;
+import org.eclipse.wst.jsdt.debug.rhino.transport.Response;
+import org.mozilla.javascript.Context;
+import org.mozilla.javascript.Scriptable;
+
+/**
+ * Variety of tests requesting information from scripts
+ *
+ * @since 1.1
+ */
+public class ScriptRequestTests extends RequestTest {
+
+ /**
+ * Tests asking for all scripts when there are none
+ *
+ * @throws Exception
+ */
+ public void testScriptsWithNoScripts() throws Exception {
+ Request request = new Request(JSONConstants.SCRIPTS);
+ debugSession.sendRequest(request);
+ Response response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+ Collection scripts = (Collection) response.getBody().get(JSONConstants.SCRIPTS);
+ assertNotNull(scripts);
+ assertTrue(scripts.isEmpty());
+ }
+
+ /**
+ * Tests getting a script and asserting its information
+ *
+ * @throws Exception
+ */
+ public void testScript() throws Exception {
+ String script = Util.getTestSource(Util.SRC_SCRIPTS_CONTAINER, "script1.js");
+ assertNotNull("The test source for [script1.js] must exist", script);
+ Scriptable scope = null;
+ Context context = contextFactory.enterContext();
+ try {
+ scope = context.initStandardObjects();
+ context.evaluateString(scope, script, "script", 0, null);
+ } finally {
+ Context.exit();
+ }
+
+ Request request = new Request(JSONConstants.SCRIPTS);
+ debugSession.sendRequest(request);
+ Response response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+ List scripts = (List) response.getBody().get(JSONConstants.SCRIPTS);
+ assertNotNull(scripts);
+ assertFalse(scripts.isEmpty());
+
+ request = new Request("script");
+ request.getArguments().put("scriptId", scripts.get(0));
+ debugSession.sendRequest(request);
+ response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+ Map result = (Map) response.getBody().get(JSONConstants.SCRIPT);
+ assertEquals(script, result.get(JSONConstants.SOURCE));
+ List lineNumbers = (List) result.get(JSONConstants.LINES);
+ assertEquals(7, lineNumbers.size());
+ assertTrue("The line number [1] should be returned", lineNumbers.contains(new BigDecimal(1)));
+ assertTrue("The line number [2] should be returned", lineNumbers.contains(new BigDecimal(2)));
+ assertTrue("The line number [5] should be returned", lineNumbers.contains(new BigDecimal(5)));
+ assertTrue("The line number [6] should be returned", lineNumbers.contains(new BigDecimal(6)));
+ assertTrue("The line number [9] should be returned", lineNumbers.contains(new BigDecimal(9)));
+ assertTrue("The line number [12] should be returned", lineNumbers.contains(new BigDecimal(12)));
+ assertTrue("The line number [13] should be returned", lineNumbers.contains(new BigDecimal(13)));
+ //assertTrue("The line number [14] should be returned", lineNumbers.contains(new BigDecimal(14)));
+
+ List functionNames = (List) result.get(JSONConstants.FUNCTIONS);
+ assertEquals(2, functionNames.size());
+ assertEquals("test", functionNames.get(0));
+ assertEquals("test2", functionNames.get(1));
+ }
+}
diff --git a/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/ThreadRequestTests.java b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/ThreadRequestTests.java
new file mode 100644
index 0000000..d5df8a4
--- /dev/null
+++ b/tests/org.eclipse.wst.jsdt.debug.rhino.tests/src/org/eclipse/wst/jsdt/debug/rhino/tests/ThreadRequestTests.java
@@ -0,0 +1,139 @@
+/*******************************************************************************
+ * Copyright (c) 2010 IBM Corporation 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:
+ * IBM Corporation - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.wst.jsdt.debug.rhino.tests;
+
+import java.util.Collection;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.wst.jsdt.debug.core.jsdi.VirtualMachine;
+import org.eclipse.wst.jsdt.debug.rhino.tests.TestEventHandler.Subhandler;
+import org.eclipse.wst.jsdt.debug.rhino.transport.DebugSession;
+import org.eclipse.wst.jsdt.debug.rhino.transport.DisconnectedException;
+import org.eclipse.wst.jsdt.debug.rhino.transport.EventPacket;
+import org.eclipse.wst.jsdt.debug.rhino.transport.JSONConstants;
+import org.eclipse.wst.jsdt.debug.rhino.transport.Request;
+import org.eclipse.wst.jsdt.debug.rhino.transport.Response;
+import org.eclipse.wst.jsdt.debug.rhino.transport.TimeoutException;
+import org.mozilla.javascript.Context;
+import org.mozilla.javascript.Scriptable;
+
+/**
+ * Variety of tests for thread requests
+ *
+ * @since 1.1
+ */
+public class ThreadRequestTests extends RequestTest {
+
+ /**
+ * Tests requesting the threads from the debugger when there are none
+ * @throws Exception
+ */
+ public void testThreadsWithNoThreads() throws Exception {
+ Request request = new Request(JSONConstants.THREADS);
+ debugSession.sendRequest(request);
+ Response response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+ Collection threads = (Collection) response.getBody().get(JSONConstants.THREADS);
+ assertNotNull(threads);
+ assertTrue(threads.isEmpty());
+ }
+
+ /**
+ * Tests asking the VM for a thread with an invalid ID
+ * @throws Exception
+ */
+ public void testInvalidThread() throws Exception {
+ Request request = new Request("context");
+ request.getArguments().put(JSONConstants.THREAD_ID, new Integer("9999"));
+ debugSession.sendRequest(request);
+ Response response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertFalse(response.isSuccess());
+ }
+
+ /**
+ * Tests getting threads from the VM
+ * @throws Exception
+ */
+ public void testThreads() throws Exception {
+ Subhandler setbreakpointHandler = new Subhandler() {
+ public boolean handleEvent(DebugSession debugSession, EventPacket event) {
+ if (event.getEvent().equals(JSONConstants.SCRIPT)) {
+ Number scriptId = (Number) event.getBody().get(JSONConstants.SCRIPT_ID);
+ Request request = new Request(JSONConstants.SCRIPT);
+ request.getArguments().put(JSONConstants.SCRIPT_ID, scriptId);
+ try {
+ debugSession.sendRequest(request);
+ Response response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+ Map script = (Map) response.getBody().get(JSONConstants.SCRIPT);
+ assertNotNull("The response body cannot be null", script);
+ request = new Request(JSONConstants.SETBREAKPOINT);
+ request.getArguments().put(JSONConstants.SCRIPT_ID, scriptId);
+ request.getArguments().put(JSONConstants.LINE, new Integer(6));
+ debugSession.sendRequest(request);
+ response = debugSession.receiveResponse(request.getSequence(), VirtualMachine.DEFAULT_TIMEOUT);
+ assertTrue(response.isSuccess());
+
+ } catch (DisconnectedException e) {
+ e.printStackTrace();
+ } catch (TimeoutException e) {
+ e.printStackTrace();
+ }
+ return true;
+ }
+ return false;
+ }
+ };
+ eventHandler.addSubhandler(setbreakpointHandler);
+
+ final Object[] success = new Object[1];
+
+ Subhandler contextCheckHandler = new Subhandler() {
+ public boolean handleEvent(DebugSession debugSession, EventPacket event) {
+ if (event.getEvent().equals(JSONConstants.BREAK)) {
+ Number threadId = (Number) event.getBody().get(JSONConstants.THREAD_ID);
+ Request request = new Request(JSONConstants.THREADS);
+ try {
+ debugSession.sendRequest(request);
+ Response response = debugSession.receiveResponse(request.getSequence(), 10000);
+ assertTrue(response.isSuccess());
+ List threads = (List) response.getBody().get(JSONConstants.THREADS);
+ assertEquals(threadId.intValue(), Util.numberAsInt(threads.get(0)));
+ success[0] = Boolean.TRUE;
+ } catch (DisconnectedException e) {
+ e.printStackTrace();
+ } catch (TimeoutException e) {
+ e.printStackTrace();
+ }
+ return true;
+ }
+ return false;
+ }
+ };
+ eventHandler.addSubhandler(contextCheckHandler);
+
+ String script = Util.getTestSource(Util.SRC_SCRIPTS_CONTAINER, "script1.js");
+ assertNotNull("The test source for [script1.js] must exist", script);
+
+ Scriptable scope = null;
+ Context context = contextFactory.enterContext();
+ try {
+ scope = context.initStandardObjects();
+ context.evaluateString(scope, script, JSONConstants.SCRIPT, 0, null);
+ } finally {
+ Context.exit();
+ }
+ //script event + breakpoint on line 6
+ waitForEvents(2);
+ assertEquals(Boolean.TRUE, success[0]);
+ }
+}