ResourceBundleTest.java revision ab28398a565e5ce8a56cdfd50ac6226e5317cf66
1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Licensed to the Apache Software Foundation (ASF) under one or more
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  contributor license agreements.  See the NOTICE file distributed with
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  this work for additional information regarding copyright ownership.
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  The ASF licenses this file to You under the Apache License, Version 2.0
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  (the "License"); you may not use this file except in compliance with
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  the License.  You may obtain a copy of the License at
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *     http://www.apache.org/licenses/LICENSE-2.0
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  Unless required by applicable law or agreed to in writing, software
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  distributed under the License is distributed on an "AS IS" BASIS,
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  See the License for the specific language governing permissions and
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *  limitations under the License.
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage tests.api.java.util;
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
20ab28398a565e5ce8a56cdfd50ac6226e5317cf66The Android Open Source Projectimport dalvik.annotation.KnownFailure;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargetNew;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargets;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestLevel;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport dalvik.annotation.TestTargetClass;
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.File;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.net.MalformedURLException;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.net.URL;
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.net.URLClassLoader;
30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.security.Permission;
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Enumeration;
32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Locale;
33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.MissingResourceException;
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.ResourceBundle;
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.StringTokenizer;
36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Vector;
37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.api.java.util.support.B;
39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport tests.support.resource.Support_Resources;
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project@TestTargetClass(ResourceBundle.class)
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class ResourceBundleTest extends junit.framework.TestCase {
43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    SecurityManager sm = new SecurityManager() {
44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public void checkPermission(Permission perm) {
47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    };
49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @tests java.util.ResourceBundle#getBundle(java.lang.String,
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.util.Locale)
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "",
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "getBundle",
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {java.lang.String.class, java.util.Locale.class}
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_getBundleLjava_lang_StringLjava_util_Locale() {
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ResourceBundle bundle;
62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String name = "tests.support.Support_TestResource";
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale defLocale = Locale.getDefault();
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale.setDefault(new Locale("en", "US"));
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name, new Locale("fr", "FR", "VAR"));
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong bundle fr_FR_VAR", "frFRVARValue4", bundle.getString("parent4")
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                );
69adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name, new Locale("fr", "FR", "v1"));
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong bundle fr_FR_v1",
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "frFRValue4", bundle.getString("parent4"));
72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name, new Locale("fr", "US", "VAR"));
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong bundle fr_US_var", "frValue4", bundle.getString("parent4")
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                );
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name, new Locale("de", "FR", "VAR"));
76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong bundle de_FR_var", "enUSValue4", bundle.getString("parent4")
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                );
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale.setDefault(new Locale("fr", "FR", "VAR"));
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name, new Locale("de", "FR", "v1"));
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong bundle de_FR_var 2", "frFRVARValue4", bundle.getString("parent4")
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                );
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale.setDefault(new Locale("de", "US"));
85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name, new Locale("de", "FR", "var"));
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong bundle de_FR_var 2", "parentValue4", bundle.getString("parent4")
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                );
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
89adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Test with a security manager
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale.setDefault(new Locale("en", "US"));
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        SecurityManager oldSm = System.getSecurityManager();
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        System.setSecurityManager(sm);
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            bundle = ResourceBundle.getBundle(name, new Locale("fr", "FR",
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "VAR"));
96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("Security: Wrong bundle fr_FR_VAR", "frFRVARValue4", bundle.getString(
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "parent4"));
98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            bundle = ResourceBundle.getBundle(name,
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    new Locale("fr", "FR", "v1"));
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("Security: Wrong bundle fr_FR_v1", "frFRValue4", bundle.getString(
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "parent4"));
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            bundle = ResourceBundle.getBundle(name, new Locale("fr", "US",
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "VAR"));
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("Security: Wrong bundle fr_US_var", "frValue4", bundle.getString(
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "parent4"));
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            bundle = ResourceBundle.getBundle(name, new Locale("de", "FR",
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    "VAR"));
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue("Security: Wrong bundle de_FR_var: "
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    + bundle.getString("parent4"), bundle.getString("parent4")
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .equals("enUSValue4"));
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } finally {
112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            System.setSecurityManager(oldSm);
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ResourceBundle.getBundle(null, Locale.getDefault());
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException ee) {
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ResourceBundle.getBundle("", new Locale("xx", "yy"));
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("MissingResourceException expected");
125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (MissingResourceException ee) {
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale.setDefault(defLocale);
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @tests java.util.ResourceBundle#getBundle(java.lang.String,
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     *        java.util.Locale, java.lang.ClassLoader)
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "",
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "getBundle",
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {java.lang.String.class, java.util.Locale.class, java.lang.ClassLoader.class}
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
142ab28398a565e5ce8a56cdfd50ac6226e5317cf66The Android Open Source Project    @KnownFailure("It's not allowed to pass null as parent class loader to"
143ab28398a565e5ce8a56cdfd50ac6226e5317cf66The Android Open Source Project            + " a new ClassLoader anymore. Maybe we need to change"
144ab28398a565e5ce8a56cdfd50ac6226e5317cf66The Android Open Source Project            + " URLClassLoader to allow this? It's not specified.")
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_getBundleLjava_lang_StringLjava_util_LocaleLjava_lang_ClassLoader() {
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String classPath = System.getProperty("java.class.path");
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        StringTokenizer tok = new StringTokenizer(classPath, File.pathSeparator);
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Vector<URL> urlVec = new Vector<URL>();
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String resPackage = Support_Resources.RESOURCE_PACKAGE;
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            while (tok.hasMoreTokens()) {
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                String path = tok.nextToken();
153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                String url;
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                if (new File(path).isDirectory())
155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    url = "file:" + path + resPackage + "subfolder/";
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                else
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    url = "jar:file:" + path + "!" + resPackage + "subfolder/";
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                urlVec.addElement(new URL(url));
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (MalformedURLException e) {
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        URL[] urls = new URL[urlVec.size()];
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < urlVec.size(); i++)
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            urls[i] = urlVec.elementAt(i);
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        URLClassLoader loader = new URLClassLoader(urls, null);
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String name = Support_Resources.RESOURCE_PACKAGE_NAME
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                + ".hyts_resource";
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ResourceBundle bundle = ResourceBundle.getBundle(name, Locale
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                .getDefault());
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("Wrong value read", "parent", bundle.getString("property"));
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name, Locale.getDefault(), loader);
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong cached value",
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "resource", bundle.getString("property"));
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
176adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ResourceBundle.getBundle(null, Locale.getDefault(), loader);
178adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException ee) {
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ResourceBundle.getBundle(name, null, loader);
185adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException ee) {
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ResourceBundle.getBundle(name, Locale.getDefault(), null);
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException ee) {
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
197adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ResourceBundle.getBundle("", Locale.getDefault(), loader);
199adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("MissingResourceException expected");
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (MissingResourceException ee) {
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Regression test for Harmony-3823
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        B bb = new B();
206adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String s = bb.find("nonexistent");
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        s = bb.find("name");
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong property got", "Name", s);
209adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    /**
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     * @tests java.util.ResourceBundle#getString(java.lang.String)
213adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project     */
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "",
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "getString",
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {java.lang.String.class}
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
220adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_getStringLjava_lang_String() {
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ResourceBundle bundle;
222adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String name = "tests.support.Support_TestResource";
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale.setDefault(new Locale("en", "US"));
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name, new Locale("fr", "FR", "VAR"));
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong value parent4",
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "frFRVARValue4", bundle.getString("parent4"));
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong value parent3",
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "frFRValue3", bundle.getString("parent3"));
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong value parent2",
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "frValue2", bundle.getString("parent2"));
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong value parent1",
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "parentValue1", bundle.getString("parent1"));
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong value child3",
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "frFRVARChildValue3", bundle.getString("child3"));
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong value child2",
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "frFRVARChildValue2", bundle.getString("child2"));
237adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong value child1",
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "frFRVARChildValue1", bundle.getString("child1"));
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            bundle.getString(null);
242adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException ee) {
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            bundle.getString("");
249adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("MissingResourceException expected");
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (MissingResourceException ee) {
251adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            bundle.getString("IntegerVal");
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException ee) {
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.PARTIAL_COMPLETE,
263adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "Regression test. Doesn't verify NullPointerException.",
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "getBundle",
265adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {java.lang.String.class}
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_getBundle_getClassName() {
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        // Regression test for Harmony-1759
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale locale = Locale.GERMAN;
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String nonExistentBundle = "Non-ExistentBundle";
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
272adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ResourceBundle.getBundle(nonExistentBundle, locale, this.getClass()
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    .getClassLoader());
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("MissingResourceException expected!");
275adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (MissingResourceException e) {
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(nonExistentBundle + "_" + locale, e.getClassName());
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
279adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ResourceBundle.getBundle(nonExistentBundle, locale);
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("MissingResourceException expected!");
282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (MissingResourceException e) {
283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(nonExistentBundle + "_" + locale, e.getClassName());
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
286adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        locale = Locale.getDefault();
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
288adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ResourceBundle.getBundle(nonExistentBundle);
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("MissingResourceException expected!");
290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (MissingResourceException e) {
291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(nonExistentBundle + "_" + locale, e.getClassName());
292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    class Mock_ResourceBundle extends ResourceBundle {
296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        public Enumeration<String> getKeys() {
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected Object handleGetObject(String key) {
303adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
308adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "",
310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "ResourceBundle",
311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {}
312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_constructor() {
314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNotNull(new Mock_ResourceBundle());
315adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
317adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "",
320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "getLocale",
321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {}
322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_getLocale() {
324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ResourceBundle bundle;
325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String name = "tests.support.Support_TestResource";
326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale loc = Locale.getDefault();
327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale.setDefault(new Locale("en", "US"));
328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
329adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name, new Locale("fr", "FR", "VAR"));
330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("fr_FR_VAR", bundle.getLocale().toString());
331adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name, new Locale("fr", "FR", "v1"));
333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("fr_FR", bundle.getLocale().toString());
334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name, new Locale("fr", "US", "VAR"));
336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("fr", bundle.getLocale().toString());
337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
338adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name, new Locale("de", "FR", "VAR"));
339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("en_US", bundle.getLocale().toString());
340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
341adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name, new Locale("de", "FR", "v1"));
342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("en_US", bundle.getLocale().toString());
343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name, new Locale("de", "FR", "var"));
345adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("en_US", bundle.getLocale().toString());
346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale.setDefault(loc);
348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
352adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "",
353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "getObject",
354adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {java.lang.String.class}
355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_getObjectLjava_lang_String() {
357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ResourceBundle bundle;
358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String name = "tests.support.Support_TestResource";
359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale.setDefault(new Locale("en", "US"));
360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name, new Locale("fr", "FR", "VAR"));
361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong value parent4",
362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "frFRVARValue4", (String)bundle.getObject("parent4"));
363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong value parent3",
364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "frFRValue3", (String)bundle.getObject("parent3"));
365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong value parent2",
366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "frValue2", (String)bundle.getObject("parent2"));
367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong value parent1",
368adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "parentValue1", (String)bundle.getObject("parent1"));
369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong value child3",
370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "frFRVARChildValue3", (String)bundle.getObject("child3"));
371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong value child2",
372adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "frFRVARChildValue2", (String)bundle.getObject("child2"));
373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong value child1",
374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "frFRVARChildValue1", (String)bundle.getObject("child1"));
375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong value IntegerVal",
376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                1, bundle.getObject("IntegerVal"));
377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
379adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            bundle.getObject(null);
380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
381adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException ee) {
382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            bundle.getObject("");
387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("MissingResourceException expected");
388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (MissingResourceException ee) {
389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
393adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargets({
394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
395adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            level = TestLevel.COMPLETE,
396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            notes = "",
397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            method = "getStringArray",
398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            args = {java.lang.String.class}
399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ),
400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @TestTargetNew(
401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            level = TestLevel.COMPLETE,
402adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            notes = "",
403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            method = "setParent",
404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            args = {java.util.ResourceBundle.class}
405adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        )
406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    })
407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_getStringArrayLjava_lang_String() {
408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ResourceBundle bundle;
409adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String name = "tests.support.Support_TestResource";
410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale.setDefault(new Locale("en", "US"));
411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name, new Locale("fr", "FR", "VAR"));
412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] array = bundle.getStringArray("StringArray");
414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for(int i = 0; i < array.length; i++) {
415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals("Str" + (i + 1), array[i]);
416adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
418adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            bundle.getStringArray(null);
420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException ee) {
422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            bundle.getStringArray("");
427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("MissingResourceException expected");
428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (MissingResourceException ee) {
429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
433adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            bundle.getStringArray("IntegerVal");
434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("ClassCastException expected");
435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (ClassCastException ee) {
436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
438adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    @TestTargetNew(
441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        level = TestLevel.COMPLETE,
442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        notes = "",
443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        method = "getBundle",
444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        args = {java.lang.String.class}
445adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    )
446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void test_getBundleLjava_lang_String() {
447adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ResourceBundle bundle;
448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String name = "tests.support.Support_TestResource";
449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale defLocale = Locale.getDefault();
450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale.setDefault(new Locale("en", "US"));
452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name);
453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("enUSValue4", bundle.getString("parent4")
454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                );
455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale.setDefault(new Locale("fr", "FR", "v1"));
456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name);
457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong bundle fr_FR_v1",
458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                "frFRValue4", bundle.getString("parent4"));
459adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale.setDefault(new Locale("fr", "US", "VAR"));
460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name);
461adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong bundle fr_US_var", "frValue4", bundle.getString("parent4")
462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                );
463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale.setDefault(new Locale("de", "FR", "VAR"));
464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name);
465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong bundle de_FR_var", "parentValue4", bundle.getString("parent4")
466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                );
467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale.setDefault(new Locale("de", "FR", "v1"));
468adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name);
469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong bundle de_FR_var 2", "parentValue4", bundle.getString("parent4")
470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                );
471adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        Locale.setDefault(new Locale("de", "FR", "var"));
472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bundle = ResourceBundle.getBundle(name);
473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("Wrong bundle de_FR_var 2", "parentValue4", bundle.getString("parent4")
474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                );
475adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ResourceBundle.getBundle(null);
478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException ee) {
480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
482adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
484adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ResourceBundle.getBundle("");
485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("MissingResourceException expected");
486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (MissingResourceException ee) {
487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void setUp() {
492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void tearDown() {
495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
497