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 Anatoly F. Bondarenko
215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */
225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/**
245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Created on 17.02.2005
255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */
265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughespackage org.apache.harmony.jpda.tests.jdwp.ReferenceType;
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.ReplyPacket;
315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.jdwp.share.JDWPSyncTestCase;
325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughesimport org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
355f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/**
365f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * JDWP Unit test for ReferenceType.Modifiers command.
375f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */
385f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughespublic class ModifiersTest extends JDWPSyncTestCase {
395f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
405f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    static final int testStatusPassed = 0;
415f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    static final int testStatusFailed = -1;
425f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    static final String thisCommandName = "ReferenceType.Modifiers command";
435f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    static final String debuggeeSignature = "Lorg/apache/harmony/jpda/tests/jdwp/share/debuggee/HelloWorld;";
44d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban    static final String debuggeeInterfaceSignature = "Lorg/apache/harmony/jpda/tests/jdwp/share/debuggee/HelloWorldInterface;";
45d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban    static final String debuggeeInterfaceClassName = "org.apache.harmony.jpda.tests.jdwp.share.debuggee.HelloWorldInterface";
465f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
475f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    protected String getDebuggeeClassName() {
485f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        return "org.apache.harmony.jpda.tests.jdwp.share.debuggee.HelloWorld";
495f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
505f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
515f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    /**
525f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * This testcase exercises ReferenceType.Modifiers command.
535f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * <BR>The test starts HelloWorld debuggee, requests referenceTypeId
545f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * for it by VirtualMachine.ClassesBySignature command, then
555f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * performs ReferenceType.Modifiers command and checks that returned
565f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * Modifiers contain expected flags: ACC_PUBLIC, ACC_SUPER;
575f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     * but do NOT contain flags: ACC_FINAL, ACC_INTERFACE, ACC_ABSTRACT
585f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes     */
595f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    public void testModifiers001() {
605f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        String thisTestName = "testModifiers001";
615f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("==> " + thisTestName + " for " + thisCommandName + ": START...");
625f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        String failMessage = "";
635f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY);
645f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
655f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        long refTypeID = getClassIDBySignature(debuggeeSignature);
665f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
675f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("=> Debuggee class = " + getDebuggeeClassName());
685f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("=> referenceTypeID for Debuggee class = " + refTypeID);
695f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("=> CHECK1: send " + thisCommandName + " and check reply...");
705f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
715f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        CommandPacket modifiersCommand = new CommandPacket(
725f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                JDWPCommands.ReferenceTypeCommandSet.CommandSetID,
735f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                JDWPCommands.ReferenceTypeCommandSet.ModifiersCommand);
745f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        modifiersCommand.setNextValueAsReferenceTypeID(refTypeID);
755f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
765f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        ReplyPacket modifiersReply = debuggeeWrapper.vmMirror.performCommand(modifiersCommand);
775f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        modifiersCommand = null;
785f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        checkReplyPacket(modifiersReply, thisCommandName);
795f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
805f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        int returnedModifiers = modifiersReply.getNextValueAsInt();
815f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes/*
825f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * The value of the access_flags item is a mask of modifiers used with class and
835f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * interface declarations. The access_flags modifiers are:
845f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * Flag Name      Value   Meaning                                               Used By
855f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * ACC_PUBLIC     0x0001  Is public; may be accessed from outside its package.  Class, interface
865f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * ACC_FINAL      0x0010  Is final; no subclasses allowed.                      Class
875f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * ACC_SUPER      0x0020  Treat superclass methods specially in invokespecial.  Class, interface
885f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * ACC_INTERFACE  0x0200  Is an interface.                                      Interface
895f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes * ACC_ABSTRACT   0x0400  Is abstract; may not be instantiated.                 Class, interface
905f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes */
915f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("=> Returned modifiers = 0x" + Integer.toHexString(returnedModifiers));
925f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
935f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        int publicFlag = 0x0001; // expected
945f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        int finalFlag = 0x0010; // unexpected
955f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        int superFlag = 0x0020; // expected
965f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        int interfaceFlag = 0x0200; // unexpected
975f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        int abstractFlag = 0x0400; // unexpected
985f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
995f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        if ( (returnedModifiers & publicFlag) == 0 ) {
1005f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            logWriter.println
1015f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                ("## CHECK1: FAILURE: Returned modifiers do NOT contain expected ACC_PUBLIC flag(0x0001)");
1025f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            failMessage = failMessage +
1035f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                "Returned modifiers do NOT contain expected ACC_PUBLIC flag(0x0001);\n";
1045f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
1055f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        if ( (returnedModifiers & superFlag) == 0 ) {
1065f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            logWriter.println
1075f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                ("## CHECK1: FAILURE: Returned modifiers do NOT contain expected ACC_SUPER flag(0x0020)");
1085f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            failMessage = failMessage +
1095f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                "Returned modifiers do NOT contain expected ACC_SUPER flag(0x0020);\n";
1105f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
1115f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        if ( (returnedModifiers & finalFlag) != 0 ) {
1125f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            logWriter.println
1135f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                ("## CHECK1: FAILURE: Returned modifiers contain unexpected ACC_FINAL flag(0x0010)");
1145f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            failMessage = failMessage +
1155f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                "Returned modifiers contain unexpected ACC_FINAL flag(0x0010);\n";
1165f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
1175f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        if ( (returnedModifiers & interfaceFlag) != 0 ) {
1185f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            logWriter.println
1195f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                ("## CHECK1: FAILURE: Returned modifiers contain unexpected ACC_INTERFACE flag(0x0200)");
1205f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            failMessage = failMessage +
1215f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                "Returned modifiers contain unexpected ACC_INTERFACE flag(0x0200);\n";
1225f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
1235f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        if ( (returnedModifiers & abstractFlag) != 0 ) {
1245f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            logWriter.println
1255f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                ("## CHECK1: FAILURE: Returned modifiers contain unexpected ACC_ABSTRACT flag(0x0400)");
1265f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            failMessage = failMessage +
1275f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes                "Returned modifiers contain unexpected ACC_ABSTRACT flag(0x0400);\n";
1285f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
1295f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
1315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        logWriter.println("==> " + thisTestName + " for " + thisCommandName + ": FINISH");
1325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
1335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        if (failMessage.length() > 0) {
1345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes            fail(failMessage);
135d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        } else {
136d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban            logWriter.println
137d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban            ("=> CHECK1: PASSED: expected modifiers are returned: ACC_PUBLIC flag(0x0001), ACC_SUPER flag(0x0020)");
138d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        }
139d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban
140d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        assertAllDataRead(modifiersReply);
141d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban    }
142d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban
143d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban    /**
144d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban     * This testcase exercises ReferenceType.Modifiers command.
145d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban     * <BR>The test starts HelloWorld debuggee, requests referenceTypeId
146d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban     * for an interface HelloWorldInterface by VirtualMachine.ClassesBySignature command,
147d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban     * then performs ReferenceType.Modifiers command and checks that returned
148d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban     * Modifiers contain expected flags: ACC_ABSTRACT, ACC_INTERFACE;
149d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban     * but do NOT contain flags: ACC_PUBLIC, ACC_FINAL, ACC_SUPER, ACC_ABSTRACT
150d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban     */
151d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban    public void testModifiers002() {
152d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        String thisTestName = "testModifiers002";
153d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        logWriter.println("==> " + thisTestName + " for " + thisCommandName + ": START...");
154d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        String failMessage = "";
155d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_READY);
156d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban
157d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        long refTypeID = getClassIDBySignature(debuggeeInterfaceSignature);
158d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban
159d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        logWriter.println("=> Debuggee Interface class = " + debuggeeInterfaceClassName);
160d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        logWriter.println("=> referenceTypeID for Debuggee interface = " + refTypeID);
161d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        logWriter.println("=> CHECK1: send " + thisCommandName + " and check reply...");
162d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban
163d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        CommandPacket modifiersCommand = new CommandPacket(
164d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban                JDWPCommands.ReferenceTypeCommandSet.CommandSetID,
165d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban                JDWPCommands.ReferenceTypeCommandSet.ModifiersCommand);
166d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        modifiersCommand.setNextValueAsReferenceTypeID(refTypeID);
167d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban
168d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        ReplyPacket modifiersReply = debuggeeWrapper.vmMirror.performCommand(modifiersCommand);
169d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        modifiersCommand = null;
170d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        checkReplyPacket(modifiersReply, thisCommandName);
171d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban
172d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        int returnedModifiers = modifiersReply.getNextValueAsInt();
173d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban/*
174d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban * The value of the access_flags item is a mask of modifiers used with class and
175d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban * interface declarations. The access_flags modifiers are:
176d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban * Flag Name      Value   Meaning                                               Used By
177d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban * ACC_PUBLIC     0x0001  Is public; may be accessed from outside its package.  Class, interface
178d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban * ACC_FINAL      0x0010  Is final; no subclasses allowed.                      Class
179d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban * ACC_SUPER      0x0020  Treat superclass methods specially in invokespecial.  Class, interface
180d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban * ACC_INTERFACE  0x0200  Is an interface.                                      Interface
181d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban * ACC_ABSTRACT   0x0400  Is abstract; may not be instantiated.                 Class, interface
182d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban */
183d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        logWriter.println("=> Returned modifiers = 0x" + Integer.toHexString(returnedModifiers));
184d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban
185d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        int publicFlag = 0x0001; // expected
186d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        int finalFlag = 0x0010; // unexpected
187d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        int superFlag = 0x0020; // unexpected
188d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        int interfaceFlag = 0x0200; // expected
189d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        int abstractFlag = 0x0400; // unexpected
190d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban
191d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        if ( (returnedModifiers & publicFlag) != 0 ) {
192d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban            logWriter.println
193d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban                ("## CHECK1: FAILURE: Returned modifiers contain unexpected ACC_PUBLIC flag(0x0001)");
194d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban            failMessage = failMessage +
195d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban                "Returned modifiers contain unexpected ACC_PUBLIC flag(0x0001);\n";
196d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        }
197d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        if ( (returnedModifiers & superFlag) != 0 ) {
198d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban            logWriter.println
199d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban                ("## CHECK1: FAILURE: Returned modifiers contain unexpected ACC_SUPER flag(0x0020)");
200d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban            failMessage = failMessage +
201d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban                "Returned modifiers contain unexpected ACC_SUPER flag(0x0020);\n";
202d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        }
203d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        if ( (returnedModifiers & finalFlag) != 0 ) {
204d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban            logWriter.println
205d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban                ("## CHECK1: FAILURE: Returned modifiers contain unexpected ACC_FINAL flag(0x0010)");
206d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban            failMessage = failMessage +
207d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban                "Returned modifiers contain unexpected ACC_FINAL flag(0x0010);\n";
208d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        }
209d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        if ( (returnedModifiers & interfaceFlag) == 0 ) {
210d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban            logWriter.println
211d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban                ("## CHECK1: FAILURE: Returned modifiers do not contain expected ACC_INTERFACE flag(0x0200)");
212d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban            failMessage = failMessage +
213d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban                "Returned modifiers do not contain expected ACC_INTERFACE flag(0x0200);\n";
214d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        }
215d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        if ( (returnedModifiers & abstractFlag) == 0 ) {
216d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban            logWriter.println
217d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban                ("## CHECK1: FAILURE: Returned modifiers do not contain expected ACC_ABSTRACT flag(0x0400)");
218d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban            failMessage = failMessage +
219d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban                "Returned modifiers do not contain expected ACC_ABSTRACT flag(0x0400);\n";
220d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        }
221d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban
222d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
223d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        logWriter.println("==> " + thisTestName + " for " + thisCommandName + ": FINISH");
224d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban
225d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        if (failMessage.length() > 0) {
226d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban            fail(failMessage);
227d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban        } else {
228d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban            logWriter.println
229d38d553d7def2dfc28847a1068509dfa526f6a9dYevgeny Rouban            ("=> CHECK1: PASSED: expected modifiers are returned: ACC_INTERFACE flag(0x0200), ACC_ABSTRACT flag(0x0400)");
2305f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        }
2315f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes
2325f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes        assertAllDataRead(modifiersReply);
2335f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes    }
2345f0a23683aa603d8c50b6dd071a565821b76067bElliott Hughes}
235