15f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/* 25f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Licensed to the Apache Software Foundation (ASF) under one or more 35f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * contributor license agreements. See the NOTICE file distributed with 45f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * this work for additional information regarding copyright ownership. 55f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * The ASF licenses this file to You under the Apache License, Version 2.0 65f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * (the "License"); you may not use this file except in compliance with 75f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * the License. You may obtain a copy of the License at 85f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 95f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * http://www.apache.org/licenses/LICENSE-2.0 105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Unless required by applicable law or agreed to in writing, software 125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * distributed under the License is distributed on an "AS IS" BASIS, 135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * 155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * See the License for the specific language governing permissions and 165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * limitations under the License. 175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughespackage org.apache.harmony.jpda.tests.jdwp.Events; 205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.TestErrorException; 225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.jdwp.CommandPacket; 235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.jdwp.JDWPConstants; 245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.jdwp.ParsedEvent; 255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.jdwp.ReplyPacket; 265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.jdwp.Value; 27e8c8e4aa631449e03043945cb4bbf1338d6b9894Sebastien Hertzimport org.apache.harmony.jpda.tests.framework.jdwp.ParsedEvent.EventThread; 285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.jdwp.ParsedEvent.Event_METHOD_EXIT; 295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.jdwp.ParsedEvent.Event_METHOD_EXIT_WITH_RETURN_VALUE; 305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer; 315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughespublic class MethodExitWithReturnValueTest extends JDWPEventTestCase { 335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes protected String getDebuggeeClassName() { 355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes return MethodExitWithReturnValueDebuggee.class.getName(); 365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * This testcase is for METHOD_EXIT_WITH_RETURN_VALUE event. <BR> 405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * It runs MethodExitWithReturnValueDebuggee that executed own exceptionMethod. 415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * It then verify that requested METHOD_EXIT_WITH_RETURN_VALUE event occurs 425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void testMethodExitWithReturnValueException() { 445f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes logWriter.println("==> Start testMethodExitWithReturnValue which method will throw IOException."); 455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes String methodExitClassNameRegexp = "org.apache.harmony.jpda.tests.jdwp.Events.MethodExitWithReturnValueDebuggee"; 465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY); 475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes // Set event request for MethodExitWithReturnValue 495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes ReplyPacket reply = debuggeeWrapper.vmMirror 505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes .setMethodExit(methodExitClassNameRegexp); 515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes checkReplyPacket(reply, "Set METHOD_EXIT_WITH_RETURN_VALUE event"); 525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes // Inform debuggee desired return method 545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes synchronizer.sendMessage(MethodExitWithReturnValueDebuggee.EXCEPTION_TYPE); 555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes // Receive MethodExitWithReturnValue event 575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes CommandPacket receiveEvent = null; 585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes try { 595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes receiveEvent = debuggeeWrapper.vmMirror.receiveEvent(); 605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } catch (TestErrorException e) { 615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes printErrorAndFail("There is no event received."); 625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes ParsedEvent[] parsedEvents = ParsedEvent.parseEventPacket(receiveEvent); 645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes Event_METHOD_EXIT event = (Event_METHOD_EXIT)parsedEvents[0]; 655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes assertEquals("Invalid number of events,", 1, parsedEvents.length); 675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes assertEquals("Invalid event kind,", 685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes JDWPConstants.EventKind.METHOD_EXIT, 695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes event.getEventKind(), 705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes JDWPConstants.EventKind.getName(JDWPConstants.EventKind.METHOD_EXIT), 715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes JDWPConstants.EventKind.getName(event.getEventKind())); 725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes long refID = event.getLocation().classID; 745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes String expectedSignature = "Lorg/apache/harmony/jpda/tests/jdwp/Events/MethodExitWithReturnValueDebuggee;"; 755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes String actualSignature = debuggeeWrapper.vmMirror.getReferenceTypeSignature(refID); 765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes assertEquals("Invalid class signature of method caller,",expectedSignature,actualSignature); 775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * This testcase is for METHOD_EXIT_WITH_RETURN_VALUE event. <BR> 815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * It runs MethodExitWithReturnValueDebuggee that executed own booleanMethod. 825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * It then verify that requested METHOD_EXIT_WITH_RETURN_VALUE event occurs 835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * and the returned value is as expected boolean value. 845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void testMethodExitWithReturnValueOfBoolean() { 865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes runMethodExitWithReturn(MethodExitWithReturnValueDebuggee.BOOLEAN_TYPE); 875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * This testcase is for METHOD_EXIT_WITH_RETURN_VALUE event. <BR> 915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * It runs MethodExitWithReturnValueDebuggee that executed own shortMethod. 925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * It then verify that requested METHOD_EXIT_WITH_RETURN_VALUE event occurs 935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * and the returned value is as expected short value. 945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void testMethodExitWithReturnValueOfShort() { 965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes runMethodExitWithReturn(MethodExitWithReturnValueDebuggee.SHORT_TYPE); 975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * This testcase is for METHOD_EXIT_WITH_RETURN_VALUE event. <BR> 1015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * It runs MethodExitWithReturnValueDebuggee that executed own charMethod. 1025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * It then verify that requested METHOD_EXIT_WITH_RETURN_VALUE event occurs 1035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * and the returned value is as expected char value. 1045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void testMethodExitWithReturnValueOfChar() { 1065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes runMethodExitWithReturn(MethodExitWithReturnValueDebuggee.CHAR_TYPE); 1075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * This testcase is for METHOD_EXIT_WITH_RETURN_VALUE event. <BR> 1115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * It runs MethodExitWithReturnValueDebuggee that executed own intMethod. 1125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * It then verify that requested METHOD_EXIT_WITH_RETURN_VALUE event occurs 1135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * and the returned value is as expected integer value. 1145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void testMethodExitWithReturnValueOfInt() { 1165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes runMethodExitWithReturn(MethodExitWithReturnValueDebuggee.INT_TYPE); 1175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * This testcase is for METHOD_EXIT_WITH_RETURN_VALUE event. <BR> 1215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * It runs MethodExitWithReturnValueDebuggee that executed own longMethod. 1225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * It then verify that requested METHOD_EXIT_WITH_RETURN_VALUE event occurs 1235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * and the returned value is as expected long value. 1245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void testMethodExitWithReturnValueOfLong() { 1265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes runMethodExitWithReturn(MethodExitWithReturnValueDebuggee.LONG_TYPE); 1275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /** 1305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * This testcase is for METHOD_EXIT_WITH_RETURN_VALUE event. <BR> 1315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * It runs MethodExitWithReturnValueDebuggee that executed own doubleMethod. 1325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * It then verify that requested METHOD_EXIT_WITH_RETURN_VALUE event occurs 1335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * and the returned value is as expected double value. 1345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes public void testMethodExitWithReturnValueOfDouble() { 1365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes runMethodExitWithReturn(MethodExitWithReturnValueDebuggee.DOUBLE_TYPE); 1375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 139c707eb40c4f99474ffeedab17a5fd562a7808238Sebastien Hertz /** 140c707eb40c4f99474ffeedab17a5fd562a7808238Sebastien Hertz * This testcase is for METHOD_EXIT_WITH_RETURN_VALUE event. <BR> 141c707eb40c4f99474ffeedab17a5fd562a7808238Sebastien Hertz * It runs MethodExitWithReturnValueDebuggee that executed own voidMethod. 142c707eb40c4f99474ffeedab17a5fd562a7808238Sebastien Hertz * It then verify that requested METHOD_EXIT_WITH_RETURN_VALUE event occurs 143c707eb40c4f99474ffeedab17a5fd562a7808238Sebastien Hertz * and there is no returned value. 144c707eb40c4f99474ffeedab17a5fd562a7808238Sebastien Hertz */ 145c707eb40c4f99474ffeedab17a5fd562a7808238Sebastien Hertz public void testMethodExitWithReturnValueOfVoid() { 146c707eb40c4f99474ffeedab17a5fd562a7808238Sebastien Hertz runMethodExitWithReturn(MethodExitWithReturnValueDebuggee.VOID_TYPE); 147c707eb40c4f99474ffeedab17a5fd562a7808238Sebastien Hertz } 148c707eb40c4f99474ffeedab17a5fd562a7808238Sebastien Hertz 1495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes /* 1515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Internal function used to receive MethodExitWithReturnValue event. 1525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Test the returned value according to the parameter's value 1535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */ 1545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes private void runMethodExitWithReturn(String type){ 1555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes logWriter.println("==> Start testMethodExitWithReturnValue with return type of " + type); 1565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes String methodExitClassNameRegexp = "org.apache.harmony.jpda.tests.jdwp.Events.MethodExitWithReturnValueDebuggee"; 1575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY); 1585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes // Set event request for MethodExitWithReturnValue 1605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes ReplyPacket reply = debuggeeWrapper.vmMirror 1615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes .setMethodExitWithReturnValue(methodExitClassNameRegexp); 1625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes checkReplyPacket(reply, "Set METHOD_EXIT_WITH_RETURN_VALUE event"); 1635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes // Inform debuggee desired return method 1655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes synchronizer.sendMessage(type.toString()); 1665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes // Receive MethodExitWithReturnValue event 1685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes CommandPacket receiveEvent = null; 1705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes try { 1715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes receiveEvent = debuggeeWrapper.vmMirror.receiveEvent(); 1725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } catch (TestErrorException e) { 1735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes printErrorAndFail("There is no event received."); 1745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 1755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes ParsedEvent[] parsedEvents = ParsedEvent.parseEventPacket(receiveEvent); 1765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes // Check received event's basic information 1785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes assertEquals("Invalid number of events,", 1, parsedEvents.length); 1795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes logWriter.println("==> CHECK: receive 1 event"); 1805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes assertEquals( 1825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes "Invalid event kind,", 1835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes JDWPConstants.EventKind.METHOD_EXIT_WITH_RETURN_VALUE, 1845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes parsedEvents[0].getEventKind(), 1855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes JDWPConstants.EventKind 1865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes .getName(JDWPConstants.EventKind.METHOD_EXIT_WITH_RETURN_VALUE), 1875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes JDWPConstants.EventKind.getName(parsedEvents[0].getEventKind())); 1885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes logWriter.println("==> CHECK: received event's type is " + JDWPConstants.EventKind.METHOD_EXIT_WITH_RETURN_VALUE); 1895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 190e8c8e4aa631449e03043945cb4bbf1338d6b9894Sebastien Hertz long eventThreadID = ((EventThread) parsedEvents[0]).getThreadID(); 191e8c8e4aa631449e03043945cb4bbf1338d6b9894Sebastien Hertz checkThreadState(eventThreadID, JDWPConstants.ThreadStatus.RUNNING, 192e8c8e4aa631449e03043945cb4bbf1338d6b9894Sebastien Hertz JDWPConstants.SuspendStatus.SUSPEND_STATUS_SUSPENDED); 193e8c8e4aa631449e03043945cb4bbf1338d6b9894Sebastien Hertz 1945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes // Check return value according to it's type 1955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes Value value = ((Event_METHOD_EXIT_WITH_RETURN_VALUE) parsedEvents[0]) 1965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes .getReturnValue(); 1975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes 1985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes if(type.equals(MethodExitWithReturnValueDebuggee.BOOLEAN_TYPE)){ 1995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes boolean b = value.getBooleanValue(); 2005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes logWriter.println("==> CHECK: booleanMethod() is invoked, return value:" + b); 2015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes assertEquals("Invalid return value,", 2025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes MethodExitWithReturnValueDebuggee.EXPECTED_BOOLEAN, b); 2035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes }else if(type.equals(MethodExitWithReturnValueDebuggee.SHORT_TYPE)){ 2045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes short s = value.getShortValue(); 2055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes logWriter.println("==> CHECK: shortMethod() is invoked, return value:" + s); 2065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes assertEquals("Invalid return value,", 2075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes MethodExitWithReturnValueDebuggee.EXPECTED_SHORT, s); 2085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes }else if(type.equals(MethodExitWithReturnValueDebuggee.CHAR_TYPE)){ 2095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes char c = value.getCharValue(); 2105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes logWriter.println("==> CHECK: charMethod() is invoked, return value:" + c); 2115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes assertEquals("Invalid return value,", 2125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes MethodExitWithReturnValueDebuggee.EXPECTED_CHAR, c); 2135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes }else if(type.equals(MethodExitWithReturnValueDebuggee.INT_TYPE)){ 2145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes int i = value.getIntValue(); 2155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes logWriter.println("==> CHECK: intMethod() is invoked, return value:" + i); 2165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes assertEquals("Invalid return value,", 2175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes MethodExitWithReturnValueDebuggee.EXPECTED_INT, i); 2185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes }else if(type.equals(MethodExitWithReturnValueDebuggee.LONG_TYPE)){ 2195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes long l = value.getLongValue(); 2205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes logWriter.println("==> CHECK: longMethod() is invoked, return value:" + l); 2215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes assertEquals("Invalid return value,", 2225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes MethodExitWithReturnValueDebuggee.EXPECTED_LONG, l); 2235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes }else if(type.equals(MethodExitWithReturnValueDebuggee.DOUBLE_TYPE)){ 2245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes double d = value.getDoubleValue(); 2255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes logWriter.println("==> CHECK: doubleMethod() is invoked, return value:" + d); 2265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes assertEquals("Invalid return value,", 2275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes MethodExitWithReturnValueDebuggee.EXPECTED_DOUBLE, d); 228c707eb40c4f99474ffeedab17a5fd562a7808238Sebastien Hertz } else if (type.equals(MethodExitWithReturnValueDebuggee.VOID_TYPE)) { 229c707eb40c4f99474ffeedab17a5fd562a7808238Sebastien Hertz logWriter.println("==> CHECK: voidMethod() is invoked"); 230c707eb40c4f99474ffeedab17a5fd562a7808238Sebastien Hertz assertEquals("Invalid return value,", null, value); 2315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes } 2335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes} 234