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 18ab762bb740405d0fefcccf4a0899a234f995be13Narayan Kamathpackage org.apache.harmony.tests.java.util; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamathimport java.io.ByteArrayInputStream; 21ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamathimport java.io.CharArrayReader; 22ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamathimport java.io.IOException; 23ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamathimport java.io.InputStream; 24ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamathimport java.io.Reader; 25ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamathimport java.io.UnsupportedEncodingException; 26ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamathimport java.nio.ByteBuffer; 27ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamathimport java.nio.CharBuffer; 28ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamathimport java.nio.charset.Charset; 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Enumeration; 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.MissingResourceException; 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.PropertyResourceBundle; 32ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamathimport java.util.ResourceBundle; 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Vector; 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic class PropertyResourceBundleTest extends junit.framework.TestCase { 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project static PropertyResourceBundle prb; 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 40ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * @throws IOException 41229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.PropertyResourceBundle#PropertyResourceBundle(java.io.InputStream) 42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 43ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath @SuppressWarnings("nls") 44ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_ConstructorLjava_io_InputStream() throws IOException { 45ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath InputStream propertiesStream = new ByteArrayInputStream( 46ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath "p1=one\ncharset=iso-8859-1".getBytes("ISO-8859-1")); 47ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath prb = new PropertyResourceBundle(propertiesStream); 48ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals(2, prb.keySet().size()); 49ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals("one", prb.getString("p1")); 50ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals("iso-8859-1", prb.getString("charset")); 51ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 52ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath propertiesStream = new ByteArrayInputStream("p1=one\ncharset=UTF-8" 53ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath .getBytes("UTF-8")); 54ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath prb = new PropertyResourceBundle(propertiesStream); 55ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals(2, prb.keySet().size()); 56ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals("UTF-8", prb.getString("charset")); 57ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 58ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 59ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath new PropertyResourceBundle((InputStream) null); 60ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw NullPointerException"); 61ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (NullPointerException e) { 62ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // expected 63ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 64ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 65ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 66ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath /** 67ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * @throws IOException 68ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * {@link java.util.PropertyResourceBundle#PropertyResourceBundle(java.io.Reader)} 69ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * @since 1.6 70ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath */ 71ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath @SuppressWarnings("nls") 72ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_ConstructorLjava_io_Reader() throws IOException { 73ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Charset charset = Charset.forName("ISO-8859-1"); 74ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath String content = "p1=one\nfeature=good_feature"; 75ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath CharBuffer cbuffer = charset.decode(ByteBuffer.wrap(content 76ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath .getBytes("ISO-8859-1"))); 77ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath char[] chars = new char[cbuffer.limit()]; 78ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath cbuffer.get(chars); 79ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 80ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath prb = new PropertyResourceBundle(new CharArrayReader(chars)); 81ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals(2, prb.keySet().size()); 82ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals("one", prb.getString("p1")); 83ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals("good_feature", prb.getString("feature")); 84ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 85ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath charset = Charset.forName("UTF-8"); 86ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath cbuffer = charset.decode(ByteBuffer.wrap(content.getBytes("UTF-8"))); 87ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath chars = new char[cbuffer.limit()]; 88ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath cbuffer.get(chars); 89ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 90ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath prb = new PropertyResourceBundle(new CharArrayReader(chars)); 91ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals(2, prb.keySet().size()); 92ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals("one", prb.getString("p1")); 93ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals("good_feature", prb.getString("feature")); 94ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 95ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath try { 96ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath new PropertyResourceBundle((Reader) null); 97ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath fail("Should throw NullPointerException"); 98ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } catch (NullPointerException e) { 99ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath // expected 100ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 104229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.PropertyResourceBundle#getKeys() 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_getKeys() { 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project Enumeration keyEnum = prb.getKeys(); 108ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Vector<Object> test = new Vector<Object>(); 109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project int keyCount = 0; 110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project while (keyEnum.hasMoreElements()) { 111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project test.addElement(keyEnum.nextElement()); 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project keyCount++; 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertEquals("Returned the wrong number of keys", 2, keyCount); 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned the wrong keys", test.contains("p1") 117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && test.contains("p2")); 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 121229e34b182b98e1dba15d3dc6341954986ae2b7aBrian Carlstrom * java.util.PropertyResourceBundle#handleGetObject(java.lang.String) 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public void test_handleGetObjectLjava_lang_String() { 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // Test for method java.lang.Object 125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project // java.util.PropertyResourceBundle.handleGetObject(java.lang.String) 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project assertTrue("Returned incorrect objects", prb.getObject("p1") 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project .equals("one") 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project && prb.getObject("p2").equals("two")); 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (MissingResourceException e) { 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail( 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "Threw MisingResourceException for a key contained in the bundle"); 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project prb.getObject("Not in the bundle"); 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (MissingResourceException e) { 137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project return; 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail( 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project "Failed to throw MissingResourceException for object not in the bundle"); 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Sets up the fixture, for example, open a network connection. This method 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * is called before a test is executed. 146ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * 147ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * @throws UnsupportedEncodingException 148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 149ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath protected void setUp() throws UnsupportedEncodingException { 150ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath InputStream propertiesStream = new ByteArrayInputStream( 151ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath "p1=one\np2=two".getBytes("ISO-8859-1")); 152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project try { 153adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project prb = new PropertyResourceBundle(propertiesStream); 154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } catch (java.io.IOException e) { 155adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project fail( 156ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath "Construction of PropertyResourceBundle threw IOException"); 157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Tears down the fixture, for example, close a network connection. This 162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * method is called after a test is executed. 163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project protected void tearDown() { 165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 166ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 167ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath /** 168ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath * {@link java.util.PropertyResourceBundle#Enumeration} 169ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath */ 170ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath public void test_access$0_Enumeration() throws IOException { 171ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath class MockResourceBundle extends PropertyResourceBundle { 172ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath MockResourceBundle(java.io.InputStream stream) throws IOException { 173ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath super(stream); 174ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 175ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 176ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath @Override 177ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath protected void setParent(ResourceBundle bundle) { 178ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath super.setParent(bundle); 179ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 180ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 181ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 182ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath java.io.InputStream localStream = new java.io.ByteArrayInputStream( 183ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath "p3=three\np4=four".getBytes()); 184ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath MockResourceBundle localPrb = new MockResourceBundle(localStream); 185ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath localPrb.setParent(prb); 186ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Enumeration<String> keys = localPrb.getKeys(); 187ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath Vector<String> contents = new Vector<String>(); 188ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath while (keys.hasMoreElements()) { 189ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath contents.add(keys.nextElement()); 190ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 191ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath 192ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertEquals("did not get the right number of properties", 4, contents 193ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath .size()); 194ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue("did not get the parent property p1", contents 195ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath .contains("p1")); 196ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue("did not get the parent property p2", contents 197ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath .contains("p2")); 198ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue("did not get the local property p3", contents.contains("p3")); 199ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath assertTrue("did not get the local property p4", contents.contains("p4")); 200ba45f538a14c08015021e899f5883f07ed2ff237Narayan Kamath } 201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 202