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