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