1b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath/* 2b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * Licensed to the Apache Software Foundation (ASF) under one or more 3b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * contributor license agreements. See the NOTICE file distributed with 4b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * this work for additional information regarding copyright ownership. 5b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * The ASF licenses this file to You under the Apache License, Version 2.0 6b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * (the "License"); you may not use this file except in compliance with 7b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * the License. You may obtain a copy of the License at 8b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * 9b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * http://www.apache.org/licenses/LICENSE-2.0 10b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * 11b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * Unless required by applicable law or agreed to in writing, software 12b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * distributed under the License is distributed on an "AS IS" BASIS, 13b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * See the License for the specific language governing permissions and 15b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * limitations under the License. 16b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath */ 17b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 18b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathpackage org.apache.harmony.tests.java.util.prefs; 19b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 20b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.io.ByteArrayInputStream; 21b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.io.ByteArrayOutputStream; 22b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.io.File; 23b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.io.IOException; 24b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.io.InputStream; 25b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.io.UnsupportedEncodingException; 26b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.nio.charset.StandardCharsets; 27b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.util.Arrays; 28b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.util.prefs.AbstractPreferences; 29b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.util.prefs.BackingStoreException; 30b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.util.prefs.FilePreferencesImpl; 31b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.util.prefs.NodeChangeEvent; 32b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.util.prefs.NodeChangeListener; 33b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.util.prefs.PreferenceChangeEvent; 34b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.util.prefs.PreferenceChangeListener; 35b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.util.prefs.Preferences; 36b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport java.util.prefs.PreferencesFactory; 37b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport javax.xml.parsers.DocumentBuilder; 38b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport javax.xml.parsers.DocumentBuilderFactory; 39b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport javax.xml.parsers.ParserConfigurationException; 40b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport junit.framework.TestCase; 41b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport libcore.io.IoUtils; 42b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport org.w3c.dom.Document; 43b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathimport org.xml.sax.SAXException; 44b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 45b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamathpublic class AbstractPreferencesTest extends TestCase { 46b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 47b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public static final class TestPreferencesFactory implements PreferencesFactory { 48b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private final Preferences userPrefs; 49b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private final Preferences systemPrefs; 50b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 51b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public TestPreferencesFactory(String root) { 52b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath userPrefs = new FilePreferencesImpl(root + "/user", true); 53b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath systemPrefs = new FilePreferencesImpl(root + "/system", false); 54b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 55b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 56b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public Preferences userRoot() { 57b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return userPrefs; 58b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 59b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 60b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public Preferences systemRoot() { 61b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return systemPrefs; 62b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 63b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 64b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 65b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private AbstractPreferences pref; 66b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private AbstractPreferences root; 67b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private AbstractPreferences parent; 68b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private PreferencesFactory defaultFactory; 69b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 70b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private final static String LONG_KEY; 71b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private final static String LONG_VALUE; 72b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private final static String LONG_NAME; 73b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 74b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath static { 75b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath final byte[] chars = new byte[Preferences.MAX_VALUE_LENGTH]; 76b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 77b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath LONG_VALUE = new String(chars, StandardCharsets.US_ASCII); 78b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath LONG_KEY = LONG_VALUE.substring(0, Preferences.MAX_KEY_LENGTH); 79b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath LONG_NAME = LONG_VALUE.substring(0, Preferences.MAX_NAME_LENGTH); 80b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 81b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 82b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 83b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath protected void setUp() throws Exception { 84b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath File tmpDir = IoUtils.createTemporaryDirectory("OldAbstractPreferencesTest"); 85b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath defaultFactory = Preferences.setPreferencesFactory( 86b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath new TestPreferencesFactory(tmpDir.getAbsolutePath())); 87b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath root = (AbstractPreferences) Preferences.userRoot(); 88b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath parent = (AbstractPreferences) Preferences.userNodeForPackage(Preferences.class); 89b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 90b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref = (AbstractPreferences) parent.node("mock"); 91b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 92b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 93b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath @Override 94b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath protected void tearDown() throws Exception { 95b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences.setPreferencesFactory(defaultFactory); 96b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 97b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 98b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testConstructor() throws BackingStoreException { 99b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 100b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref = new MockAbstractPreferences( 101b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath (AbstractPreferences) Preferences.userRoot(), "mo/ck"); 102b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 103b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 104b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 105b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 106b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref = new MockAbstractPreferences(null, "mock"); 107b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 108b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 109b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 110b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 111b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath new MockAbstractPreferences(null, " "); 112b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 113b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 114b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 115b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 116b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath new MockAbstractPreferences(pref, ""); 117b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 118b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 119b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 120b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 121b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath new MockAbstractPreferences(pref, null); 122b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 123b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 124b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 125b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath if (!(pref instanceof MockAbstractPreferences)) { 126b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return; 127b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 128b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath new MockAbstractPreferences(pref, " "); 129b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 130b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences p2 = new MockAbstractPreferences(null, ""); 131b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNotSame(p2, Preferences.systemRoot()); 132b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNotSame(p2, Preferences.userRoot()); 133b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertFalse(p2.isUserNode()); 134b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 135b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p2 = new MockAbstractPreferences((AbstractPreferences) Preferences 136b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .userRoot(), "mock"); 137b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNotSame(p2, pref); 138b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p2.removeNode(); 139b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 140b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 141b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testProtectedFields() throws BackingStoreException { 142b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath if (!(pref instanceof MockAbstractPreferences)) { 143b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return; 144b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 145b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences p = new MockAbstractPreferences(pref, "newNode"); 146b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertFalse(p.getNewNode()); 147b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(p.getLock().getClass(), Object.class); 148b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 149b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p = (MockAbstractPreferences) pref.node("child"); 150b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(p.getNewNode()); 151b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 152b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p = (MockAbstractPreferences) ((MockAbstractPreferences) pref) 153b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .publicChildSpi("child2"); 154b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(p.getNewNode()); 155b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 156b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 157b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testToString() { 158b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("User Preference Node: " + pref.absolutePath(), pref 159b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .toString()); 160b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 161b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref = new MockAbstractPreferences((AbstractPreferences) Preferences 162b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .systemRoot(), "mock"); 163b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("System Preference Node: " + pref.absolutePath(), pref 164b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .toString()); 165b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 166b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 167b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testAbsolutePath() { 168b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("/java/util/prefs/mock", pref.absolutePath()); 169b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 170b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref = new MockAbstractPreferences(pref, " "); 171b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("/java/util/prefs/mock/ ", pref.absolutePath()); 172b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 173b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 174b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testChildrenNames() throws BackingStoreException { 175b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, pref.childrenNames().length); 176b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 177b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // MockAbstractPreferences child1 = new MockAbstractPreferences(pref, 178b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // "child1"); 179b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // MockAbstractPreferences child2 = new MockAbstractPreferences(pref, 180b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // "child2"); 181b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // MockAbstractPreferences child3 = new MockAbstractPreferences(pref, 182b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // "child3"); 183b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // MockAbstractPreferences subchild1 = new 184b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // MockAbstractPreferences(child1, 185b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // "subchild1"); 186b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences child1 = pref.node("child1"); 187b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 188b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.node("child2"); 189b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.node("child3"); 190b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child1.node("subchild1"); 191b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 192b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(pref, child1.parent()); 193b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(3, pref.childrenNames().length); 194b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 195b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 196b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testClear() throws BackingStoreException { 197b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("testClearKey", "testClearValue"); 198b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("testClearKey1", "testClearValue1"); 199b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("testClearValue", pref.get("testClearKey", null)); 200b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("testClearValue1", pref.get("testClearKey1", null)); 201b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.clear(); 202b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(pref.get("testClearKey", null)); 203b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(pref.get("testClearKey1", null)); 204b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 205b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 206b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testGet() throws BackingStoreException { 207b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(pref.get("", null)); 208b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("default", pref.get("key", "default")); 209b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(pref.get("key", null)); 210b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("testGetkey", "value"); 211b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(pref.get("testGetKey", null)); 212b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("value", pref.get("testGetkey", null)); 213b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 214b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 215b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.get(null, "abc"); 216b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 217b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 218b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 219b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 220b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.get("", "abc"); 221b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.get("key", null); 222b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.get("key", ""); 223b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putFloat("floatKey", 1.0f); 224b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("1.0", pref.get("floatKey", null)); 225b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 226b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.removeNode(); 227b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 228b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.get("key", "abc"); 229b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 230b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 231b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 232b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 233b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.get(null, "abc"); 234b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 235b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 236b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 237b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 238b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 239b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testGetBoolean() { 240b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 241b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.getBoolean(null, false); 242b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 243b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 244b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 245b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 246b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("testGetBooleanKey", "false"); 247b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("testGetBooleanKey2", "value"); 248b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertFalse(pref.getBoolean("testGetBooleanKey", true)); 249b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(pref.getBoolean("testGetBooleanKey2", true)); 250b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 251b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 252b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testPutByteArray() { 253b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 254b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putByteArray(null, new byte[0]); 255b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 256b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 257b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 258b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 259b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putByteArray("testPutByteArrayKey4", null); 260b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 261b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 262b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 263b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 264b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putByteArray(LONG_KEY, new byte[0]); 265b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 266b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putByteArray(LONG_KEY + "a", new byte[0]); 267b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 268b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 269b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 270b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath byte[] longArray = new byte[(int) (Preferences.MAX_VALUE_LENGTH * 0.74)]; 271b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath byte[] longerArray = new byte[(int) (Preferences.MAX_VALUE_LENGTH * 0.75) + 1]; 272b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putByteArray(LONG_KEY, longArray); 273b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 274b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putByteArray(LONG_KEY, longerArray); 275b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 276b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 277b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 278b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 279b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putByteArray("testPutByteArrayKey", new byte[0]); 280b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("", pref.get("testPutByteArrayKey", null)); 281b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(Arrays.equals(new byte[0], pref.getByteArray( 282b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath "testPutByteArrayKey", null))); 283b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 284b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putByteArray("testPutByteArrayKey3", new byte[] { 'a', 'b', 'c' }); 285b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("YWJj", pref.get("testPutByteArrayKey3", null)); 286b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(Arrays.equals(new byte[] { 'a', 'b', 'c' }, pref 287b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .getByteArray("testPutByteArrayKey3", null))); 288b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 289b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 290b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testGetByteArray() throws UnsupportedEncodingException { 291b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 292b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.getByteArray(null, new byte[0]); 293b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 294b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 295b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 296b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath byte[] b64Array = new byte[] { 0x59, 0x57, 0x4a, 0x6a };// BASE64 297b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // encoding for 298b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // "abc" 299b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 300b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("testGetByteArrayKey", "abc="); 301b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("testGetByteArrayKey2", new String(b64Array, "UTF-8")); 302b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("invalidKey", "<>?"); 303b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // assertTrue(Arrays.equals(new byte[0], p.getByteArray( 304b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // "testGetByteArrayKey", new byte[0]))); 305b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(Arrays.equals(new byte[] { 105, -73 }, pref.getByteArray( 306b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath "testGetByteArrayKey", new byte[0]))); 307b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(Arrays.equals(new byte[] { 'a', 'b', 'c' }, pref 308b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .getByteArray("testGetByteArrayKey2", new byte[0]))); 309b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(Arrays.equals(new byte[0], pref.getByteArray("invalidKey", 310b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath new byte[0]))); 311b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 312b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putByteArray("testGetByteArrayKey3", b64Array); 313b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putByteArray("testGetByteArrayKey4", "abc".getBytes()); 314b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(Arrays.equals(b64Array, pref.getByteArray( 315b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath "testGetByteArrayKey3", new byte[0]))); 316b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(Arrays.equals("abc".getBytes(), pref.getByteArray( 317b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath "testGetByteArrayKey4", new byte[0]))); 318b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 319b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 320b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testGetDouble() { 321b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 322b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.getDouble(null, 0); 323b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 324b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 325b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 326b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 327b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("testGetDoubleKey", "1"); 328b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("testGetDoubleKey2", "value"); 329b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putDouble("testGetDoubleKey3", 1); 330b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putInt("testGetDoubleKey4", 1); 331b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1.0, pref.getDouble("testGetDoubleKey", 0.0), 0); 332b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0.0, pref.getDouble("testGetDoubleKey2", 0.0), 0); 333b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1.0, pref.getDouble("testGetDoubleKey3", 0.0), 0); 334b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1.0, pref.getDouble("testGetDoubleKey4", 0.0), 0); 335b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 336b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 337b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testGetFloat() { 338b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 339b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.getFloat(null, 0f); 340b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 341b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 342b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 343b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("testGetFloatKey", "1"); 344b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("testGetFloatKey2", "value"); 345b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1f, pref.getFloat("testGetFloatKey", 0f), 0); //$NON-NLS-1$ 346b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0f, pref.getFloat("testGetFloatKey2", 0f), 0); 347b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 348b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 349b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testGetInt() { 350b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 351b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.getInt(null, 0); 352b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 353b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 354b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 355b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 356b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("testGetIntKey", "1"); 357b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("testGetIntKey2", "value"); 358b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, pref.getInt("testGetIntKey", 0)); 359b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, pref.getInt("testGetIntKey2", 0)); 360b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 361b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 362b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testGetLong() { 363b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 364b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.getLong(null, 0); 365b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 366b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 367b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 368b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 369b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("testGetLongKey", "1"); 370b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("testGetLongKey2", "value"); 371b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, pref.getInt("testGetLongKey", 0)); 372b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, pref.getInt("testGetLongKey2", 0)); 373b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 374b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 375b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testIsUserNode() { 376b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(pref.isUserNode()); 377b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 378b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref = new MockAbstractPreferences((AbstractPreferences) Preferences 379b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .systemRoot(), "mock"); 380b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertFalse(pref.isUserNode()); 381b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 382b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 383b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // TODO, how to test the "stored defaults" 384b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // TODO, how to test the multi-thread 385b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testKeys() throws BackingStoreException { 386b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, pref.keys().length); 387b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 388b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("key0", "value"); 389b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("key1", "value1"); 390b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("key2", "value2"); 391b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("key3", "value3"); 392b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 393b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath String[] keys = pref.keys(); 394b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(4, keys.length); 395b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath for (int i = 0; i < keys.length; i++) { 396b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, keys[i].indexOf("key")); 397b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(4, keys[i].length()); 398b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 399b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 400b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 401b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testName() { 402b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("mock", pref.name()); 403b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 404b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref = new MockAbstractPreferences(pref, " "); 405b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(" ", pref.name()); 406b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 407b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 408b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testCharCase() throws BackingStoreException { 409b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(pref.node("samechild"), pref.node("samechild")); 410b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNotSame(pref.node("sameChild"), pref.node("samechild")); 411b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNotSame(pref.node("child"), pref.node("Child")); 412b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNotSame(pref.node("child"), pref.node("Child")); 413b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNotSame(pref.node("child"), pref.node(" child")); 414b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath String[] names = pref.childrenNames(); 415b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(5, names.length); 416b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath for (int i = 0; i < names.length; i++) { 417b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath String name = names[i]; 418b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue("samechild".equals(name) || "sameChild".equals(name) 419b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath || "child".equals(name) || "Child".equals(name) 420b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath || " child".equals(name)); 421b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 422b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 423b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences mock1 = pref.node("mock1"); 424b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath mock1.put("key", "1value"); 425b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath mock1.put("KEY", "2value"); 426b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath mock1.put("/K/E/Y", "7value"); 427b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath mock1.put("/K/E\\Y\\abc~@!#$%^&*(\\", "8value"); 428b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 429b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("8value", mock1.get("/K/E\\Y\\abc~@!#$%^&*(\\", null)); 430b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(mock1.get("/k/e/y", null)); 431b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("7value", mock1.get("/K/E/Y", null)); 432b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("1value", mock1.get("key", null)); 433b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 434b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath String[] keys = mock1.keys(); 435b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(4, keys.length); 436b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath for (int i = 0; i < keys.length; i++) { 437b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath String key = keys[i]; 438b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue("key".equals(key) || "KEY".equals(key) 439b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath || "/K/E/Y".equals(key) 440b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath || "/K/E\\Y\\abc~@!#$%^&*(\\".equals(key)); 441b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 442b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 443b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 444b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testNode() throws BackingStoreException { 445b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 446b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.node(null); 447b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 448b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 449b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 450b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 451b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.node("/java/util/prefs/"); 452b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 453b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 454b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 455b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 456b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.node("/java//util/prefs"); 457b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 458b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 459b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 460b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 461b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.node(LONG_NAME + "a"); 462b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 463b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 464b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 465b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNotNull(pref.node(LONG_NAME)); 466b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 467b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(root, pref.node("/")); 468b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 469b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences prefs = pref.node("/java/util/prefs"); 470b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(prefs, parent); 471b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 472b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(pref, pref.node("")); 473b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 474b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath if (!(pref instanceof MockAbstractPreferences)) { 475b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return; 476b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 477b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences child = (MockAbstractPreferences) ((MockAbstractPreferences) pref) 478b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .publicChildSpi("child"); 479b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(child, pref.node("child")); 480b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 481b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences child2 = pref.node("child2"); 482b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(child2, ((MockAbstractPreferences) pref) 483b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .publicChildSpi("child2")); 484b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 485b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences grandchild = pref.node("child/grandchild"); 486b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(grandchild, child.childSpi("grandchild")); 487b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(grandchild, child.cachedChildrenImpl()[0]); 488b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath grandchild.removeNode(); 489b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNotSame(grandchild, pref.node("child/grandchild")); 490b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 491b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath grandchild = pref.node("child3/grandchild"); 492b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath AbstractPreferences[] childs = ((MockAbstractPreferences) pref) 493b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .cachedChildrenImpl(); 494b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences child3 = child; 495b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath for (int i = 0; i < childs.length; i++) { 496b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath if (childs[i].name().equals("child3")) { 497b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child3 = childs[i]; 498b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath break; 499b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 500b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 501b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(child3, grandchild.parent()); 502b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 503b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 504b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testNodeExists() throws BackingStoreException { 505b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 506b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.nodeExists(null); 507b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 508b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 509b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 510b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 511b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.nodeExists("/java/util/prefs/"); 512b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 513b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 514b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 515b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 516b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.nodeExists("/java//util/prefs"); 517b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 518b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 519b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 520b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 521b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(pref.nodeExists("/")); 522b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 523b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(pref.nodeExists("/java/util/prefs")); 524b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 525b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(pref.nodeExists("")); 526b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 527b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertFalse(pref.nodeExists("child")); 528b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences grandchild = pref.node("child/grandchild"); 529b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(pref.nodeExists("child")); 530b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(pref.nodeExists("child/grandchild")); 531b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath grandchild.removeNode(); 532b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(pref.nodeExists("child")); 533b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertFalse(pref.nodeExists("child/grandchild")); 534b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertFalse(grandchild.nodeExists("")); 535b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 536b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertFalse(pref.nodeExists("child2/grandchild")); 537b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.node("child2/grandchild"); 538b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(pref.nodeExists("child2/grandchild")); 539b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 540b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 541b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void test_nodeExists() throws BackingStoreException { 542b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath AbstractPreferences test = (AbstractPreferences) Preferences.userRoot() 543b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .node("test"); 544b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 545b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath test.nodeExists(null); 546b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 547b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 548b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 549b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 550b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath test.removeNode(); 551b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 552b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath test.nodeExists(null); 553b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 554b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 555b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 556b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 557b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 558b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testParent() { 559b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(parent, pref.parent()); 560b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath AbstractPreferences child1 = new MockAbstractPreferences(pref, "child1"); 561b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(pref, child1.parent()); 562b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(root.parent()); 563b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 564b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 565b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testPut() throws BackingStoreException { 566b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("", "emptyvalue"); 567b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("emptyvalue", pref.get("", null)); 568b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("testPutkey", "value1"); 569b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("value1", pref.get("testPutkey", null)); 570b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("testPutkey", "value2"); 571b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("value2", pref.get("testPutkey", null)); 572b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 573b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("", "emptyvalue"); 574b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("emptyvalue", pref.get("", null)); 575b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 576b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 577b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put(null, "value"); 578b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 579b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 580b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 581b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 582b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 583b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("key", null); 584b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 585b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 586b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 587b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 588b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put(LONG_KEY, LONG_VALUE); 589b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 590b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put(LONG_KEY + 1, LONG_VALUE); 591b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 592b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 593b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 594b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 595b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 596b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put(LONG_KEY, LONG_VALUE + 1); 597b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 598b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 599b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 600b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 601b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.removeNode(); 602b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 603b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put(LONG_KEY, LONG_VALUE + 1); 604b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 605b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 606b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 607b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 608b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 609b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put(LONG_KEY, LONG_VALUE); 610b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 611b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 612b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 613b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 614b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 615b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testPutBoolean() { 616b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 617b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putBoolean(null, false); 618b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 619b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 620b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 621b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 622b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putBoolean(LONG_KEY, false); 623b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 624b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putBoolean(LONG_KEY + "a", false); 625b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 626b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 627b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 628b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 629b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putBoolean("testPutBooleanKey", false); 630b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("false", pref.get("testPutBooleanKey", null)); 631b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertFalse(pref.getBoolean("testPutBooleanKey", true)); 632b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 633b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 634b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testPutDouble() { 635b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 636b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putDouble(null, 3); 637b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 638b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 639b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 640b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 641b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putDouble(LONG_KEY, 3); 642b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 643b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putDouble(LONG_KEY + "a", 3); 644b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 645b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 646b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 647b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 648b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putDouble("testPutDoubleKey", 3); 649b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("3.0", pref.get("testPutDoubleKey", null)); 650b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(3, pref.getDouble("testPutDoubleKey", 0), 0); 651b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 652b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 653b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testPutFloat() { 654b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 655b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putFloat(null, 3f); 656b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 657b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 658b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 659b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 660b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putFloat(LONG_KEY, 3f); 661b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 662b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putFloat(LONG_KEY + "a", 3f); 663b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 664b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 665b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 666b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 667b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putFloat("testPutFloatKey", 3f); 668b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("3.0", pref.get("testPutFloatKey", null)); 669b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(3f, pref.getFloat("testPutFloatKey", 0), 0); 670b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 671b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 672b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testPutInt() { 673b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 674b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putInt(null, 3); 675b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 676b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 677b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 678b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 679b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putInt(LONG_KEY, 3); 680b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 681b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putInt(LONG_KEY + "a", 3); 682b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 683b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 684b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 685b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 686b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putInt("testPutIntKey", 3); 687b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("3", pref.get("testPutIntKey", null)); 688b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(3, pref.getInt("testPutIntKey", 0)); 689b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 690b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 691b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testPutLong() { 692b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 693b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putLong(null, 3L); 694b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 695b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 696b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 697b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 698b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putLong(LONG_KEY, 3L); 699b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 700b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putLong(LONG_KEY + "a", 3L); 701b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 702b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 703b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 704b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 705b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putLong("testPutLongKey", 3L); 706b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("3", pref.get("testPutLongKey", null)); 707b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(3L, pref.getLong("testPutLongKey", 0)); 708b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 709b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 710b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testRemove() throws BackingStoreException { 711b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.remove("key"); 712b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 713b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("key", "value"); 714b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("value", pref.get("key", null)); 715b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.remove("key"); 716b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(pref.get("key", null)); 717b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 718b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.remove("key"); 719b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 720b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 721b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.remove(null); 722b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 723b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 724b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 725b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 726b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.removeNode(); 727b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 728b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.remove("key"); 729b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 730b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 731b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 732b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 733b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 734b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testRemoveNode() throws BackingStoreException { 735b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences child = pref.node("child"); 736b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences child1 = pref.node("child1"); 737b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences grandchild = child.node("grandchild"); 738b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 739b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.removeNode(); 740b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 741b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertFalse(child.nodeExists("")); 742b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertFalse(child1.nodeExists("")); 743b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertFalse(grandchild.nodeExists("")); 744b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertFalse(pref.nodeExists("")); 745b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 746b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 747b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testRemoveNodeChangeListener() { 748b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 749b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.removeNodeChangeListener(null); 750b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 751b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 752b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 753b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 754b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockNodeChangeListener l1 = new MockNodeChangeListener(); 755b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockNodeChangeListener l2 = new MockNodeChangeListener(); 756b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.addNodeChangeListener(l1); 757b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.addNodeChangeListener(l1); 758b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 759b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.removeNodeChangeListener(l1); 760b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.removeNodeChangeListener(l1); 761b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 762b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.removeNodeChangeListener(l1); 763b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 764b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 765b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 766b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 767b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 768b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.removeNodeChangeListener(l2); 769b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 770b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 771b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 772b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 773b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 774b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testRemovePreferenceChangeListener() { 775b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 776b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.removePreferenceChangeListener(null); 777b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 778b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 779b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 780b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockPreferenceChangeListener l1 = new MockPreferenceChangeListener(); 781b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockPreferenceChangeListener l2 = new MockPreferenceChangeListener(); 782b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.addPreferenceChangeListener(l1); 783b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.addPreferenceChangeListener(l1); 784b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 785b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.removePreferenceChangeListener(l2); 786b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 787b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 788b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 789b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.removePreferenceChangeListener(l1); 790b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.removePreferenceChangeListener(l1); 791b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 792b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.removePreferenceChangeListener(l1); 793b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalArgumentException"); 794b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalArgumentException expected) { 795b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 796b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 797b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 798b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testSync() throws BackingStoreException { 799b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.sync(); 800b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath if (!(pref instanceof MockAbstractPreferences)) { 801b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return; 802b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 803b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences p = (MockAbstractPreferences) pref; 804b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.resetSyncTimes(); 805b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.sync(); 806b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, p.getSyncTimes()); 807b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 808b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.resetSyncTimes(); 809b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences child = (MockAbstractPreferences) p 810b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .node("child"); 811b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences child2 = new MockAbstractPreferences(p, 812b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath "child2"); 813b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.childs.put("child2", child2); 814b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, p.cachedChildrenImpl().length); 815b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(child, p.cachedChildrenImpl()[0]); 816b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.sync(); 817b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, p.getSyncTimes()); 818b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, child.getSyncTimes()); 819b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, child2.getSyncTimes()); 820b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 821b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.resetSyncTimes(); 822b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child.resetSyncTimes(); 823b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child.sync(); 824b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, p.getSyncTimes()); 825b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, child.getSyncTimes()); 826b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 827b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.resetSyncTimes(); 828b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child.resetSyncTimes(); 829b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences grandson = (MockAbstractPreferences) child 830b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .node("grandson"); 831b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child.sync(); 832b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, p.getSyncTimes()); 833b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, child.getSyncTimes()); 834b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, grandson.getSyncTimes()); 835b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 836b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 837b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testFlush() throws BackingStoreException { 838b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.flush(); 839b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath if (!(pref instanceof MockAbstractPreferences)) { 840b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return; 841b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 842b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences p = (MockAbstractPreferences) pref; 843b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.resetFlushedTimes(); 844b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.flush(); 845b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, p.getFlushedTimes()); 846b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 847b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.resetFlushedTimes(); 848b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences child = (MockAbstractPreferences) p 849b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .node("child"); 850b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences child2 = new MockAbstractPreferences(p, 851b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath "child2"); 852b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.childs.put("child2", child2); 853b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, p.cachedChildrenImpl().length); 854b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(child, p.cachedChildrenImpl()[0]); 855b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.flush(); 856b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, p.getFlushedTimes()); 857b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, child.getFlushedTimes()); 858b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, child2.getFlushedTimes()); 859b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 860b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.resetFlushedTimes(); 861b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child.resetFlushedTimes(); 862b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child.flush(); 863b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, p.getFlushedTimes()); 864b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, child.getFlushedTimes()); 865b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 866b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.resetFlushedTimes(); 867b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child.resetFlushedTimes(); 868b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences grandson = (MockAbstractPreferences) child 869b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .node("grandson"); 870b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child.flush(); 871b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, p.getFlushedTimes()); 872b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, child.getFlushedTimes()); 873b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, grandson.getFlushedTimes()); 874b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 875b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.resetFlushedTimes(); 876b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child.resetFlushedTimes(); 877b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath grandson.resetFlushedTimes(); 878b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child.removeNode(); 879b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child.flush(); 880b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, p.getFlushedTimes()); 881b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, child.getFlushedTimes()); 882b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, grandson.getFlushedTimes()); 883b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 884b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 885b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testGetChild() throws BackingStoreException { 886b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath if (!(pref instanceof MockAbstractPreferences)) { 887b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return; 888b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 889b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences p = (MockAbstractPreferences) pref; 890b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(p.getChildImpl("child")); 891b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences child = new MockAbstractPreferences(p, "child"); 892b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.childs.put("child", child); 893b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(child, p.getChildImpl("child")); 894b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(p.getChildImpl("child ")); 895b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 896b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(p.getChildImpl("child/grandson")); 897b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child.childs.put("grandson", new MockAbstractPreferences(child, 898b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath "grandson")); 899b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(p.getChildImpl("child/grandson")); 900b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 901b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(p.getChildImpl(null)); 902b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(p.getChildImpl("")); 903b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(p.getChildImpl(" ")); 904b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(p.getChildImpl("abc//abc")); 905b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(p.getChildImpl("child/")); 906b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(p.getChildImpl(LONG_NAME + "a")); 907b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 908b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child.removeNode(); 909b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(p.getChildImpl("child")); 910b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 911b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 912b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testIsRemoved() throws BackingStoreException { 913b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath if (!(pref instanceof MockAbstractPreferences)) { 914b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return; 915b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 916b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences p = (MockAbstractPreferences) pref; 917b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertFalse(p.isRemovedImpl()); 918b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.removeNode(); 919b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertTrue(p.isRemovedImpl()); 920b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 921b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 922b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testExportNode() throws Exception { 923b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 924b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.exportNode(null); 925b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 926b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 927b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 928b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 929b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putBoolean("key", false); 930b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences child = pref.node("child<"); 931b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child.put("key2", "value2<"); 932b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences grandson = child.node("grandson"); 933b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath grandson.put("key3", "value3"); 934b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath ByteArrayOutputStream out = new ByteArrayOutputStream(); 935b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child.exportNode(out); 936b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 937b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath byte[] result = out.toByteArray(); 938b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath ByteArrayInputStream in = new ByteArrayInputStream(result); 939b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 940b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath parseXmlStream(in, false); 941b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 942b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 943b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private static Document parseXmlStream(InputStream input, boolean validating) 944b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath throws SAXException, IOException, ParserConfigurationException { 945b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // Create a builder factory 946b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); 947b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath factory.setValidating(validating); 948b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // Create the builder and parse the file 949b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath DocumentBuilder builder = factory.newDocumentBuilder(); 950b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return builder.parse(input); 951b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 952b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 953b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testExportSubtree() throws Exception { 954b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 955b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.exportSubtree(null); 956b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 957b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 958b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 959b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 960b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath ByteArrayOutputStream out = new ByteArrayOutputStream(); 961b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putBoolean("key", false); 962b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences child = pref.node("child"); 963b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child.put("key2", "value2"); 964b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences grandson = child.node("grandson"); 965b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath grandson.put("key3", "value3"); 966b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child.node("grandson2"); 967b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath Preferences grandgrandson = grandson.node("grandgrandson"); 968b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath grandgrandson.put("key4", "value4"); 969b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child.exportSubtree(out); 970b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 971b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath byte[] result = out.toByteArray(); 972b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath ByteArrayInputStream in = new ByteArrayInputStream(result); 973b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 974b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // We don't have an xpath API so all we can do is test that the 975b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // generated XML parses correctly. 976b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath parseXmlStream(in, false); 977b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 978b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 979b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testCachedChildren() throws Exception { 980b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath if (!(pref instanceof MockAbstractPreferences)) { 981b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return; 982b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 983b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences p = (MockAbstractPreferences) pref; 984b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, p.cachedChildrenImpl().length); 985b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 986b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences child = (MockAbstractPreferences) p 987b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .getChildImpl("child"); 988b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(child); 989b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 990b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath child = new MockAbstractPreferences(p, "child"); 991b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(child, p.getChildImpl("child")); 992b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 993b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, p.cachedChildrenImpl().length); 994b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 995b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.node("child"); 996b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(child, p.cachedChildrenImpl()[0]); 997b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 998b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences grandchild = new MockAbstractPreferences(child, 999b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath "grandchild"); 1000b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(grandchild, child.getChildImpl("grandchild")); 1001b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertNull(p.getChildImpl("grandchild")); 1002b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1003b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, p.cachedChildrenImpl().length); 1004b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(0, child.cachedChildrenImpl().length); 1005b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1006b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.node("child/grandchild"); 1007b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(child, p.cachedChildrenImpl()[0]); 1008b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(grandchild, child.cachedChildrenImpl()[0]); 1009b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, p.cachedChildrenImpl().length); 1010b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, child.cachedChildrenImpl().length); 1011b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1012b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.childs.put("child2", new MockAbstractPreferences(p, "child2")); 1013b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.nodeExists("child2/grandchild"); 1014b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(child, p.cachedChildrenImpl()[0]); 1015b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertSame(grandchild, child.cachedChildrenImpl()[0]); 1016b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, p.cachedChildrenImpl().length); 1017b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals(1, child.cachedChildrenImpl().length); 1018b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1019b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1020b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testAbstractMethod() { 1021b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath if (!(pref instanceof MockAbstractPreferences)) { 1022b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return; 1023b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1024b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath ((MockAbstractPreferences) pref).protectedAbstractMethod(); 1025b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1026b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1027b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testBackingStoreException() throws IOException, 1028b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath BackingStoreException { 1029b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath if (!(pref instanceof MockAbstractPreferences)) { 1030b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return; 1031b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1032b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences p = (MockAbstractPreferences) pref; 1033b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.setResult(MockAbstractPreferences.backingException); 1034b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1035b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.childrenNames(); 1036b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw BackingStoreException"); 1037b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (BackingStoreException e) { 1038b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1039b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.put("exceptionkey", "value"); 1040b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.absolutePath(); 1041b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.toString(); 1042b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("exception default", p.get("key", "exception default")); 1043b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.remove("key"); 1044b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1045b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.clear(); 1046b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw BackingStoreException"); 1047b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (BackingStoreException expected) { 1048b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1049b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1050b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putInt("key", 3); 1051b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getInt("key", 3); 1052b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putLong("key", 3l); 1053b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getLong("key", 3l); 1054b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putDouble("key", 3); 1055b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getDouble("key", 3); 1056b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putBoolean("key", true); 1057b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getBoolean("key", true); 1058b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putFloat("key", 3f); 1059b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getFloat("key", 3f); 1060b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putByteArray("key", new byte[0]); 1061b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getByteArray("key", new byte[0]); 1062b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1063b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.keys(); 1064b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw BackingStoreException"); 1065b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (BackingStoreException expected) { 1066b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1067b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1068b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1069b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.keys(); 1070b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw BackingStoreException"); 1071b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (BackingStoreException expected) { 1072b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1073b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1074b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.childrenNames(); 1075b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw BackingStoreException"); 1076b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (BackingStoreException expected) { 1077b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1078b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.parent(); 1079b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.node(""); 1080b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.nodeExists(""); 1081b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1082b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.removeNode(); 1083b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw BackingStoreException"); 1084b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (BackingStoreException expected) { 1085b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1086b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.name(); 1087b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.absolutePath(); 1088b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.isUserNode(); 1089b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockPreferenceChangeListener mockPreferenceChangeListener = new MockPreferenceChangeListener(); 1090b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.addPreferenceChangeListener(mockPreferenceChangeListener); 1091b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.removePreferenceChangeListener(mockPreferenceChangeListener); 1092b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockNodeChangeListener mockNodeChangeListener = new MockNodeChangeListener(); 1093b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.addNodeChangeListener(mockNodeChangeListener); 1094b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.removeNodeChangeListener(mockNodeChangeListener); 1095b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.toString(); 1096b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1097b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.sync(); 1098b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw BackingStoreException"); 1099b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (BackingStoreException expected) { 1100b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1101b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1102b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.flush(); 1103b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw BackingStoreException"); 1104b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (BackingStoreException expected) { 1105b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1106b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1107b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.exportNode(new ByteArrayOutputStream()); 1108b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw BackingStoreException"); 1109b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (BackingStoreException expected) { 1110b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1111b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1112b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.exportSubtree(new ByteArrayOutputStream()); 1113b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw BackingStoreException"); 1114b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (BackingStoreException expected) { 1115b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1116b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.isRemovedImpl(); 1117b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1118b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getChildImpl(null); 1119b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw BackingStoreException"); 1120b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (BackingStoreException expected) { 1121b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1122b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.cachedChildrenImpl(); 1123b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1124b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1125b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testRuntimeException() throws IOException, 1126b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath BackingStoreException { 1127b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath if (!(pref instanceof MockAbstractPreferences)) { 1128b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return; 1129b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1130b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences p = (MockAbstractPreferences) pref; 1131b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.setResult(MockAbstractPreferences.runtimeException); 1132b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1133b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.childrenNames(); 1134b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MockRuntimeException"); 1135b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MockRuntimeException expected) { 1136b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1137b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1138b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.put("exceptionkey", "value"); 1139b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MockRuntimeException"); 1140b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MockRuntimeException expected) { 1141b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1142b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.absolutePath(); 1143b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.toString(); 1144b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("exception default", p.get("key", "exception default")); 1145b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1146b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.remove("key"); 1147b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MockRuntimeException"); 1148b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MockRuntimeException expected) { 1149b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1150b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1151b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.clear(); 1152b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MockRuntimeException"); 1153b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MockRuntimeException expected) { 1154b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1155b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1156b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putInt("key", 3); 1157b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MockRuntimeException"); 1158b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MockRuntimeException expected) { 1159b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1160b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getInt("key", 3); 1161b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1162b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putLong("key", 3l); 1163b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MockRuntimeException"); 1164b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MockRuntimeException expected) { 1165b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1166b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getLong("key", 3l); 1167b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1168b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putDouble("key", 3); 1169b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MockRuntimeException"); 1170b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MockRuntimeException expected) { 1171b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1172b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getDouble("key", 3); 1173b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1174b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putBoolean("key", true); 1175b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MockRuntimeException"); 1176b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MockRuntimeException expected) { 1177b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1178b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getBoolean("key", true); 1179b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1180b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putFloat("key", 3f); 1181b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MockRuntimeException"); 1182b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MockRuntimeException expected) { 1183b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1184b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getFloat("key", 3f); 1185b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1186b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putByteArray("key", new byte[0]); 1187b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MockRuntimeException"); 1188b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MockRuntimeException expected) { 1189b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1190b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getByteArray("key", new byte[0]); 1191b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1192b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.keys(); 1193b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MockRuntimeException"); 1194b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MockRuntimeException expected) { 1195b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1196b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1197b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.keys(); 1198b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MockRuntimeException"); 1199b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MockRuntimeException expected) { 1200b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1201b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1202b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.childrenNames(); 1203b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MockRuntimeException"); 1204b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MockRuntimeException expected) { 1205b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1206b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.parent(); 1207b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.node(""); 1208b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.nodeExists(""); 1209b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1210b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.removeNode(); 1211b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MockRuntimeException"); 1212b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MockRuntimeException expected) { 1213b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1214b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.name(); 1215b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.absolutePath(); 1216b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.isUserNode(); 1217b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockPreferenceChangeListener pcl = new MockPreferenceChangeListener(); 1218b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.addPreferenceChangeListener(pcl); 1219b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.removePreferenceChangeListener(pcl); 1220b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockNodeChangeListener ncl = new MockNodeChangeListener(); 1221b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.addNodeChangeListener(ncl); 1222b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.removeNodeChangeListener(ncl); 1223b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.toString(); 1224b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1225b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.sync(); 1226b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MockRuntimeException"); 1227b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MockRuntimeException expected) { 1228b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1229b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1230b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.flush(); 1231b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MockRuntimeException"); 1232b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MockRuntimeException expected) { 1233b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1234b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1235b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.exportNode(new ByteArrayOutputStream()); 1236b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MockRuntimeException"); 1237b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MockRuntimeException expected) { 1238b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1239b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1240b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.exportSubtree(new ByteArrayOutputStream()); 1241b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MockRuntimeException"); 1242b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MockRuntimeException expected) { 1243b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1244b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.isRemovedImpl(); 1245b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1246b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getChildImpl(null); 1247b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw MockRuntimeException"); 1248b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (MockRuntimeException expected) { 1249b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1250b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.cachedChildrenImpl(); 1251b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1252b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1253b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testSPIReturnNull() throws IOException, BackingStoreException { 1254b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath if (!(pref instanceof MockAbstractPreferences)) { 1255b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return; 1256b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1257b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences p = (MockAbstractPreferences) pref; 1258b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.setResult(MockAbstractPreferences.returnNull); 1259b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1260b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.childrenNames(); 1261b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1262b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1263b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1264b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.absolutePath(); 1265b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.toString(); 1266b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.put("nullkey", "value"); 1267b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertEquals("null default", p.get("key", "null default")); 1268b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.remove("key"); 1269b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1270b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.clear(); 1271b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1272b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1273b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1274b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putInt("key", 3); 1275b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getInt("key", 3); 1276b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putLong("key", 3l); 1277b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getLong("key", 3l); 1278b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putDouble("key", 3); 1279b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getDouble("key", 3); 1280b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putBoolean("key", true); 1281b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getBoolean("key", true); 1282b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putFloat("key", 3f); 1283b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getFloat("key", 3f); 1284b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putByteArray("key", new byte[0]); 1285b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getByteArray("key", new byte[0]); 1286b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.keys(); 1287b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1288b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.childrenNames(); 1289b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1290b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1291b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1292b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.parent(); 1293b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.node(""); 1294b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.nodeExists(""); 1295b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1296b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.removeNode(); 1297b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1298b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1299b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1300b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.name(); 1301b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.absolutePath(); 1302b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.isUserNode(); 1303b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockPreferenceChangeListener mockPreferenceChangeListener = new MockPreferenceChangeListener(); 1304b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.addPreferenceChangeListener(mockPreferenceChangeListener); 1305b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.removePreferenceChangeListener(mockPreferenceChangeListener); 1306b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockNodeChangeListener mockNodeChangeListener = new MockNodeChangeListener(); 1307b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.addNodeChangeListener(mockNodeChangeListener); 1308b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.removeNodeChangeListener(mockNodeChangeListener); 1309b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.toString(); 1310b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.sync(); 1311b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.flush(); 1312b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1313b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.exportNode(System.out); 1314b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1315b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1316b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1317b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1318b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.exportSubtree(System.out); 1319b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1320b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1321b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1322b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.isRemovedImpl(); 1323b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1324b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getChildImpl(""); 1325b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1326b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1327b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1328b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.cachedChildrenImpl(); 1329b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1330b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1331b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testIllegalStateException() throws IOException, 1332b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath BackingStoreException { 1333b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath if (!(pref instanceof MockAbstractPreferences)) { 1334b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return; 1335b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1336b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.removeNode(); 1337b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // after remove node, every methods, except name(), absolutePath(), 1338b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // isUserNode(), flush() or nodeExists(""), 1339b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // will throw illegal state exception 1340b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.nodeExists(""); 1341b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.name(); 1342b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.absolutePath(); 1343b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.isUserNode(); 1344b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.toString(); 1345b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.flush(); 1346b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1347b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.nodeExists("child"); 1348b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1349b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1350b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1351b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1352b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.childrenNames(); 1353b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1354b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1355b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1356b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1357b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.remove(null); 1358b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1359b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1360b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1361b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1362b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.clear(); 1363b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1364b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1365b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1366b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1367b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.get("key", "null default"); 1368b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1369b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1370b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1371b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1372b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.put("nullkey", "value"); 1373b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1374b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1375b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1376b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1377b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putInt("key", 3); 1378b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1379b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1380b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1381b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1382b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.getInt("key", 3); 1383b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1384b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1385b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1386b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1387b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putLong("key", 3l); 1388b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1389b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1390b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1391b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1392b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.getLong("key", 3l); 1393b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1394b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1395b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1396b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1397b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putDouble("key", 3); 1398b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1399b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1400b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1401b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1402b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.getDouble("key", 3); 1403b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1404b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1405b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1406b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1407b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putBoolean("key", true); 1408b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1409b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1410b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1411b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1412b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.getBoolean("key", true); 1413b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1414b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1415b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1416b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1417b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putFloat("key", 3f); 1418b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1419b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1420b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1421b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1422b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.getFloat("key", 3f); 1423b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1424b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1425b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1426b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1427b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.putByteArray("key", new byte[0]); 1428b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1429b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1430b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1431b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1432b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.getByteArray("key", new byte[0]); 1433b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1434b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1435b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1436b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1437b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.keys(); 1438b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1439b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1440b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1441b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1442b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.keys(); 1443b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1444b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1445b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1446b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1447b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.childrenNames(); 1448b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1449b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1450b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1451b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1452b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.parent(); 1453b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1454b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1455b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1456b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1457b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.node(null); 1458b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1459b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1460b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1461b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1462b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.removeNode(); 1463b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1464b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1465b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1466b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1467b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref 1468b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .addPreferenceChangeListener(new MockPreferenceChangeListener()); 1469b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1470b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1471b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1472b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1473b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref 1474b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath .removePreferenceChangeListener(new MockPreferenceChangeListener()); 1475b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1476b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1477b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1478b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1479b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.addNodeChangeListener(new MockNodeChangeListener()); 1480b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1481b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1482b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1483b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1484b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.removeNodeChangeListener(new MockNodeChangeListener()); 1485b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1486b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1487b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1488b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1489b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.sync(); 1490b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1491b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1492b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1493b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1494b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.exportNode(null); 1495b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1496b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1497b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1498b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1499b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath pref.exportSubtree(null); 1500b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1501b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1502b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1503b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath if (!(pref instanceof MockAbstractPreferences)) { 1504b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return; 1505b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1506b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences p = (MockAbstractPreferences) pref; 1507b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.isRemovedImpl(); 1508b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.cachedChildrenImpl(); 1509b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1510b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getChildImpl(null); 1511b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1512b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1513b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1514b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1515b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1516b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testNullAndIllegalStateException() throws Exception { 1517b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath if (!(pref instanceof MockAbstractPreferences)) { 1518b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return; 1519b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1520b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath MockAbstractPreferences p = (MockAbstractPreferences) pref; 1521b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.removeNode(); 1522b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1523b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.get(null, "null default"); 1524b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1525b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1526b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1527b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1528b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.put(null, "value"); 1529b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1530b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1531b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1532b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1533b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putInt(null, 3); 1534b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1535b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1536b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1537b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1538b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getInt(null, 3); 1539b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1540b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1541b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1542b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1543b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putLong(null, 3l); 1544b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1545b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1546b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1547b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1548b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getLong(null, 3l); 1549b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1550b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1551b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1552b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1553b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putDouble(null, 3); 1554b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1555b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1556b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1557b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1558b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getDouble(null, 3); 1559b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1560b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1561b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1562b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1563b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putBoolean(null, true); 1564b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1565b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1566b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1567b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1568b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getBoolean(null, true); 1569b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1570b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1571b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1572b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1573b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putFloat(null, 3f); 1574b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1575b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1576b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1577b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1578b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getFloat(null, 3f); 1579b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1580b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1581b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1582b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1583b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.putByteArray(null, new byte[0]); 1584b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1585b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1586b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1587b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1588b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.getByteArray(null, new byte[0]); 1589b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1590b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1591b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1592b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1593b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.addPreferenceChangeListener(null); 1594b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1595b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1596b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1597b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1598b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.removePreferenceChangeListener(null); 1599b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1600b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1601b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1602b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1603b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.addNodeChangeListener(null); 1604b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw NullPointerException"); 1605b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (NullPointerException expected) { 1606b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1607b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1608b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath p.removeNodeChangeListener(null); 1609b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath fail("should throw IllegalStateException"); 1610b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (IllegalStateException expected) { 1611b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1612b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1613b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1614b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath /** 1615b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath * Regression for HARMONY-828 1616b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath */ 1617b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void testLongPath() throws Exception { 1618b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath assertFalse(pref.nodeExists("ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd")); 1619b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1620b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1621b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public static class MockPreferenceChangeListener implements 1622b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath PreferenceChangeListener { 1623b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private int changed = 0; 1624b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1625b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void preferenceChange(PreferenceChangeEvent pce) { 1626b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath changed++; 1627b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1628b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1629b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public int getChanged() { 1630b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath int result = changed; 1631b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath changed = 0; 1632b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return result; 1633b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1634b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1635b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1636b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public static class MockNodeChangeListener implements NodeChangeListener { 1637b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private boolean addDispatched = false; 1638b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1639b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private boolean removeDispatched = false; 1640b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1641b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private Object addLock = new Object(); 1642b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1643b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private Object removeLock = new Object(); 1644b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1645b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private int added = 0; 1646b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1647b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath private int removed = 0; 1648b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1649b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void childAdded(NodeChangeEvent e) { 1650b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath synchronized (addLock) { 1651b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath ++added; 1652b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath addDispatched = true; 1653b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath addLock.notifyAll(); 1654b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1655b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1656b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1657b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void childRemoved(NodeChangeEvent e) { 1658b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath synchronized (removeLock) { 1659b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath removed++; 1660b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath removeDispatched = true; 1661b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath removeLock.notifyAll(); 1662b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1663b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1664b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1665b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public int getAdded() { 1666b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath synchronized (addLock) { 1667b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath if (!addDispatched) { 1668b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1669b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath // TODO: don't know why must add limitation 1670b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath addLock.wait(100); 1671b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (InterruptedException e) { 1672b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1673b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1674b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath addDispatched = false; 1675b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1676b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return added; 1677b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1678b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1679b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public int getRemoved() { 1680b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath synchronized (removeLock) { 1681b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath if (!removeDispatched) { 1682b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath try { 1683b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath removeLock.wait(100); 1684b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } catch (InterruptedException e) { 1685b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1686b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1687b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath removeDispatched = false; 1688b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1689b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath return removed; 1690b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1691b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1692b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1693b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath public void reset() { 1694b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath added = 0; 1695b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath removed = 0; 1696b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1697b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath } 1698b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath 1699b0b81dfb681cf401b3fc108b9abe432ee6736164Narayan Kamath} 1700