1 /*
2  * Copyright (c) 2008, Oracle and/or its affiliates. All rights reserved.
3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4  *
5  * This code is free software; you can redistribute it and/or modify it
6  * under the terms of the GNU General Public License version 2 only, as
7  * published by the Free Software Foundation.
8  *
9  * This code is distributed in the hope that it will be useful, but WITHOUT
10  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
11  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
12  * version 2 for more details (a copy is included in the LICENSE file that
13  * accompanied this code).
14  *
15  * You should have received a copy of the GNU General Public License version
16  * 2 along with this work; if not, write to the Free Software Foundation,
17  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
18  *
19  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20  * or visit www.oracle.com if you need additional information or have any
21  * questions.
22  */
23 
24 /*
25  * @test
26  * @summary Tests <object> element
27  * @author Sergey Malenkov
28  */
29 
30 import java.beans.XMLDecoder;
31 import javax.swing.JButton;
32 import javax.swing.JLabel;
33 import javax.swing.JPanel;
34 import javax.swing.SwingConstants;
35 
36 public final class TestObject extends AbstractTest {
37     public static final String XML // TODO
38             = "<java>\n"
39             + " <object class=\"javax.swing.JPanel\">\n"
40             + "  <void method=\"add\">\n"
41             + "   <object id=\"button\" class=\"javax.swing.JButton\">\n"
42             + "    <string>button</string>\n"
43             + "    <void property=\"verticalAlignment\">\n"
44             + "     <object field=\"CENTER\" class=\"javax.swing.SwingConstants\"/>\n"
45             + "    </void>\n"
46             + "   </object>\n"
47             + "  </void>\n"
48             + "  <void method=\"add\">\n"
49             + "   <object class=\"javax.swing.JLabel\">\n"
50             + "    <string>label</string>\n"
51             + "    <void property=\"labelFor\">\n"
52             + "     <object idref=\"button\"/>\n"
53             + "    </void>\n"
54             + "   </object>\n"
55             + "  </void>\n"
56             + " </object>\n"
57             + "</java>";
58 
main(String[] args)59     public static void main(String[] args) {
60         new TestObject().test(true);
61     }
62 
63     @Override
validate(XMLDecoder decoder)64     protected void validate(XMLDecoder decoder) {
65         JPanel panel = (JPanel) decoder.readObject();
66         if (2 != panel.getComponents().length) {
67             throw new Error("unexpected component count");
68         }
69         JButton button = (JButton) panel.getComponents()[0];
70         if (!button.getText().equals("button")) { // NON-NLS: hardcoded in XML
71             throw new Error("unexpected button text");
72         }
73         if (SwingConstants.CENTER != button.getVerticalAlignment()) {
74             throw new Error("unexpected vertical alignment");
75         }
76         JLabel label = (JLabel) panel.getComponents()[1];
77         if (!label.getText().equals("label")) { // NON-NLS: hardcoded in XML
78             throw new Error("unexpected label text");
79         }
80         if (button != label.getLabelFor()) {
81             throw new Error("unexpected component");
82         }
83     }
84 }
85