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 Hughes/**
205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * @author Viacheslav G. Rybalov
215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */
225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/**
245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Created on 05.03.2005
255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */
265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughespackage org.apache.harmony.jpda.tests.jdwp.ClassObjectReference;
275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.jdwp.CommandPacket;
295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.jdwp.JDWPCommands;
305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.jdwp.JDWPConstants;
315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.framework.jdwp.ReplyPacket;
324dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertzimport org.apache.harmony.jpda.tests.jdwp.ClassObjectReference.AbstractReflectedTypeTestCase.TypeSignatureAndTag;
335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.jdwp.share.JDWPSyncTestCase;
345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/**
385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * JDWP unit test for ClassObjectReference.ReflectedType command.
395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */
405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
414dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertzpublic class ReflectedTypeTest extends AbstractReflectedTypeTestCase {
424dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertz
434dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertz    private static final String DEBUGGEE_CLASS_NAME =
444dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertz            "org.apache.harmony.jpda.tests.jdwp.share.debuggee.HelloWorld";
455f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * Returns full name of debuggee class which is used by this test.
485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * @return full name of debuggee class.
495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    protected String getDebuggeeClassName() {
514dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertz        return DEBUGGEE_CLASS_NAME;
525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * This testcase exercises ClassObjectReference.ReflectedType command.
565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * <BR>Starts <A HREF="../share/debuggee/HelloWorld.html">HelloWorld</A> debuggee.
575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * <BR>Then checks the following four classes:
585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * <BR>&nbsp;&nbsp; - java/lang/Object;
595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * <BR>&nbsp;&nbsp; - java/lang/String;
605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * <BR>&nbsp;&nbsp; - java/lang/Runnable;
615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * <BR>&nbsp;&nbsp; - HelloWorld.
625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * <BR>&nbsp;&nbsp;
635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * <BR>The following statements are checked:
645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * <BR>&nbsp;It is expected:
655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * <BR>&nbsp;&nbsp; - refTypeTag takes one of the TypeTag constants: CLASS, INTERFACE;
665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * <BR>&nbsp;&nbsp; - refTypeTag equals to refTypeTag returned by command
675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     *  VirtualMachine.ClassesBySignature;
685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * <BR>&nbsp;&nbsp; - typeID equals to typeID returned by the JDWP command
695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * VirtualMachine.ClassesBySignature;
705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * <BR>&nbsp;&nbsp; - All data were read;
715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public void testReflectedType001() {
735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("==> testReflectedType001 START...");
745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY);
755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
764dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertz        // Builds debuggee class signature string.
774dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertz        String debuggeeClassSignature =
784dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertz                "L" + DEBUGGEE_CLASS_NAME.replace('.', '/') + ";";
794dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertz
804dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertz        TypeSignatureAndTag[] array = new TypeSignatureAndTag[] {
814dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertz            new TypeSignatureAndTag("Ljava/lang/Object;",
824dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertz                                    JDWPConstants.TypeTag.CLASS),
834dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertz            new TypeSignatureAndTag("Ljava/lang/String;",
844dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertz                                    JDWPConstants.TypeTag.CLASS),
854dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertz            new TypeSignatureAndTag("Ljava/lang/Runnable;",
864dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertz                                    JDWPConstants.TypeTag.INTERFACE),
874dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertz            new TypeSignatureAndTag(debuggeeClassSignature,
884dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertz                                    JDWPConstants.TypeTag.CLASS)
895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        };
905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
914dd7eca318c55c9c8e90ed5e89619decce73a54eSebastien Hertz        runReflectedTypeTest(array);
925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes}
96