1/*
2 * Copyright (c) 1998, 2016, 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 * @bug     4108453 4778440 6304780 6396378
27 * @summary Basic tests for java.awt.ComponentOrientation
28 * @build TestBundle TestBundle_es TestBundle_iw
29 * @build TestBundle1 TestBundle1_ar
30 *
31 * @run main BasicTest
32 */
33/*
34 * (C) Copyright IBM Corp. 1998 - All Rights Reserved
35 *
36 * The original version of this source code and documentation is copyrighted
37 * and owned by IBM, Inc. These materials are provided under terms of a
38 * License Agreement between IBM and Sun. This technology is protected by
39 * multiple US and International patents. This notice and attribution to IBM
40 * may not be removed.
41 */
42
43import java.awt.ComponentOrientation;
44import java.util.Locale;
45import java.util.ResourceBundle;
46
47public class BasicTest {
48    public static void main(String args[]) {
49        System.out.println("BasicTest {");
50        TestInvariants();
51        TestLocale();
52        TestBundle();
53
54        System.out.println("} Pass");
55    }
56
57    // TestInvariants
58    //
59    // Various no-brainer tests to make sure the constants behave properly
60    // and so on.
61    //
62    static void TestInvariants() {
63        System.out.println("  TestInvariants {");
64
65        Assert(ComponentOrientation.LEFT_TO_RIGHT.isLeftToRight(),
66               "LEFT_TO_RIGHT.isLeftToRight()");
67
68        Assert(ComponentOrientation.UNKNOWN.isLeftToRight(),
69               "UNKNOWN.isLeftToRight()");
70
71        Assert(!ComponentOrientation.RIGHT_TO_LEFT.isLeftToRight(),
72               "!RIGHT_TO_LEFT.isLeftToRight()");
73
74        Assert(ComponentOrientation.LEFT_TO_RIGHT.isHorizontal(),
75               "LEFT_TO_RIGHT.isHorizontal()");
76
77        Assert(ComponentOrientation.UNKNOWN.isHorizontal(),
78               "UNKNOWN.isHorizontal()");
79
80        Assert(ComponentOrientation.RIGHT_TO_LEFT.isHorizontal(),
81               "RIGHT_TO_LEFT.isHorizontal()");
82
83        System.out.println("  } Pass");
84    }
85
86    // TestLocale
87    //
88    // Make sure that getOrientation(Locale) works, and that the appropriate
89    // system locales are RIGHT_TO_LEFT
90    //
91    static void TestLocale() {
92        System.out.println("  TestLocale {");
93
94        ComponentOrientation orient = ComponentOrientation.getOrientation(Locale.US);
95        Assert(orient == ComponentOrientation.LEFT_TO_RIGHT, "US == LEFT_TO_RIGHT");
96
97        orient = ComponentOrientation.getOrientation(new Locale("iw", ""));
98        Assert(orient == ComponentOrientation.RIGHT_TO_LEFT, "iw == RIGHT_TO_LEFT");
99
100        orient = ComponentOrientation.getOrientation(new Locale("ar", ""));
101        Assert(orient == ComponentOrientation.RIGHT_TO_LEFT, "ar == RIGHT_TO_LEFT");
102
103        System.out.println("  } Pass");
104    }
105
106    // TestBundle
107    //
108    // Make sure that getOrientation(ResourceBundle) works right, especially
109    // the fallback mechasm
110    //
111    static void TestBundle() {
112        System.out.println("  TestBundle {");
113
114        // This will fall back to the default locale's bundle or root bundle
115        ResourceBundle rb = ResourceBundle.getBundle("TestBundle",
116                                                        new Locale("et", ""));
117        if (rb.getLocale().getLanguage().equals(new Locale("iw").getLanguage())) {
118            assertEquals(rb, ComponentOrientation.RIGHT_TO_LEFT, "et == RIGHT_TO_LEFT" );
119        } else if (rb.getLocale().getLanguage() == "es") {
120            assertEquals(rb, ComponentOrientation.LEFT_TO_RIGHT, "et == LEFT_TO_RIGHT" );
121        } else {
122            assertEquals(rb, ComponentOrientation.UNKNOWN, "et == UNKNOWN" );
123        }
124
125        // We have actual bundles for "es" and "iw", so it should just fetch
126        // the orientation object out of them
127        rb = ResourceBundle.getBundle("TestBundle",new Locale("es", ""));
128        assertEquals(rb, ComponentOrientation.LEFT_TO_RIGHT, "es == LEFT_TO_RIGHT" );
129
130        rb = ResourceBundle.getBundle("TestBundle", new Locale("iw", "IL"));
131        assertEquals(rb, ComponentOrientation.RIGHT_TO_LEFT, "iw == RIGHT_TO_LEFT" );
132
133        // This bundle has no orientation setting at all, so we should get
134        // the system's default orientation for Arabic
135        rb = ResourceBundle.getBundle("TestBundle1", new Locale("ar", ""));
136        assertEquals(rb, ComponentOrientation.RIGHT_TO_LEFT, "ar == RIGHT_TO_LEFT" );
137
138        System.out.println("  } Pass");
139    }
140
141    static void assertEquals(ResourceBundle rb, ComponentOrientation o, String str) {
142        Assert(ComponentOrientation.getOrientation(rb) == o, str);
143    }
144
145    static void Assert(boolean condition, String str) {
146        if (!condition) {
147            System.err.println("    ASSERT FAILED: " + str);
148            throw new RuntimeException("Assert Failed: " + str);
149        }
150    }
151}
152