1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one or more
3  * contributor license agreements.  See the NOTICE file distributed with
4  * this work for additional information regarding copyright ownership.
5  * The ASF licenses this file to You under the Apache License, Version 2.0
6  * (the "License"); you may not use this file except in compliance with
7  * the License.  You may obtain a copy of the License at
8  *
9  *     http://www.apache.org/licenses/LICENSE-2.0
10  *
11  *  Unless required by applicable law or agreed to in writing, software
12  *  distributed under the License is distributed on an "AS IS" BASIS,
13  *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14  *
15  *  See the License for the specific language governing permissions and
16  *  limitations under the License.
17  */
18 
19 package org.apache.harmony.jpda.tests.jdwp.ClassType;
20 
21 import org.apache.harmony.jpda.tests.framework.jdwp.CommandPacket;
22 import org.apache.harmony.jpda.tests.framework.jdwp.JDWPCommands;
23 import org.apache.harmony.jpda.tests.framework.jdwp.JDWPConstants;
24 import org.apache.harmony.jpda.tests.framework.jdwp.ReplyPacket;
25 import org.apache.harmony.jpda.tests.framework.jdwp.TaggedObject;
26 import org.apache.harmony.jpda.tests.jdwp.share.JDWPInvokeMethodWithSuspensionTestCase;
27 
28 /**
29  * JDWP unit test for ClassType.NewInstance command with a thread suspension.
30  */
31 public class NewInstanceWithSuspensionTest extends JDWPInvokeMethodWithSuspensionTestCase {
testInvokeWithMultipleEvents001()32     public void testInvokeWithMultipleEvents001() {
33         runInvokeMethodTest("<init>");
34     }
35 
36     @Override
buildInvokeCommand(long threadId, long classID, long methodId, int invoke_options)37     protected CommandPacket buildInvokeCommand(long threadId, long classID,
38             long methodId, int invoke_options) {
39         CommandPacket command = new CommandPacket(
40                 JDWPCommands.ClassTypeCommandSet.CommandSetID,
41                 JDWPCommands.ClassTypeCommandSet.NewInstanceCommand);
42         command.setNextValueAsClassID(classID);
43         command.setNextValueAsThreadID(threadId);
44         command.setNextValueAsMethodID(methodId);
45         command.setNextValueAsInt(0);
46         command.setNextValueAsInt(invoke_options);
47         return command;
48     }
49 
50     @Override
getInvokeCommandName()51     protected String getInvokeCommandName() {
52         return "ClassType.NewInstance";
53     }
54 
55     @Override
checkInvokeReply(ReplyPacket reply)56     protected void checkInvokeReply(ReplyPacket reply) {
57         // Check result is 'void'
58         TaggedObject invokeNewObject = reply.getNextValueAsTaggedObject();
59         assertEquals(JDWPConstants.Tag.OBJECT_TAG, invokeNewObject.tag);
60         assertFalse("Invalid exception object id", invokeNewObject.objectID == 0);
61 
62         // Check exception is null.
63         TaggedObject invokeException = reply.getNextValueAsTaggedObject();
64         assertEquals(JDWPConstants.Tag.OBJECT_TAG, invokeException.tag);
65         assertEquals("Invalid exception object id", 0, invokeException.objectID);
66 
67         assertAllDataRead(reply);
68 
69     }
70 
71 }
72