1cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/* 2cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Licensed to the Apache Software Foundation (ASF) under one or more 3cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * contributor license agreements. See the NOTICE file distributed with 4cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * this work for additional information regarding copyright ownership. 5cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * The ASF licenses this file to You under the Apache License, Version 2.0 6cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * (the "License"); you may not use this file except in compliance with 7cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * the License. You may obtain a copy of the License at 8cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 9cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 10cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 11cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Unless required by applicable law or agreed to in writing, software 12cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 13cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * See the License for the specific language governing permissions and 15cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * limitations under the License. 16cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 17ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.util; 18cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 19cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport junit.framework.TestCase; 20cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport tests.support.resource.Support_Resources; 21cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.File; 22cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.FileNotFoundException; 23cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.FileWriter; 24cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.IOException; 25cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.InputStreamReader; 26cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.PrintWriter; 27cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.Reader; 28cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.io.Writer; 29cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.net.URL; 30cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.ArrayList; 31cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Collections; 32cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.List; 33cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.ListResourceBundle; 34cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Locale; 35cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.PropertyResourceBundle; 36cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.ResourceBundle; 37cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.ResourceBundle.Control; 38cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport java.util.Scanner; 39cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathimport static java.util.ResourceBundle.Control.*; 40cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 41cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath/** 42cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Test cases for java.util.ResourceBundle.Control 43cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 44cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * @since 1.6 45cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 46cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamathpublic class ControlTest extends TestCase { 47cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 48cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 49cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Control with format:FORMAT_PROPERTIES 50cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 51cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private Control controlP; 52cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 53cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 54cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Control with format:FORMAT_CLASS 55cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 56cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private Control controlC; 57cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 58cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 59cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Control with format:FORMAT_DEFAULT 60cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 61cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private Control control; 62cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 63cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 64cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * {@link java.util.ResourceBundle.Control#Control()}. 65cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 66cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @SuppressWarnings("nls") 67cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_Constructor() { 68cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 69cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath class SubControl extends Control { 70cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath SubControl() { 71cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath super(); 72cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 73cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 74cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Control subControl = new SubControl(); 75cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(FORMAT_DEFAULT, subControl.getFormats("")); 76cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertFalse(control.equals(subControl)); 77cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 78cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 79cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 80cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * Test for all the public constants. 81cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * 82cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * {@link java.util.ResourceBundle.Control#FORMAT_CLASS} 83cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * {@link java.util.ResourceBundle.Control#FORMAT_DEFAULT} 84cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * {@link java.util.ResourceBundle.Control#FORMAT_PROPERTIES} 85cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * {@link java.util.ResourceBundle.Control#TTL_DONT_CACHE} 86cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * {@link java.util.ResourceBundle.Control#TTL_NO_EXPIRATION_CONTROL} 87cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 88cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @SuppressWarnings("nls") 89cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_Constants() { 90cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath List<String> list = FORMAT_CLASS; 91cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(1, list.size()); 92cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("java.class", list.get(0)); 93cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath list = FORMAT_PROPERTIES; 94cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(1, list.size()); 95cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("java.properties", list.get(0)); 96cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath list = FORMAT_DEFAULT; 97cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(2, list.size()); 98cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("java.class", list.get(0)); 99cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("java.properties", list.get(1)); 100cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 101cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath FORMAT_CLASS.add(""); 102cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw UnsupportedOperationException"); 103cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (UnsupportedOperationException e) { 104cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 105cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 106cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 107cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath FORMAT_DEFAULT.add(""); 108cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw UnsupportedOperationException"); 109cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (UnsupportedOperationException e) { 110cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 111cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 112cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 113cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath FORMAT_PROPERTIES.add(""); 114cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw UnsupportedOperationException"); 115cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (UnsupportedOperationException e) { 116cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 117cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 118cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Class<?> unmodifiableListClass = Collections.unmodifiableList( 119cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath new ArrayList<String>()).getClass(); 120cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(FORMAT_CLASS.getClass(), unmodifiableListClass); 121cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(FORMAT_DEFAULT.getClass(), unmodifiableListClass); 122cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(FORMAT_PROPERTIES.getClass(), unmodifiableListClass); 123cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(-1L, TTL_DONT_CACHE); 124cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(-2L, TTL_NO_EXPIRATION_CONTROL); 125cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 126cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 127cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 128cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * {@link java.util.ResourceBundle.Control#getControl(java.util.List)}. 129cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 130cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @SuppressWarnings("nls") 131cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_getControl_LList() { 132cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // singleton 133cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(control, Control.getControl(FORMAT_DEFAULT)); 134cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(controlC, Control.getControl(FORMAT_CLASS)); 135cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(controlP, Control.getControl(FORMAT_PROPERTIES)); 136cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 137cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // class 138cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(control.getClass() == Control.class); 139cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(controlC.getClass() != Control.class); 140cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(controlP.getClass() != Control.class); 141cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 142cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // formats: need not same, just need equal 143cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath List<String> list = new ArrayList<String>(FORMAT_CLASS); 144cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(controlC, Control.getControl(list)); 145cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // can add 146cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath list.add(FORMAT_PROPERTIES.get(0)); 147cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(control, Control.getControl(list)); 148cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 149cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // exceptions 150cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 151cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Control.getControl(null); 152cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 153cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 154cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 155cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 156cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath list = new ArrayList<String>(); 157cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 158cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Control.getControl(list); 159cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw IllegalArgumentException"); 160cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IllegalArgumentException e) { 161cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 162cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 163cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath list = new ArrayList<String>(FORMAT_CLASS); 164cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // java.class -> JAVA.CLASS 165cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath list.set(0, list.get(0).toUpperCase()); 166cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 167cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Control.getControl(list); 168cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw IllegalArgumentException"); 169cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IllegalArgumentException e) { 170cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 171cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 172cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath list = new ArrayList<String>(FORMAT_CLASS); 173cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath list.add(""); 174cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 175cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Control.getControl(list); 176cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw IllegalArgumentException"); 177cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IllegalArgumentException e) { 178cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 179cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 180cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 181cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 182cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 183cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * {@link java.util.ResourceBundle.Control#getNoFallbackControl(java.util.List)}. 184cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 185cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @SuppressWarnings("nls") 186cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_getNoFallbackControl_LList() { 187cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertNotSame(control, Control.getNoFallbackControl(FORMAT_DEFAULT)); 188cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertNotSame(controlC, Control.getNoFallbackControl(FORMAT_CLASS)); 189cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertNotSame(controlP, Control.getNoFallbackControl(FORMAT_PROPERTIES)); 190cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath controlP = Control.getNoFallbackControl(FORMAT_PROPERTIES); 191cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath controlC = Control.getNoFallbackControl(FORMAT_CLASS); 192cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control = Control.getNoFallbackControl(FORMAT_DEFAULT); 193cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // singleton 194cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(control, Control.getNoFallbackControl(FORMAT_DEFAULT)); 195cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(controlC, Control.getNoFallbackControl(FORMAT_CLASS)); 196cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(controlP, Control.getNoFallbackControl(FORMAT_PROPERTIES)); 197cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 198cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // class 199cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(control.getClass() != Control.class); 200cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(controlC.getClass() != Control.class); 201cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(controlP.getClass() != Control.class); 202cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 203cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // format 204cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(FORMAT_CLASS, controlC.getFormats("")); 205cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(FORMAT_DEFAULT, control.getFormats("")); 206cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(FORMAT_PROPERTIES, controlP.getFormats("")); 207cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 208cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // no fall back locale 209cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Locale defaultLocale = Locale.getDefault(); 210cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Locale.setDefault(new Locale("TestLanguage", "TestCountry", "Var")); 211cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertNull(control.getFallbackLocale("message", Locale.US)); 212cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 213cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control.getFallbackLocale("message", null); 214cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 215cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 216cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 217cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 218cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 219cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control.getFallbackLocale(null, Locale.US); 220cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 221cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 222cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 223cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 224cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Locale.setDefault(defaultLocale); 225cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 226cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // formats: need not same, just need equal 227cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath List<String> list = new ArrayList<String>(FORMAT_CLASS); 228cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(controlC, Control.getNoFallbackControl(list)); 229cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // can add 230cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath list.add(FORMAT_PROPERTIES.get(0)); 231cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(control, Control.getNoFallbackControl(list)); 232cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 233cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // exceptions 234cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 235cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Control.getNoFallbackControl(null); 236cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 237cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 238cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 239cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 240cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath list = new ArrayList<String>(); 241cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 242cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Control.getNoFallbackControl(list); 243cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw IllegalArgumentException"); 244cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IllegalArgumentException e) { 245cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 246cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 247cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath list = new ArrayList<String>(FORMAT_CLASS); 248cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // java.class -> JAVA.CLASS 249cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath list.set(0, list.get(0).toUpperCase()); 250cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 251cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Control.getNoFallbackControl(list); 252cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw IllegalArgumentException"); 253cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IllegalArgumentException e) { 254cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 255cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 256cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath list = new ArrayList<String>(FORMAT_CLASS); 257cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath list.add(""); 258cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 259cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Control.getNoFallbackControl(list); 260cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw IllegalArgumentException"); 261cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (IllegalArgumentException e) { 262cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 263cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 264cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 265cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 266cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 267cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * {@link java.util.ResourceBundle.Control#getFormats(java.lang.String)}. 268cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 269cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @SuppressWarnings("nls") 270cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_getFormats_LString() { 271cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(FORMAT_DEFAULT, control.getFormats("")); 272cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(FORMAT_PROPERTIES, controlP.getFormats("")); 273cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(FORMAT_CLASS, controlC.getFormats("")); 274cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 275cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath controlC.getFormats(null); 276cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 277cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 278cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 279cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 280cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 281cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 282cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 283cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * {@link java.util.ResourceBundle.Control#getCandidateLocales(java.lang.String, java.util.Locale)}. 284cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 285cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @SuppressWarnings("nls") 286cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_getCandidateLocales_LStringLLocale() { 287cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // the ResourceBundle for this baseName and Locale does not exists 288cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath List<Locale> result = control.getCandidateLocales("baseName", 289cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath new Locale("one", "two", "three")); 290cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(4, result.size()); 291cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Locale locale = result.get(0); 292cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("one", locale.getLanguage()); 293cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("TWO", locale.getCountry()); 294cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("three", locale.getVariant()); 295cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(new Locale("one", "TWO"), result.get(1)); 296cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(new Locale("one"), result.get(2)); 297cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(Locale.ROOT, result.get(3)); 298cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // ArrayList is not immutable 299cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(ArrayList.class == result.getClass()); 300cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 301cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath result = control.getCandidateLocales("baseName", new Locale("one", 302cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "two", "")); 303cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(new Locale("one", "TWO"), result.get(0)); 304cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(new Locale("one"), result.get(1)); 305cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(Locale.ROOT, result.get(2)); 306cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 307cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath result = control.getCandidateLocales("baseName", new Locale("one", "", 308cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "three")); 309cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(new Locale("one", "", "three"), result.get(0)); 310cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(new Locale("one"), result.get(1)); 311cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(Locale.ROOT, result.get(2)); 312cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 313cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath result = control.getCandidateLocales("baseName", new Locale("", "two", 314cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "three")); 315cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(new Locale("", "TWO", "three"), result.get(0)); 316cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(new Locale("", "TWO"), result.get(1)); 317cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(Locale.ROOT, result.get(2)); 318cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 319cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath result = control.getCandidateLocales("baseName", new Locale("", "", 320cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "three")); 321cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(new Locale("", "", "three"), result.get(0)); 322cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(Locale.ROOT, result.get(1)); 323cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 324cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath result = control.getCandidateLocales("baseName", new Locale("", "two", 325cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "")); 326cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(new Locale("", "TWO"), result.get(0)); 327cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(Locale.ROOT, result.get(1)); 328cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 329cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath result = control.getCandidateLocales("baseName", Locale.ROOT); 330cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(Locale.ROOT, result.get(0)); 331cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 332cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 333cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control.getCandidateLocales(null, Locale.US); 334cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 335cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 336cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 337cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 338cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 339cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 340cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control.getCandidateLocales("baseName", null); 341cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 342cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 343cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 344cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 345cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 346cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 347cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 348cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * {@link java.util.ResourceBundle.Control#getFallbackLocale(java.lang.String, java.util.Locale)}. 349cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 350cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @SuppressWarnings("nls") 351cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_getFallbackLocale_LStringLLocale() { 352cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Locale defaultLocale = Locale.getDefault(); 353cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Locale testLocale = new Locale("TestLanguage", "TestCountry", "Var"); 354cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Locale.setDefault(testLocale); 355cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(testLocale, control.getFallbackLocale("baseName", 356cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Locale.ROOT)); 357cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(testLocale, control.getFallbackLocale("baseName", Locale.US)); 358cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertSame(null, control.getFallbackLocale("baseName", testLocale)); 359cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 360cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control.getFallbackLocale(null, Locale.US); 361cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 362cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 363cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 364cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 365cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 366cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 367cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control.getFallbackLocale("baseName", null); 368cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 369cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 370cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 371cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 372cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // restore 373cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Locale.setDefault(defaultLocale); 374cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 375cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 376cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @SuppressWarnings("nls") 377cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static File copyFile(final URL src) throws IOException { 378cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String tail = src.getFile().split("hyts_resource")[1]; 379cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String tmpdir = System.getProperty("java.io.tmpdir"); 380cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (null == tmpdir) { 381cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return null; 382cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 383cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String copyName = tmpdir + File.separator + "hyts_resource_copy" + tail; 384cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath File copy = new File(copyName); 385cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath if (copy.exists()) { 386cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath copy.delete(); 387cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 388cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath copy.createNewFile(); 389cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath copy.deleteOnExit(); 390cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 391cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Reader in = new InputStreamReader(src.openStream()); 392cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Writer out = new FileWriter(copy); 393cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath int c; 394cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath while ((c = in.read()) != -1) { 395cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out.write(c); 396cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 397cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath in.close(); 398cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath out.close(); 399cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return copy; 400cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 401cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 402cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static class SubRBStaticPrivate extends ListResourceBundle { 403cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath private SubRBStaticPrivate() { 404cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath super(); 405cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 406cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 407cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 408cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected Object[][] getContents() { 409cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath return null; 410cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 411cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 412cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 413cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /* 414cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * change the value in the .properties file 415cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 416cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @SuppressWarnings("nls") 417cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath static void changeProperties(File file) throws FileNotFoundException { 418cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String newValue = "property=changedValue"; 419cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PrintWriter writer = new PrintWriter(file); 420cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath writer.write(newValue); 421cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath writer.flush(); 422cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath writer.close(); 423cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Scanner scanner = new Scanner(file); 424cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(newValue, scanner.nextLine()); 425cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath scanner.close(); 426cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 427cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 428cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 429cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * {@link java.util.ResourceBundle.Control#getTimeToLive(java.lang.String, java.util.Locale)}. 430cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 431cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @SuppressWarnings("nls") 432cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_getTimeToLive_LStringLLocale() { 433cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(TTL_NO_EXPIRATION_CONTROL, control.getTimeToLive( 434cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "baseName", Locale.US)); 435cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 436cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control.getTimeToLive(null, Locale.US); 437cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 438cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 439cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 440cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 441cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 442cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control.getTimeToLive("baseName", null); 443cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 444cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 445cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 446cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 447cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 448cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 449cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 450cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * @throws Exception 451cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * {@link java.util.ResourceBundle.Control#needsReload(java.lang.String, java.util.Locale, java.lang.String, java.lang.ClassLoader, java.util.ResourceBundle, long)}. 452cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 453cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @SuppressWarnings("nls") 454cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_needsReload_LStringLLocaleLStringLClassLoaderResourceBundleJ() 455cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath throws Exception { 456cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String className = "tests.support.Support_TestResource"; 457cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String propertiesName = Support_Resources.RESOURCE_PACKAGE_NAME 458cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath + ".hyts_resource"; 459cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String propertiesNameCopy = "hyts_resource_copy"; 460cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String CLASS = "java.class"; 461cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath String PROPERTIES = "java.properties"; 462cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Locale frFR = new Locale("fr", "FR"); 463cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ClassLoader systemLoader = ClassLoader.getSystemClassLoader(); 464cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ClassLoader URLLoader = systemLoader; 465cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ResourceBundle bundle = null; 466cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath long time = 0L; 467cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath final URL srcFile = URLLoader.getResource(control.toResourceName( 468cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control.toBundleName(propertiesName, frFR), "properties")); 469665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath assertNotNull(srcFile); 470cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath final File copyFile = copyFile(srcFile); 471cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 472cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // 1. format = "java.properties" 473665c45e473c041dc2b1e8d85fbaf7008daa69c06Narayan Kamath if (null != URLLoader.getResourceAsStream(copyFile.toURL().toString())) { 474cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Thread.sleep(1000); 475cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath bundle = control.newBundle(propertiesNameCopy, frFR, PROPERTIES, 476cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath URLLoader, false); 477cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath time = System.currentTimeMillis(); 478cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(bundle.getClass() == PropertyResourceBundle.class); 479cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("fr_FR_resource", bundle.getString("property")); 480cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertFalse(control.needsReload(propertiesNameCopy, frFR, 481cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PROPERTIES, URLLoader, bundle, time)); 482cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // change the file 483cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Thread.sleep(2000); 484cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath changeProperties(copyFile); 485cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(control.needsReload(propertiesNameCopy, frFR, 486cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PROPERTIES, URLLoader, bundle, time)); 487cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // detect again 488cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(control.needsReload(propertiesNameCopy, frFR, 489cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PROPERTIES, URLLoader, bundle, time)); 490cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // long long ago 491cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(control.needsReload(propertiesNameCopy, frFR, 492cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PROPERTIES, URLLoader, bundle, 2006L)); 493cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // other loader 494cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertFalse(control.needsReload(propertiesNameCopy, frFR, 495cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PROPERTIES, systemLoader, bundle, time)); 496cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // other bundle 497cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath ResourceBundle otherBundle = control.newBundle(propertiesName, 498cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath Locale.ROOT, PROPERTIES, systemLoader, false); 499cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("parent", otherBundle.getString("property")); 500cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(control.needsReload(propertiesNameCopy, frFR, 501cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PROPERTIES, URLLoader, otherBundle, time)); 502cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath otherBundle = control.newBundle(propertiesName, Locale.ROOT, 503cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PROPERTIES, URLLoader, false); 504cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("resource", otherBundle.getString("property")); 505cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertTrue(control.needsReload(propertiesNameCopy, frFR, 506cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PROPERTIES, URLLoader, otherBundle, time)); 507cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // other time 508cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertFalse(control.needsReload(propertiesNameCopy, frFR, 509cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath PROPERTIES, URLLoader, bundle, System.currentTimeMillis())); 510cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } else { 511cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath System.err 512cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .println("Can not find the test file, some code of this test 'test_needsReload_LStringLLocaleLStringLClassLoaderResourceBundleJ' did not run."); 513cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 514cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 515cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 516cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // 2. format = "java.class" 517cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath bundle = control.newBundle(className, frFR, CLASS, systemLoader, false); 518cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath time = System.currentTimeMillis(); 519cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("frFRValue3", bundle.getString("parent3")); 520cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertFalse(control.needsReload(className, frFR, CLASS, systemLoader, 521cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath bundle, time)); 522cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // exceptions 523cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control.needsReload(propertiesName, frFR, PROPERTIES, URLLoader, 524cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath bundle, time); 525cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 526cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control 527cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .needsReload(null, frFR, PROPERTIES, URLLoader, bundle, 528cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath time); 529cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 530cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 531cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 532cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 533cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 534cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control.needsReload(propertiesName, null, PROPERTIES, URLLoader, 535cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath bundle, time); 536cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 537cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 538cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 539cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 540cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 541cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control.needsReload(propertiesName, frFR, null, URLLoader, bundle, 542cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath time); 543cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 544cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 545cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 546cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 547cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 548cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control.needsReload(propertiesName, frFR, PROPERTIES, null, bundle, 549cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath time); 550cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 551cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 552cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 553cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 554cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 555cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control.needsReload(propertiesName, frFR, PROPERTIES, URLLoader, 556cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath null, time); 557cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 558cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 559cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 560cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 561cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 562cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 563cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 564cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * {@link java.util.ResourceBundle.Control#toBundleName(java.lang.String, java.util.Locale)}. 565cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 566cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @SuppressWarnings("nls") 567cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_toBundleName_LStringLLocale() { 568cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("baseName_one_TWO_three", control.toBundleName("baseName", 569cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath new Locale("one", "two", "three"))); 570cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("baseName_one_TWO", control.toBundleName("baseName", 571cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath new Locale("one", "two"))); 572cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("baseName_one__three", control.toBundleName("baseName", 573cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath new Locale("one", "", "three"))); 574cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("baseName__TWO_three", control.toBundleName("baseName", 575cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath new Locale("", "two", "three"))); 576cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("baseName_one", control.toBundleName("baseName", 577cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath new Locale("one", "", ""))); 578cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("baseName___three", control.toBundleName("baseName", 579cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath new Locale("", "", "three"))); 580cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("baseName__TWO", control.toBundleName("baseName", 581cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath new Locale("", "two", ""))); 582cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("baseName", control.toBundleName("baseName", new Locale( 583cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "", "", ""))); 584cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("baseName", control.toBundleName("baseName", Locale.ROOT)); 585cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("_one_TWO_three", control.toBundleName("", new Locale( 586cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "one", "two", "three"))); 587cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("", control.toBundleName("", Locale.ROOT)); 588cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 589cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("does.not.exists_one_TWO_three", control.toBundleName( 590cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "does.not.exists", new Locale("one", "two", "three"))); 591cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("does/not/exists_one_TWO_three", control.toBundleName( 592cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "does/not/exists", new Locale("one", "two", "three"))); 593cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("does_not_exists__one_TWO_three", control.toBundleName( 594cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "does_not_exists_", new Locale("one", "two", "three"))); 595cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 596cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("...", control.toBundleName("...", Locale.ROOT)); 597cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("s/./\\//g", control 598cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .toBundleName("s/./\\//g", Locale.ROOT)); 599cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("123_one", control.toBundleName("123", new Locale("one"))); 600cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 601cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 602cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control.toBundleName(null, Locale.US); 603cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 604cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 605cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 606cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 607cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 608cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 609cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control.toBundleName("baseName", null); 610cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 611cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 612cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 613cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 614cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 615cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 616cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 617cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * {@link java.util.ResourceBundle.Control#toResourceName(java.lang.String, java.lang.String)}. 618cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 619cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @SuppressWarnings("nls") 620cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath public void test_toResourceNameLStringLString() { 621cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("does/not/exists_language_country.someSuffix", control 622cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .toResourceName("does.not.exists_language_country", 623cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "someSuffix")); 624cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("does/not/exists_language_country.someSuffix", control 625cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .toResourceName("does/not/exists_language_country", 626cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "someSuffix")); 627cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("does///not//exists_language/country.someSuffix", control 628cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .toResourceName("does...not..exists_language.country", 629cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "someSuffix")); 630cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("does\\not\\exists_language_country.someSuffix", control 631cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .toResourceName("does\\not\\exists_language_country", 632cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "someSuffix")); 633cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("does/not/exists_language_country/.someSuffix", control 634cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .toResourceName("does.not.exists_language_country.", 635cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "someSuffix")); 636cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("does/not/exists_language_country../someSuffix", control 637cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath .toResourceName("does.not.exists_language_country", 638cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath "./someSuffix")); 639cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 640cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("///.//", control.toResourceName("...", "//")); 641cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("///...", control.toResourceName("///", "..")); 642cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("123...", control.toResourceName("123", "..")); 643cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals("base.", control.toResourceName("base", "")); 644cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(".suffix", control.toResourceName("", "suffix")); 645cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath assertEquals(".", control.toResourceName("", "")); 646cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 647cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 648cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control.toResourceName(null, "suffix"); 649cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 650cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 651cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 652cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 653cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 654cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath try { 655cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control.toResourceName("bundleName", null); 656cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath fail("Should throw NullPointerException"); 657cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } catch (NullPointerException e) { 658cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath // expected 659cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 660cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 661cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 662cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 663cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 664cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * @throws java.lang.Exception 665cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 666cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 667cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected void tearDown() throws Exception { 668cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath super.tearDown(); 669cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 670cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 671cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath /** 672cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath * @throws java.lang.Exception 673cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath */ 674cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath @Override 675cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath protected void setUp() throws Exception { 676cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath super.setUp(); 677cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath controlP = Control.getControl(FORMAT_PROPERTIES); 678cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath controlC = Control.getControl(FORMAT_CLASS); 679cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath control = Control.getControl(FORMAT_DEFAULT); 680cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath } 681cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath 682cb318c6f4fe5b0e20099fa85f1b95ccb2d24119fNarayan Kamath} 683