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/**
20 * @author Anatoly F. Bondarenko
21 */
22
23/**
24 * Created on 13.07.2005
25 */
26package org.apache.harmony.jpda.tests.jdwp.ObjectReference;
27
28import org.apache.harmony.jpda.tests.share.JPDADebuggeeSynchronizer;
29import org.apache.harmony.jpda.tests.share.SyncDebuggee;
30
31import java.util.Arrays;
32
33public class SetValues004Debuggee extends SyncDebuggee {
34
35    static String passedStatus = "PASSED";
36    static String failedStatus = "FAILED";
37    static String status = passedStatus;
38
39    static SetValues004Debuggee testedObject;
40
41    int intArrayField[]; // JDWP_TAG_ARRAY = 91
42    SetValues004Debuggee objectArrayField[]; // JDWP_TAG_ARRAY = 91
43    SetValues004Debuggee objectField; // JDWP_TAG_OBJECT = 76
44    String stringField; // JDWP_TAG_STRING = 115
45    Thread threadField; // JDWP_TAG_THREAD = 116
46    ThreadGroup threadGroupField; // JDWP_TAG_THREAD_GROUP = 103
47    Class<?> classField; // JDWP_TAG_CLASS_OBJECT = 99
48    ClassLoader classLoaderField; // DWP_TAG_CLASS_LOADER = 108
49
50    @Override
51    public void run() {
52
53        logWriter.println("--> Debuggee: SetValues004Debuggee: START");
54        testedObject = new SetValues004Debuggee();
55
56        testedObject.intArrayField = new int[1];
57        testedObject.intArrayField[0]= 999;
58        testedObject.objectArrayField = new SetValues004Debuggee[1];
59        testedObject.objectArrayField[0] = new SetValues004Debuggee();
60        testedObject.objectField = new SetValues004Debuggee();
61        testedObject.stringField = "stringField";
62        testedObject.threadField = new SetValues004DebuggeeThread();
63        testedObject.threadGroupField = new ThreadGroup("ThreadGroupName");
64        testedObject.classField = SetValues004Debuggee.class;
65        testedObject.classLoaderField = testedObject.classField.getClassLoader();
66
67        logWriter.println("\n--> Debuggee: SetValues004Debuggee: Before ObjectReference::SetValues command:");
68        logWriter.println("--> intArrayField value = " + Arrays.toString(testedObject.intArrayField));
69        logWriter.println("--> objectArrayField value = " + Arrays.toString(testedObject.objectArrayField));
70        logWriter.println("--> objectField value = " + testedObject.objectField);
71        logWriter.println("--> stringField value = " + testedObject.stringField);
72        logWriter.println("--> threadField value = " + testedObject.threadField);
73        logWriter.println("--> threadGroupField value = " + testedObject.threadGroupField);
74        logWriter.println("--> classField value = " + testedObject.classField);
75        logWriter.println("--> classLoaderField value = " + testedObject.classLoaderField);
76
77        synchronizer.sendMessage(JPDADebuggeeSynchronizer.SGNL_READY);
78        synchronizer.receiveMessage(JPDADebuggeeSynchronizer.SGNL_CONTINUE);
79
80        logWriter.println("\n--> Debuggee: SetValues004Debuggee: After ObjectReference::SetValues command:");
81        logWriter.println("--> intArrayField value = " + Arrays.toString(testedObject.intArrayField));
82        if ( testedObject.intArrayField != null ) {
83            logWriter.println("##> Debuggee: FAILURE: Unexpected value");
84            logWriter.println("##> Expected value = " + null);
85            status = failedStatus;
86        } else {
87            logWriter.println("--> Debuggee: OK. Expected value");
88        }
89
90        logWriter.println("--> objectArrayField value = " + Arrays.toString(testedObject.objectArrayField));
91        if ( testedObject.objectArrayField != null ) {
92            logWriter.println("##> Debuggee: FAILURE: Unexpected value");
93            logWriter.println("##> Expected value = " + null);
94            status = failedStatus;
95        } else {
96            logWriter.println("--> Debuggee: OK. Expected value");
97        }
98
99        logWriter.println("--> objectField value = " + testedObject.objectField);
100        if ( testedObject.objectField != null ) {
101            logWriter.println("##> Debuggee: FAILURE: Unexpected value");
102            logWriter.println("##> Expected value = " + null);
103            status = failedStatus;
104        } else {
105            logWriter.println("--> Debuggee: OK. Expected value");
106        }
107
108        logWriter.println("--> stringField value = " + testedObject.stringField);
109        if ( testedObject.stringField != null ) {
110            logWriter.println("##> Debuggee: FAILURE: Unexpected value");
111            logWriter.println("##> Expected value = " + null);
112            status = failedStatus;
113        } else {
114            logWriter.println("--> Debuggee: OK. Expected value");
115        }
116
117        logWriter.println("--> threadField value = " + testedObject.threadField);
118        if ( testedObject.threadField != null ) {
119            logWriter.println("##> Debuggee: FAILURE: Unexpected value");
120            logWriter.println("##> Expected value = " + null);
121            status = failedStatus;
122        } else {
123            logWriter.println("--> Debuggee: OK. Expected value");
124        }
125
126        logWriter.println("--> threadGroupField value = " + testedObject.threadGroupField);
127        if ( testedObject.threadGroupField != null ) {
128            logWriter.println("##> Debuggee: FAILURE: Unexpected value");
129            logWriter.println("##> Expected value = " + null);
130            status = failedStatus;
131        } else {
132            logWriter.println("--> Debuggee: OK. Expected value");
133        }
134
135        logWriter.println("--> classField value = " + testedObject.classField);
136        if ( testedObject.classField != null ) {
137            logWriter.println("##> Debuggee: FAILURE: Unexpected value");
138            logWriter.println("##> Expected value = " + null);
139            status = failedStatus;
140        } else {
141            logWriter.println("--> Debuggee: OK. Expected value");
142        }
143
144        logWriter.println("--> classLoaderField value = " + testedObject.classLoaderField);
145        if ( testedObject.classLoaderField != null ) {
146            logWriter.println("##> Debuggee: FAILURE: Unexpected value");
147            logWriter.println("##> Expected value = " + null);
148            status = failedStatus;
149        } else {
150            logWriter.println("--> Debuggee: OK. Expected value");
151        }
152
153        if ( status.equals(failedStatus) ) {
154            logWriter.println("\n##> Debuggee: Check status = FAILED");
155        } else {
156            logWriter.println("\n--> Debuggee: Check status = PASSED");
157        }
158
159        logWriter.println("--> Debuggee: Send check status for SetValues004Test...\n");
160        synchronizer.sendMessage(status);
161
162        logWriter.println("--> Debuggee: SetValues004Debuggee: FINISH");
163    }
164
165    public static void main(String [] args) {
166        runDebuggee(SetValues004Debuggee.class);
167    }
168}
169
170class SetValues004DebuggeeThread extends Thread {
171    public void myMethod() {
172    }
173}
174