198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project/* 298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * this work for additional information regarding copyright ownership. 598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * the License. You may obtain a copy of the License at 898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * 998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 1098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * 1198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 1298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 1398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * 1598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * See the License for the specific language governing permissions and 1698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * limitations under the License. 1798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project */ 1898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 1998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project/** 2098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * @author Anatoly F. Bondarenko 2198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project */ 2298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 2398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project/** 2498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * Created on 16.02.2005 2598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project */ 2698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectpackage org.apache.harmony.jpda.tests.jdwp.ReferenceType; 2798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 2898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectimport org.apache.harmony.jpda.tests.framework.jdwp.CommandPacket; 2998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectimport org.apache.harmony.jpda.tests.framework.jdwp.JDWPCommands; 3098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectimport org.apache.harmony.jpda.tests.framework.jdwp.ReplyPacket; 3198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectimport org.apache.harmony.jpda.tests.jdwp.share.JDWPSyncTestCase; 3298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectimport org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer; 3398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 3498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 3598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project/** 3698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * JDWP Unit test for ReferenceType.SignatureWithGeneric command. 3798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project */ 3898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Projectpublic class SignatureWithGenericTest extends JDWPSyncTestCase { 3998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 4098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project static final int testStatusPassed = 0; 4198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project static final int testStatusFailed = -1; 4298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project static final String thisCommandName = "ReferenceType.SignatureWithGeneric command"; 4398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project static final String debuggeeSignature = "Lorg/apache/harmony/jpda/tests/jdwp/ReferenceType/SignatureWithGenericDebuggee;"; 4498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project static final String debuggeeGenericSignature = ""; 4598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 4698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project protected String getDebuggeeClassName() { 4798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project return "org.apache.harmony.jpda.tests.jdwp.ReferenceType.SignatureWithGenericDebuggee"; 4898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 4998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 5098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project /** 5198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * This testcase exercises ReferenceType.SignatureWithGeneric command. 5298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * <BR>The test starts SignatureWithGenericDebuggee class, requests referenceTypeId 5398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * for this class by VirtualMachine.ClassesBySignature command, then 5498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * performs ReferenceType.SignatureWithGeneric command and checks that returned 5598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project * both signature and generic signature are equal to expected signatures. 5698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project */ 5798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project public void testSignatureWithGeneric001() { 5898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project String thisTestName = "testSignatureWithGeneric001"; 5998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project logWriter.println("==> " + thisTestName + " for " + thisCommandName + ": START..."); 6098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY); 6198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 6298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project long refTypeID = getClassIDBySignature(debuggeeSignature); 6398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 6498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project logWriter.println("=> Debuggee class = " + getDebuggeeClassName()); 6598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project logWriter.println("=> referenceTypeID for Debuggee class = " + refTypeID); 6698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project logWriter.println("=> CHECK1: send " + thisCommandName + " and check reply..."); 6798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 6898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project CommandPacket signatureWithGenericCommand = new CommandPacket( 6998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project JDWPCommands.ReferenceTypeCommandSet.CommandSetID, 7098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project JDWPCommands.ReferenceTypeCommandSet.SignatureWithGenericCommand); 7198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project signatureWithGenericCommand.setNextValueAsReferenceTypeID(refTypeID); 7298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 7398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project ReplyPacket signatureWithGenericReply = debuggeeWrapper.vmMirror.performCommand(signatureWithGenericCommand); 7498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project signatureWithGenericCommand = null; 7598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project checkReplyPacket(signatureWithGenericReply, thisCommandName); 7698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 7798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project String returnedSignature = signatureWithGenericReply.getNextValueAsString(); 7898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project String returnedGenericSignature = signatureWithGenericReply.getNextValueAsString(); 7998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 8098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project assertString(thisCommandName + " returned invalid signature,", 8198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project debuggeeSignature, returnedSignature); 8298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project assertString(thisCommandName + " returned invalid generic signature,", 8398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project debuggeeGenericSignature, returnedGenericSignature); 8498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 8598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project logWriter.println("=> CHECK1: PASSED: expected signatures are returned:"); 8698913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project logWriter.println("=> Signature = " + returnedSignature); 8798913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project logWriter.println("=> Generic signature = \"" + returnedGenericSignature + "\""); 8898913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 8998913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE); 9098913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project logWriter.println("==> " + thisTestName + " for " + thisCommandName + ": FINISH"); 9198913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project 9298913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project assertAllDataRead(signatureWithGenericReply); 9398913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project } 9498913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project} 9598913fed6520d8849fb2e246be943e04474aefaThe Android Open Source Project