OldPreferencesTest.java revision a744a0370d151794f5a20a23fa549cc2f34df7d6
180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson/* Licensed to the Apache Software Foundation (ASF) under one or more 280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * contributor license agreements. See the NOTICE file distributed with 380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * this work for additional information regarding copyright ownership. 480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * The ASF licenses this file to You under the Apache License, Version 2.0 580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * (the "License"); you may not use this file except in compliance with 680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * the License. You may obtain a copy of the License at 780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * 880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * http://www.apache.org/licenses/LICENSE-2.0 980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * 1080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * Unless required by applicable law or agreed to in writing, software 1180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * distributed under the License is distributed on an "AS IS" BASIS, 1280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * See the License for the specific language governing permissions and 1480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson * limitations under the License. 1580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson */ 1680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 1780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonpackage libcore.java.util.prefs; 1880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 1980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.io.IOException; 2080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.io.OutputStream; 2180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.Arrays; 2280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.prefs.BackingStoreException; 2380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.prefs.NodeChangeEvent; 2480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.prefs.NodeChangeListener; 2580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.prefs.PreferenceChangeEvent; 2680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.prefs.PreferenceChangeListener; 2780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.prefs.Preferences; 2880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport junit.framework.TestCase; 2980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 3080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonpublic final class OldPreferencesTest extends TestCase { 3180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 3280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson final static String longKey; 3380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson final static String longValue; 3480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 3580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson static { 36a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson StringBuilder key = new StringBuilder(Preferences.MAX_KEY_LENGTH); 3780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson for (int i = 0; i < Preferences.MAX_KEY_LENGTH; i++) { 3880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson key.append('a'); 3980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 4080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson longKey = key.toString(); 4180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 42a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson StringBuilder value = new StringBuilder(Preferences.MAX_VALUE_LENGTH); 4380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson for (int i = 0; i < Preferences.MAX_VALUE_LENGTH; i++) { 4480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson value.append('a'); 4580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 4680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson longValue = value.toString(); 4780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 4880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 49a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson @Override protected void setUp() throws Exception { 50a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson super.setUp(); 51a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson 52a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 53a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson for (String child : pref.childrenNames()) { 54a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson pref.node(child).removeNode(); 55a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } 56a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson pref.clear(); 57a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } 58a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson 59a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson public void testAbstractMethods() throws IOException, BackingStoreException { 6080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences p = new MockPreferences(); 6180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.absolutePath(); 62a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson p.childrenNames(); 63a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson p.clear(); 64a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson p.exportNode(null); 65a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson p.exportSubtree(null); 66a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson p.flush(); 6780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.get(null, null); 6880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.getBoolean(null, false); 6980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.getByteArray(null, null); 7080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.getFloat(null, 0.1f); 7180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.getDouble(null, 0.1); 7280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.getInt(null, 1); 7380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.getLong(null, 1l); 7480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.isUserNode(); 75a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson p.keys(); 7680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.name(); 7780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.node(null); 78a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson p.nodeExists(null); 7980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.parent(); 8080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.put(null, null); 8180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.putBoolean(null, false); 8280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.putByteArray(null, null); 8380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.putDouble(null, 1); 8480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.putFloat(null, 1f); 8580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.putInt(null, 1); 8680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.putLong(null, 1l); 8780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.remove(null); 88a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson p.removeNode(); 8980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.addNodeChangeListener(null); 9080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.addPreferenceChangeListener(null); 9180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.removeNodeChangeListener(null); 9280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.removePreferenceChangeListener(null); 93a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson p.sync(); 9480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson p.toString(); 9580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 9680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 9780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testConstructor() { 9880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson MockPreferences mp = new MockPreferences(); 9980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(mp.getClass(), MockPreferences.class); 10080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 10180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 10280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testToString() { 10380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences p1 = Preferences.userNodeForPackage(Preferences.class); 10480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNotNull(p1.toString()); 10580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 10680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences p2 = Preferences.systemRoot(); 10780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNotNull(p2.toString()); 10880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 10980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences p3 = Preferences.userRoot(); 11080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNotNull(p3.toString()); 11180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 11280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 11380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testAbsolutePath() { 11480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences p = Preferences.userNodeForPackage(Preferences.class); 11580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("/java/util/prefs", p.absolutePath()); 11680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 11780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 11880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 11980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testChildrenNames() throws BackingStoreException { 12080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 12180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 12280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences child1 = pref.node("child1"); 12380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 12480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.node("child2"); 12580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.node("child3"); 12680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1.node("subchild1"); 12780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 12880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertSame(pref, child1.parent()); 12980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(3, pref.childrenNames().length); 13080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("child1", pref.childrenNames()[0]); 13180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1, child1.childrenNames().length); 13280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("subchild1", child1.childrenNames()[0]); 13380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 13480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 13580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testClear() throws BackingStoreException { 13680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 13780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testClearKey", "testClearValue"); 13880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testClearKey1", "testClearValue1"); 13980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("testClearValue", pref.get("testClearKey", null)); 14080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("testClearValue1", pref.get("testClearKey1", null)); 14180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.clear(); 14280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNull(pref.get("testClearKey", null)); 14380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNull(pref.get("testClearKey1", null)); 14480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 14580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 14680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testGet() throws BackingStoreException { 14780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences root = Preferences.userNodeForPackage(Preferences.class); 14880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = root.node("mock"); 14980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNull(pref.get("", null)); 15080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("default", pref.get("key", "default")); 15180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNull(pref.get("key", null)); 15280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetkey", "value"); 15380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNull(pref.get("testGetKey", null)); 15480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("value", pref.get("testGetkey", null)); 15580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 15680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 15780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.get(null, "abc"); 15880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 159a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 16080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 16180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.get("", "abc"); 16280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.get("key", null); 16380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.get("key", ""); 16480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putFloat("floatKey", 1.0f); 16580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("1.0", pref.get("floatKey", null)); 16680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 16780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNode(); 16880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 16980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.get("key", "abc"); 17080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 171a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalStateException expected) { 17280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 17380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 17480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.get(null, "abc"); 17580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 176a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 17780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 17880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 17980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 18080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testGetBoolean() { 18180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 18280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 18380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.getBoolean(null, false); 18480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 185a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 18680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 18780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 18880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetBooleanKey", "false"); 18980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetBooleanKey2", "value"); 19080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(pref.getBoolean("testGetBooleanKey", true)); 19180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(pref.getBoolean("testGetBooleanKey2", true)); 19280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 19380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 19480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testGetByteArray() { 19580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 19680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 19780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.getByteArray(null, new byte[0]); 19880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 199a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 20080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 20180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson byte[] b64Array = new byte[] { 0x59, 0x57, 0x4a, 0x6a };// BASE64 20280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 20380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetByteArrayKey", "abc="); 20480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetByteArrayKey2", new String(b64Array)); 20580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("invalidKey", "<>?"); 20680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(Arrays.equals(new byte[] { 105, -73 }, pref.getByteArray( 20780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson "testGetByteArrayKey", new byte[0]))); 20880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(Arrays.equals(new byte[] { 'a', 'b', 'c' }, pref 20980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson .getByteArray("testGetByteArrayKey2", new byte[0]))); 21080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(Arrays.equals(new byte[0], pref.getByteArray("invalidKey", 21180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson new byte[0]))); 21280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 21380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray("testGetByteArrayKey3", b64Array); 21480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray("testGetByteArrayKey4", "abc".getBytes()); 21580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(Arrays.equals(b64Array, pref.getByteArray( 21680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson "testGetByteArrayKey3", new byte[0]))); 21780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(Arrays.equals("abc".getBytes(), pref.getByteArray( 21880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson "testGetByteArrayKey4", new byte[0]))); 21980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 22080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 22180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testGetDouble() { 22280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 22380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 22480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.getDouble(null, 0); 22580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 226a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 22780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 22880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 22980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetDoubleKey", "1"); 23080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetDoubleKey2", "value"); 23180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putDouble("testGetDoubleKey3", 1); 23280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putInt("testGetDoubleKey4", 1); 23380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1.0, pref.getDouble("testGetDoubleKey", 0.0), 0); 23480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(0.0, pref.getDouble("testGetDoubleKey2", 0.0), 0); 23580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1.0, pref.getDouble("testGetDoubleKey3", 0.0), 0); 23680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1.0, pref.getDouble("testGetDoubleKey4", 0.0), 0); 23780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 23880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 23980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testGetFloat() { 24080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 24180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 24280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.getFloat(null, 0f); 24380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 244a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 24580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 24680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetFloatKey", "1"); 24780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetFloatKey2", "value"); 24880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1f, pref.getFloat("testGetFloatKey", 0f), 0); 24980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(0f, pref.getFloat("testGetFloatKey2", 0f), 0); 25080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 25180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 25280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testGetInt() { 25380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 25480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 25580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.getInt(null, 0); 25680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 257a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 25880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 25980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 26080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetIntKey", "1"); 26180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetIntKey2", "value"); 26280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1, pref.getInt("testGetIntKey", 0)); 26380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(0, pref.getInt("testGetIntKey2", 0)); 26480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 26580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 26680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testGetLong() { 26780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 26880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 26980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.getLong(null, 0); 27080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 271a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 27280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 27380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 27480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetLongKey", "1"); 27580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testGetLongKey2", "value"); 27680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1, pref.getInt("testGetLongKey", 0)); 27780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(0, pref.getInt("testGetLongKey2", 0)); 27880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 27980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 28080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testIsUserNode() { 28180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref1 = Preferences.userNodeForPackage(Preferences.class); 28280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(pref1.isUserNode()); 28380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 28480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref2 = Preferences.systemNodeForPackage(Preferences.class); 28580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(pref2.isUserNode()); 28680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 28780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 28880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testKeys() throws BackingStoreException { 28980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 29080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.clear(); 29180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 29280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("key0", "value"); 29380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("key1", "value1"); 29480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("key2", "value2"); 29580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("key3", "value3"); 29680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 29780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson String[] keys = pref.keys(); 29880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(4, keys.length); 299a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson for (String key : keys) { 300a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson assertEquals(0, key.indexOf("key")); 301a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson assertEquals(4, key.length()); 30280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 30380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 30480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 30580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testName() { 30680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 30780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences child = pref.node("mock"); 30880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("mock", child.name()); 30980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 31080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 31180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testNode() throws BackingStoreException { 312a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson StringBuilder name = new StringBuilder(Preferences.MAX_NAME_LENGTH); 31380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson for (int i = 0; i < Preferences.MAX_NAME_LENGTH; i++) { 31480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson name.append('a'); 31580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 31680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson String longName = name.toString(); 31780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 31880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences root = Preferences.userRoot(); 31980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences parent = Preferences 32080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson .userNodeForPackage(Preferences.class); 32180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = parent.node("mock"); 32280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 32380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 32480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.node(null); 32580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 326a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 32780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 32880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 32980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.node("/java/util/prefs/"); 33080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 331a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 33280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 33380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 33480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.node("/java//util/prefs"); 33580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 336a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 33780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 33880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 33980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.node(longName + "a"); 34080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 341a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 34280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 34380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNotNull(pref.node(longName)); 34480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 34580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertSame(root, pref.node("/")); 34680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 34780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences prefs = pref.node("/java/util/prefs"); 34880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertSame(prefs, parent); 34980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 35080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertSame(pref, pref.node("")); 35180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 35280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 35380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testNodeExists() throws BackingStoreException { 35480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 35580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences parent = Preferences 35680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson .userNodeForPackage(Preferences.class); 35780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = parent.node("mock"); 35880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 35980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 36080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.nodeExists(null); 36180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 362a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 36380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 36480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 36580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.nodeExists("/java/util/prefs/"); 36680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 367a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 36880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 36980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 37080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.nodeExists("/java//util/prefs"); 37180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 372a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 37380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 37480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 37580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(pref.nodeExists("/")); 37680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 37780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(pref.nodeExists("/java/util/prefs")); 37880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 37980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(pref.nodeExists("")); 38080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 38180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(pref.nodeExists("child")); 38280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences grandchild = pref.node("child/grandchild"); 38380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(pref.nodeExists("child")); 38480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(pref.nodeExists("child/grandchild")); 38580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson grandchild.removeNode(); 38680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(pref.nodeExists("child")); 38780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(pref.nodeExists("child/grandchild")); 38880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(grandchild.nodeExists("")); 38980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 39080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(pref.nodeExists("child2/grandchild")); 39180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.node("child2/grandchild"); 39280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(pref.nodeExists("child2/grandchild")); 39380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 39480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 39580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testParent() { 39680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences parent = Preferences 39780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson .userNodeForPackage(Preferences.class); 39880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = parent.node("mock"); 39980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 40080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertSame(parent, pref.parent()); 40180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 40280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 40380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testPut() throws BackingStoreException { 40480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences 40580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson .userNodeForPackage(Preferences.class); 40680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("", "emptyvalue"); 40780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("emptyvalue", pref.get("", null)); 40880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testPutkey", "value1"); 40980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("value1", pref.get("testPutkey", null)); 41080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("testPutkey", "value2"); 41180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("value2", pref.get("testPutkey", null)); 41280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 41380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("", "emptyvalue"); 41480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("emptyvalue", pref.get("", null)); 41580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 41680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 41780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put(null, "value"); 41880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 419a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 42080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 42180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 42280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("key", null); 42380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 424a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 42580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 42680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put(longKey, longValue); 42780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 42880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put(longKey + 1, longValue); 42980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 430a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 43180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 43280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 43380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put(longKey, longValue + 1); 43480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 435a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 43680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 43780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 43880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNode(); 43980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 44080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put(longKey, longValue + 1); 44180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 442a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 44380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 44480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 44580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 44680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put(longKey, longValue); 44780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 448a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalStateException expected) { 44980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 45080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 45180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 45280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testPutBoolean() { 453a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 45480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 45580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putBoolean(null, false); 45680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 457a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 45880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 45980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putBoolean(longKey, false); 46080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 46180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putBoolean(longKey + "a", false); 46280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 463a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 46480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 46580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putBoolean("testPutBooleanKey", false); 46680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("false", pref.get("testPutBooleanKey", null)); 46780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(pref.getBoolean("testPutBooleanKey", true)); 46880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 46980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 47080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testPutDouble() { 47180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences 47280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson .userNodeForPackage(Preferences.class); 47380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 47480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putDouble(null, 3); 47580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 476a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 47780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 47880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putDouble(longKey, 3); 47980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 48080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putDouble(longKey + "a", 3); 48180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 482a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 48380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 48480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putDouble("testPutDoubleKey", 3); 48580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("3.0", pref.get("testPutDoubleKey", null)); 48680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(3, pref.getDouble("testPutDoubleKey", 0), 0); 48780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 48880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 48980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testPutFloat() { 490a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 49180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 49280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putFloat(null, 3f); 49380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 494a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 49580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 49680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putFloat(longKey, 3f); 49780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 49880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putFloat(longKey + "a", 3f); 49980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 500a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 50180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 50280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putFloat("testPutFloatKey", 3f); 50380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("3.0", pref.get("testPutFloatKey", null)); 50480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(3f, pref.getFloat("testPutFloatKey", 0), 0); 50580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 50680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 50780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testPutInt() { 508a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 50980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 51080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putInt(null, 3); 51180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 512a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 51380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 51480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putInt(longKey, 3); 51580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 51680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putInt(longKey + "a", 3); 51780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 518a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 51980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 52080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putInt("testPutIntKey", 3); 52180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("3", pref.get("testPutIntKey", null)); 52280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(3, pref.getInt("testPutIntKey", 0)); 52380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 52480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 52580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testPutLong() { 526a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 52780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 52880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putLong(null, 3L); 52980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 530a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 53180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 53280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putLong(longKey, 3L); 53380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 53480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putLong(longKey + "a", 3L); 53580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 536a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 53780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 53880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putLong("testPutLongKey", 3L); 53980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("3", pref.get("testPutLongKey", null)); 54080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(3L, pref.getLong("testPutLongKey", 0)); 54180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 54280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 54380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testPutByteArray() { 544a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 54580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 54680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray(null, new byte[0]); 54780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 548a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 54980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 55080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 55180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray("testPutByteArrayKey4", null); 55280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 553a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 55480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 55580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 55680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray(longKey, new byte[0]); 55780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 55880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray(longKey + "a", new byte[0]); 55980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 560a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 56180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 56280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson byte[] longArray = new byte[(int) (Preferences.MAX_VALUE_LENGTH * 0.74)]; 56380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson byte[] longerArray = new byte[(int) (Preferences.MAX_VALUE_LENGTH * 0.75) + 1]; 56480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray(longKey, longArray); 56580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 56680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray(longKey, longerArray); 56780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 568a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 56980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 57080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 57180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray("testPutByteArrayKey", new byte[0]); 57280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("", pref.get("testPutByteArrayKey", null)); 57380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(Arrays.equals(new byte[0], pref.getByteArray( 57480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson "testPutByteArrayKey", null))); 57580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 57680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray("testPutByteArrayKey3", new byte[] { 'a', 'b', 'c' }); 57780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("YWJj", pref.get("testPutByteArrayKey3", null)); 57880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertTrue(Arrays.equals(new byte[] { 'a', 'b', 'c' }, pref 57980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson .getByteArray("testPutByteArrayKey3", null))); 58080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 58180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 58280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testRemove() throws BackingStoreException { 58380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences 58480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson .userNodeForPackage(Preferences.class); 58580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.remove("key"); 58680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 58780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.put("key", "value"); 58880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals("value", pref.get("key", null)); 58980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.remove("key"); 59080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertNull(pref.get("key", null)); 59180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 59280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.remove("key"); 59380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 59480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 59580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.remove(null); 59680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 597a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 59880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 59980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 60080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNode(); 60180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 60280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.remove("key"); 60380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 604a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalStateException expected) { 60580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 60680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 60780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 60880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testRemoveNode() throws BackingStoreException { 60980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences 61080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson .userNodeForPackage(Preferences.class); 61180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences child = pref.node("child"); 61280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences child1 = pref.node("child1"); 61380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences grandchild = child.node("grandchild"); 61480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 61580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNode(); 61680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 61780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(child.nodeExists("")); 61880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(child1.nodeExists("")); 61980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(grandchild.nodeExists("")); 62080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertFalse(pref.nodeExists("")); 62180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 62280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 62380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testAddNodeChangeListener() throws BackingStoreException { 62480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 62580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 62680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addNodeChangeListener(null); 62780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 628a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 62980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 63080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 63180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences child1 = null; 63280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 63380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson MockNodeChangeListener nl = null; 63480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // To get existed node doesn't create the change event 63580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 63680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl = new MockNodeChangeListener(); 63780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addNodeChangeListener(nl); 63880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1 = pref.node("mock1"); 63980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.waitForEvent(); 64080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1, nl.getAdded()); 64180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 642a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson pref.node("mock1"); 64380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.waitForEvent(); 64480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(0, nl.getAdded()); 64580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 64680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } finally { 64780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(nl); 64880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1.removeNode(); 64980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 65080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // same listener can be added twice, and must be removed twice 65180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 65280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl = new MockNodeChangeListener(); 65380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addNodeChangeListener(nl); 65480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addNodeChangeListener(nl); 65580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1 = pref.node("mock2"); 65680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.waitForEvent(); 65780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(2, nl.getAdded()); 65880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 65980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } finally { 66080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(nl); 66180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(nl); 66280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1.removeNode(); 66380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 66480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // test remove event 66580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 66680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl = new MockNodeChangeListener(); 66780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addNodeChangeListener(nl); 66880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1 = pref.node("mock3"); 66980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1.removeNode(); 67080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.waitForEvent(); 67180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1, nl.getRemoved()); 67280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 67380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } finally { 67480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(nl); 67580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 67680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // test remove event with two listeners 67780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 67880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl = new MockNodeChangeListener(); 67980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addNodeChangeListener(nl); 68080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addNodeChangeListener(nl); 68180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1 = pref.node("mock6"); 68280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1.removeNode(); 68380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.waitForEvent(); 68480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(2, nl.getRemoved()); 68580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 68680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } finally { 68780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(nl); 68880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(nl); 68980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 69080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // test add/remove indirect children, or remove several children at the 69180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // same time 692a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson Preferences child3; 69380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 69480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl = new MockNodeChangeListener(); 69580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1 = pref.node("mock4"); 69680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1.addNodeChangeListener(nl); 697a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson pref.node("mock4/mock5"); 69880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.waitForEvent(); 69980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1, nl.getAdded()); 70080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 70180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child3 = pref.node("mock4/mock5/mock6"); 70280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.waitForEvent(); 70380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(0, nl.getAdded()); 70480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 70580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 70680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child3.removeNode(); 70780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.waitForEvent(); 70880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(0, nl.getRemoved()); 70980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 71080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 711a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson pref.node("mock4/mock7"); 71280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.waitForEvent(); 71380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1, nl.getAdded()); 71480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 71580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 71680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1.removeNode(); 71780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.waitForEvent(); 71880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(2, nl.getRemoved()); // fail 1 71980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson nl.reset(); 72080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } finally { 72180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 72280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson child1.removeNode(); 723a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (Exception ignored) { 72480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 72580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 72680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 72780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 728a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson public void testAddPreferenceChangeListener() throws Exception { 72980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 73080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson MockPreferenceChangeListener pl = null; 73180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 73280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 73380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addPreferenceChangeListener(null); 73480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 735a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (NullPointerException expected) { 73680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 73780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 73880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // To get existed node doesn't create the change event 73980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 74080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl = new MockPreferenceChangeListener(); 74180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addPreferenceChangeListener(pl); 74280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putInt("mock1", 123); 74380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.waitForEvent(1); 74480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1, pl.getChanged()); 74580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putLong("long_key", Long.MAX_VALUE); 74680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.waitForEvent(2); 74780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(2, pl.getChanged()); 74880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.reset(); 74980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 75080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.clear(); 75180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.waitForEvent(2); 75280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(2, pl.getChanged()); // fail 1 75380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } catch(BackingStoreException bse) { 75480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.reset(); 75580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail("BackingStoreException is thrown"); 75680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 75780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.reset(); 75880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } finally { 75980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(pl); 76080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson //child1.removeNode(); 76180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 76280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 76380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // same listener can be added twice, and must be removed twice 76480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 76580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl = new MockPreferenceChangeListener(); 76680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addPreferenceChangeListener(pl); 76780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addPreferenceChangeListener(pl); 76880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putFloat("float_key", Float.MIN_VALUE); 76980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.waitForEvent(2); 77080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(2, pl.getChanged()); 77180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.reset(); 77280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } finally { 77380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(pl); 77480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(pl); 77580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 77680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 77780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // test remove event 77880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 77980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl = new MockPreferenceChangeListener(); 78080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addPreferenceChangeListener(pl); 78180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putDouble("double_key", Double.MAX_VALUE); 78280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.waitForEvent(1); 78380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(1, pl.getChanged()); 78480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 78580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.clear(); 78680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.waitForEvent(3); 78780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(3, pl.getChanged()); // fails 78880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } catch(BackingStoreException bse) { 78980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail("BackingStoreException is thrown"); 79080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 79180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.reset(); 79280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } finally { 79380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(pl); 79480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 79580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson // test remove event with two listeners 79680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 79780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl = new MockPreferenceChangeListener(); 79880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addPreferenceChangeListener(pl); 79980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addPreferenceChangeListener(pl); 80080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.putByteArray("byte_array_key", new byte [] {1 ,2 , 3}); 80180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 80280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.clear(); 80380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.waitForEvent(4); 80480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson assertEquals(4, pl.getChanged()); 80580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } catch(BackingStoreException bse) { 80680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail("BackingStoreException is thrown"); 80780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 80880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pl.reset(); 80980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } finally { 81080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(pl); 81180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(pl); 81280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 81380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 81480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 81580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 81680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testRemoveNodeChangeListener() { 81780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 81880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 81980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(null); 82080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 821a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 82280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 82380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson MockNodeChangeListener l1 = new MockNodeChangeListener(); 82480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson MockNodeChangeListener l2 = new MockNodeChangeListener(); 82580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addNodeChangeListener(l1); 82680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addNodeChangeListener(l1); 82780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 82880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(l1); 82980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(l1); 83080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 83180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(l1); 83280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 833a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 83480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 83580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 83680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removeNodeChangeListener(l2); 83780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 838a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 83980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 84080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 84180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 84280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void testRemovePreferenceChangeListener() { 84380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson Preferences pref = Preferences.userNodeForPackage(Preferences.class); 84480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 84580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(null); 84680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 847a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 84880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 84980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson MockPreferenceChangeListener l1 = new MockPreferenceChangeListener(); 85080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson MockPreferenceChangeListener l2 = new MockPreferenceChangeListener(); 85180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addPreferenceChangeListener(l1); 85280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.addPreferenceChangeListener(l1); 85380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 85480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(l2); 85580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 856a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 85780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 85880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(l1); 85980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(l1); 86080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 86180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson pref.removePreferenceChangeListener(l1); 86280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson fail(); 863a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (IllegalArgumentException expected) { 86480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 86580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 86680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 86780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 86880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson static class MockNodeChangeListener implements NodeChangeListener { 86980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson private int added = 0; 87080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson private int removed = 0; 87180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 87280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public synchronized void waitForEvent() { 87380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 87480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson wait(500); 875a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (InterruptedException ignored) { 87680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 87780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 87880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 87980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public synchronized void childAdded(NodeChangeEvent e) { 88080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson ++added; 88180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson notifyAll(); 88280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 88380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 88480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public synchronized void childRemoved(NodeChangeEvent e) { 88580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson removed++; 88680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson notifyAll(); 88780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 88880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 88980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public synchronized int getAdded() { 89080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return added; 89180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 89280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 89380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public synchronized int getRemoved() { 89480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return removed; 89580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 89680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 89780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void reset() { 89880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson added = 0; 89980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson removed = 0; 90080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 90180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 90280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 90380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson private static class MockPreferenceChangeListener implements PreferenceChangeListener { 90480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson private int changed = 0; 90580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson private boolean addDispatched = false; 90680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson private boolean result = false; 90780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 90880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void waitForEvent(int count) { 90980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson for (int i = 0; i < count; i++) { 91080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson try { 91180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson synchronized (this) { 912a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson wait(500); 91380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 914a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson } catch (InterruptedException ignored) { 91580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 91680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 91780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 91880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 91980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public synchronized void preferenceChange(PreferenceChangeEvent pce) { 92080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson changed++; 92180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson addDispatched = true; 92280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson notifyAll(); 92380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 92480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 925a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson public boolean getResult() throws InterruptedException { 92680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson if (!addDispatched) { 927a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson // TODO: don't know why must add limitation 928a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson wait(100); 92980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 93080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson addDispatched = false; 93180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return result; 93280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 93380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 934a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson public synchronized int getChanged() throws InterruptedException { 93580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson if (!addDispatched) { 936a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson // TODO: don't know why must add limitation 937a744a0370d151794f5a20a23fa549cc2f34df7d6Jesse Wilson wait(1000); 93880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 93980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson addDispatched = false; 94080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return changed; 94180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 94280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 94380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void reset() { 94480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson changed = 0; 94580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson result = false; 94680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 94780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 94880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 94980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @SuppressWarnings("unused") 95080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson static class MockPreferences extends Preferences { 95180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 95280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 95380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public String absolutePath() { 95480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return null; 95580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 95680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 95780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 95880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public String[] childrenNames() throws BackingStoreException { 95980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return null; 96080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 96180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 96280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 96380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void clear() throws BackingStoreException { 96480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 96580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 96680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 96780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void exportNode(OutputStream ostream) throws IOException, BackingStoreException { 96880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 96980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 97080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 97180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void exportSubtree(OutputStream ostream) throws IOException, BackingStoreException { 97280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 97380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 97480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 97580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void flush() throws BackingStoreException { 97680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 97780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 97880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 97980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public String get(String key, String deflt) { 98080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return null; 98180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 98280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 98380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 98480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public boolean getBoolean(String key, boolean deflt) { 98580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return false; 98680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 98780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 98880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 98980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public byte[] getByteArray(String key, byte[] deflt) { 99080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return null; 99180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 99280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 99380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 99480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public double getDouble(String key, double deflt) { 99580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return 0; 99680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 99780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 99880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 99980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public float getFloat(String key, float deflt) { 100080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return 0; 100180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 100280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 100380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 100480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public int getInt(String key, int deflt) { 100580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return 0; 100680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 100780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 100880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 100980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public long getLong(String key, long deflt) { 101080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return 0; 101180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 101280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 101380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 101480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public boolean isUserNode() { 101580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return false; 101680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 101780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 101880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 101980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public String[] keys() throws BackingStoreException { 102080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return null; 102180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 102280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 102380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 102480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public String name() { 102580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return null; 102680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 102780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 102880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 102980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public Preferences node(String name) { 103080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return null; 103180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 103280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 103380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 103480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public boolean nodeExists(String name) throws BackingStoreException { 103580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return false; 103680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 103780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 103880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 103980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public Preferences parent() { 104080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return null; 104180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 104280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 104380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 104480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void put(String key, String value) { 104580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 104680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 104780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 104880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void putBoolean(String key, boolean value) { 104980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 105080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 105180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 105280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void putByteArray(String key, byte[] value) { 105380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 105480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 105580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 105680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void putDouble(String key, double value) { 105780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 105880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 105980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 106080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void putFloat(String key, float value) { 106180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 106280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 106380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 106480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void putInt(String key, int value) { 106580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 106680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 106780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 106880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void putLong(String key, long value) { 106980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 107080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 107180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 107280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void remove(String key) { 107380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 107480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 107580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 107680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void removeNode() throws BackingStoreException { 107780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 107880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 107980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 108080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void addNodeChangeListener(NodeChangeListener ncl) { 108180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 108280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 108380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 108480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void addPreferenceChangeListener(PreferenceChangeListener pcl) { 108580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 108680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 108780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 108880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void removeNodeChangeListener(NodeChangeListener ncl) { 108980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 109080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 109180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 109280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void removePreferenceChangeListener(PreferenceChangeListener pcl) { 109380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 109480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 109580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 109680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public void sync() throws BackingStoreException { 109780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 109880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson 109980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson @Override 110080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson public String toString() { 110180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson return null; 110280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 110380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson } 110480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson} 1105