OldPreferencesTest.java revision 80c9f71990a6655b7b2b43dc1946487e917f0f9d
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.InputStream;
2180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.io.OutputStream;
2280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.Arrays;
2380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.prefs.BackingStoreException;
2480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.prefs.NodeChangeEvent;
2580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.prefs.NodeChangeListener;
2680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.prefs.PreferenceChangeEvent;
2780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.prefs.PreferenceChangeListener;
2880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport java.util.prefs.Preferences;
2980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport junit.framework.TestCase;
3080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
3180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonpublic final class OldPreferencesTest extends TestCase {
3280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
3380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    final static String longKey;
3480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    final static String longValue;
3580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
3680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    static {
3780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        StringBuffer key = new StringBuffer(Preferences.MAX_KEY_LENGTH);
3880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        for (int i = 0; i < Preferences.MAX_KEY_LENGTH; i++) {
3980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            key.append('a');
4080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
4180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        longKey = key.toString();
4280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
4380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        StringBuffer value = new StringBuffer(Preferences.MAX_VALUE_LENGTH);
4480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        for (int i = 0; i < Preferences.MAX_VALUE_LENGTH; i++) {
4580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            value.append('a');
4680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
4780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        longValue = value.toString();
4880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
4980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
5080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testAbstractMethods() {
5180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences p = new MockPreferences();
5280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.absolutePath();
5380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
5480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            p.childrenNames();
5580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (BackingStoreException e4) {
5680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
5780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
5880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            p.clear();
5980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (BackingStoreException e5) {
6080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
6180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
6280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            p.exportNode(null);
6380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IOException e6) {
6480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (BackingStoreException e6) {
6580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
6680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
6780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            p.exportSubtree(null);
6880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IOException e7) {
6980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (BackingStoreException e7) {
7080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
7180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
7280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            p.flush();
7380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (BackingStoreException e8) {
7480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
7580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.get(null, null);
7680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.getBoolean(null, false);
7780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.getByteArray(null, null);
7880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.getFloat(null, 0.1f);
7980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.getDouble(null, 0.1);
8080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.getInt(null, 1);
8180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.getLong(null, 1l);
8280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.isUserNode();
8380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
8480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            p.keys();
8580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (BackingStoreException e) {
8680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
8780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.name();
8880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.node(null);
8980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
9080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            p.nodeExists(null);
9180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (BackingStoreException e1) {
9280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
9380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.parent();
9480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.put(null, null);
9580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.putBoolean(null, false);
9680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.putByteArray(null, null);
9780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.putDouble(null, 1);
9880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.putFloat(null, 1f);
9980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.putInt(null, 1);
10080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.putLong(null, 1l);
10180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.remove(null);
10280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
10380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            p.removeNode();
10480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (BackingStoreException e2) {
10580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
10680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.addNodeChangeListener(null);
10780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.addPreferenceChangeListener(null);
10880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.removeNodeChangeListener(null);
10980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.removePreferenceChangeListener(null);
11080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
11180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            p.sync();
11280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (BackingStoreException e3) {
11380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
11480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        p.toString();
11580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
11680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
11780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testConstructor() {
11880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        MockPreferences mp = new MockPreferences();
11980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals(mp.getClass(), MockPreferences.class);
12080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
12180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
12280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testToString() {
12380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences p1 = Preferences.userNodeForPackage(Preferences.class);
12480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertNotNull(p1.toString());
12580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
12680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences p2 = Preferences.systemRoot();
12780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertNotNull(p2.toString());
12880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
12980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences p3 = Preferences.userRoot();
13080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertNotNull(p3.toString());
13180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
13280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
13380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testAbsolutePath() {
13480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences p = Preferences.userNodeForPackage(Preferences.class);
13580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("/java/util/prefs", p.absolutePath());
13680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
13780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
13880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
13980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testChildrenNames() throws BackingStoreException {
14080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences.userNodeForPackage(Preferences.class);
14180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
14280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences child1 = pref.node("child1");
14380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
14480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.node("child2");
14580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.node("child3");
14680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        child1.node("subchild1");
14780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
14880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertSame(pref, child1.parent());
14980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals(3, pref.childrenNames().length);
15080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("child1", pref.childrenNames()[0]);
15180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals(1, child1.childrenNames().length);
15280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("subchild1", child1.childrenNames()[0]);
15380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
15480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
15580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testClear() throws BackingStoreException {
15680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences.userNodeForPackage(Preferences.class);
15780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("testClearKey", "testClearValue");
15880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("testClearKey1", "testClearValue1");
15980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("testClearValue", pref.get("testClearKey", null));
16080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("testClearValue1", pref.get("testClearKey1", null));
16180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.clear();
16280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertNull(pref.get("testClearKey", null));
16380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertNull(pref.get("testClearKey1", null));
16480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
16580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
16680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testGet() throws BackingStoreException {
16780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences root = Preferences.userNodeForPackage(Preferences.class);
16880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = root.node("mock");
16980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertNull(pref.get("", null));
17080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("default", pref.get("key", "default"));
17180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertNull(pref.get("key", null));
17280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("testGetkey", "value");
17380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertNull(pref.get("testGetKey", null));
17480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("value", pref.get("testGetkey", null));
17580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
17680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
17780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.get(null, "abc");
17880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
17980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
18080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
18180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.get("", "abc");
18280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.get("key", null);
18380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.get("key", "");
18480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.putFloat("floatKey", 1.0f);
18580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("1.0", pref.get("floatKey", null));
18680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
18780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.removeNode();
18880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
18980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.get("key", "abc");
19080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
19180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalStateException e) {
19280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
19380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
19480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.get(null, "abc");
19580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
19680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
19780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
19880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
19980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
20080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testGetBoolean() {
20180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences.userNodeForPackage(Preferences.class);
20280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
20380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.getBoolean(null, false);
20480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
20580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
20680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
20780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
20880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("testGetBooleanKey", "false");
20980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("testGetBooleanKey2", "value");
21080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertFalse(pref.getBoolean("testGetBooleanKey", true));
21180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertTrue(pref.getBoolean("testGetBooleanKey2", true));
21280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
21380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
21480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testGetByteArray() {
21580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences.userNodeForPackage(Preferences.class);
21680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
21780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.getByteArray(null, new byte[0]);
21880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
21980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
22080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
22180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        byte[] b64Array = new byte[] { 0x59, 0x57, 0x4a, 0x6a };// BASE64
22280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
22380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("testGetByteArrayKey", "abc=");
22480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("testGetByteArrayKey2", new String(b64Array));
22580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("invalidKey", "<>?");
22680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertTrue(Arrays.equals(new byte[] { 105, -73 }, pref.getByteArray(
22780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                "testGetByteArrayKey", new byte[0])));
22880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertTrue(Arrays.equals(new byte[] { 'a', 'b', 'c' }, pref
22980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                .getByteArray("testGetByteArrayKey2", new byte[0])));
23080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertTrue(Arrays.equals(new byte[0], pref.getByteArray("invalidKey",
23180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                new byte[0])));
23280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
23380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.putByteArray("testGetByteArrayKey3", b64Array);
23480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.putByteArray("testGetByteArrayKey4", "abc".getBytes());
23580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertTrue(Arrays.equals(b64Array, pref.getByteArray(
23680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                "testGetByteArrayKey3", new byte[0])));
23780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertTrue(Arrays.equals("abc".getBytes(), pref.getByteArray(
23880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                "testGetByteArrayKey4", new byte[0])));
23980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
24080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
24180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testGetDouble() {
24280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences.userNodeForPackage(Preferences.class);
24380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
24480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.getDouble(null, 0);
24580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
24680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
24780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
24880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
24980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("testGetDoubleKey", "1");
25080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("testGetDoubleKey2", "value");
25180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.putDouble("testGetDoubleKey3", 1);
25280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.putInt("testGetDoubleKey4", 1);
25380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals(1.0, pref.getDouble("testGetDoubleKey", 0.0), 0);
25480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals(0.0, pref.getDouble("testGetDoubleKey2", 0.0), 0);
25580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals(1.0, pref.getDouble("testGetDoubleKey3", 0.0), 0);
25680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals(1.0, pref.getDouble("testGetDoubleKey4", 0.0), 0);
25780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
25880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
25980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testGetFloat() {
26080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences.userNodeForPackage(Preferences.class);
26180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
26280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.getFloat(null, 0f);
26380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
26480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
26580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
26680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("testGetFloatKey", "1");
26780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("testGetFloatKey2", "value");
26880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals(1f, pref.getFloat("testGetFloatKey", 0f), 0);
26980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals(0f, pref.getFloat("testGetFloatKey2", 0f), 0);
27080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
27180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
27280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testGetInt() {
27380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences.userNodeForPackage(Preferences.class);
27480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
27580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.getInt(null, 0);
27680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
27780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
27880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
27980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
28080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("testGetIntKey", "1");
28180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("testGetIntKey2", "value");
28280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals(1, pref.getInt("testGetIntKey", 0));
28380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals(0, pref.getInt("testGetIntKey2", 0));
28480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
28580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
28680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testGetLong() {
28780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences.userNodeForPackage(Preferences.class);
28880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
28980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.getLong(null, 0);
29080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
29180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
29280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
29380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
29480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("testGetLongKey", "1");
29580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("testGetLongKey2", "value");
29680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals(1, pref.getInt("testGetLongKey", 0));
29780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals(0, pref.getInt("testGetLongKey2", 0));
29880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
29980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
30080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testIsUserNode() {
30180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref1 = Preferences.userNodeForPackage(Preferences.class);
30280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertTrue(pref1.isUserNode());
30380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
30480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref2 = Preferences.systemNodeForPackage(Preferences.class);
30580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertFalse(pref2.isUserNode());
30680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
30780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
30880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testKeys() throws BackingStoreException {
30980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences.userNodeForPackage(Preferences.class);
31080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.clear();
31180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
31280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("key0", "value");
31380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("key1", "value1");
31480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("key2", "value2");
31580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("key3", "value3");
31680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
31780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        String[] keys = pref.keys();
31880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals(4, keys.length);
31980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        for (int i = 0; i < keys.length; i++) {
32080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            assertEquals(0, keys[i].indexOf("key"));
32180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            assertEquals(4, keys[i].length());
32280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
32380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
32480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
32580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testName() {
32680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences.userNodeForPackage(Preferences.class);
32780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences child = pref.node("mock");
32880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("mock", child.name());
32980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
33080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
33180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testNode() throws BackingStoreException {
33280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        StringBuffer name = new StringBuffer(Preferences.MAX_NAME_LENGTH);
33380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        for (int i = 0; i < Preferences.MAX_NAME_LENGTH; i++) {
33480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            name.append('a');
33580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
33680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        String longName = name.toString();
33780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
33880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences root = Preferences.userRoot();
33980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences parent = Preferences
34080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                .userNodeForPackage(Preferences.class);
34180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = parent.node("mock");
34280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
34380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
34480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.node(null);
34580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
34680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
34780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
34880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
34980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.node("/java/util/prefs/");
35080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
35180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
35280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
35380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
35480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.node("/java//util/prefs");
35580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
35680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
35780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
35880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
35980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.node(longName + "a");
36080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
36180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
36280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
36380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertNotNull(pref.node(longName));
36480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
36580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertSame(root, pref.node("/"));
36680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
36780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences prefs = pref.node("/java/util/prefs");
36880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertSame(prefs, parent);
36980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
37080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertSame(pref, pref.node(""));
37180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
37280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
37380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testNodeExists() throws BackingStoreException {
37480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
37580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences parent = Preferences
37680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                .userNodeForPackage(Preferences.class);
37780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = parent.node("mock");
37880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
37980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
38080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.nodeExists(null);
38180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
38280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
38380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
38480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
38580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.nodeExists("/java/util/prefs/");
38680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
38780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
38880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
38980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
39080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.nodeExists("/java//util/prefs");
39180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
39280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
39380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
39480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
39580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertTrue(pref.nodeExists("/"));
39680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
39780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertTrue(pref.nodeExists("/java/util/prefs"));
39880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
39980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertTrue(pref.nodeExists(""));
40080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
40180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertFalse(pref.nodeExists("child"));
40280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences grandchild = pref.node("child/grandchild");
40380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertTrue(pref.nodeExists("child"));
40480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertTrue(pref.nodeExists("child/grandchild"));
40580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        grandchild.removeNode();
40680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertTrue(pref.nodeExists("child"));
40780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertFalse(pref.nodeExists("child/grandchild"));
40880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertFalse(grandchild.nodeExists(""));
40980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
41080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertFalse(pref.nodeExists("child2/grandchild"));
41180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.node("child2/grandchild");
41280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertTrue(pref.nodeExists("child2/grandchild"));
41380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
41480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
41580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testParent() {
41680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences parent = Preferences
41780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                .userNodeForPackage(Preferences.class);
41880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = parent.node("mock");
41980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
42080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertSame(parent, pref.parent());
42180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
42280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
42380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testPut() throws BackingStoreException {
42480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences
42580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        .userNodeForPackage(Preferences.class);
42680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("", "emptyvalue");
42780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("emptyvalue", pref.get("", null));
42880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("testPutkey", "value1");
42980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("value1", pref.get("testPutkey", null));
43080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("testPutkey", "value2");
43180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("value2", pref.get("testPutkey", null));
43280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
43380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("", "emptyvalue");
43480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("emptyvalue", pref.get("", null));
43580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
43680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
43780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.put(null, "value");
43880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
43980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
44080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
44180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
44280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.put("key", null);
44380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
44480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
44580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
44680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put(longKey, longValue);
44780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
44880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.put(longKey + 1, longValue);
44980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
45080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
45180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
45280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
45380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.put(longKey, longValue + 1);
45480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
45580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
45680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
45780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
45880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.removeNode();
45980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
46080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.put(longKey, longValue + 1);
46180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
46280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
46380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
46480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
46580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
46680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.put(longKey, longValue);
46780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
46880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalStateException e) {
46980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
47080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
47180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
47280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testPutBoolean() {
47380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences
47480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        .userNodeForPackage(Preferences.class);
47580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
47680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.putBoolean(null, false);
47780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
47880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
47980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
48080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.putBoolean(longKey, false);
48180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
48280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.putBoolean(longKey + "a", false);
48380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
48480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
48580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
48680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.putBoolean("testPutBooleanKey", false);
48780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("false", pref.get("testPutBooleanKey", null));
48880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertFalse(pref.getBoolean("testPutBooleanKey", true));
48980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
49080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
49180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testPutDouble() {
49280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences
49380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        .userNodeForPackage(Preferences.class);
49480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
49580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.putDouble(null, 3);
49680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
49780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
49880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
49980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.putDouble(longKey, 3);
50080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
50180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.putDouble(longKey + "a", 3);
50280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
50380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
50480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
50580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.putDouble("testPutDoubleKey", 3);
50680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("3.0", pref.get("testPutDoubleKey", null));
50780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals(3, pref.getDouble("testPutDoubleKey", 0), 0);
50880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
50980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
51080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testPutFloat() {
51180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences
51280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        .userNodeForPackage(Preferences.class);
51380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
51480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.putFloat(null, 3f);
51580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
51680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
51780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
51880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.putFloat(longKey, 3f);
51980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
52080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.putFloat(longKey + "a", 3f);
52180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
52280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
52380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
52480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.putFloat("testPutFloatKey", 3f);
52580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("3.0", pref.get("testPutFloatKey", null));
52680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals(3f, pref.getFloat("testPutFloatKey", 0), 0);
52780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
52880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
52980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testPutInt() {
53080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences
53180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        .userNodeForPackage(Preferences.class);
53280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
53380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.putInt(null, 3);
53480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
53580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
53680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
53780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.putInt(longKey, 3);
53880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
53980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.putInt(longKey + "a", 3);
54080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
54180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
54280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
54380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.putInt("testPutIntKey", 3);
54480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("3", pref.get("testPutIntKey", null));
54580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals(3, pref.getInt("testPutIntKey", 0));
54680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
54780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
54880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testPutLong() {
54980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences
55080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        .userNodeForPackage(Preferences.class);
55180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
55280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.putLong(null, 3L);
55380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
55480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
55580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
55680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.putLong(longKey, 3L);
55780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
55880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.putLong(longKey + "a", 3L);
55980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
56080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
56180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
56280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.putLong("testPutLongKey", 3L);
56380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("3", pref.get("testPutLongKey", null));
56480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals(3L, pref.getLong("testPutLongKey", 0));
56580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
56680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
56780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testPutByteArray() {
56880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences
56980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        .userNodeForPackage(Preferences.class);
57080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
57180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.putByteArray(null, new byte[0]);
57280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
57380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
57480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
57580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
57680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.putByteArray("testPutByteArrayKey4", null);
57780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
57880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
57980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
58080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
58180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.putByteArray(longKey, new byte[0]);
58280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
58380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.putByteArray(longKey + "a", new byte[0]);
58480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
58580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
58680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
58780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        byte[] longArray = new byte[(int) (Preferences.MAX_VALUE_LENGTH * 0.74)];
58880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        byte[] longerArray = new byte[(int) (Preferences.MAX_VALUE_LENGTH * 0.75) + 1];
58980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.putByteArray(longKey, longArray);
59080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
59180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.putByteArray(longKey, longerArray);
59280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
59380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
59480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
59580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
59680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.putByteArray("testPutByteArrayKey", new byte[0]);
59780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("", pref.get("testPutByteArrayKey", null));
59880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertTrue(Arrays.equals(new byte[0], pref.getByteArray(
59980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                "testPutByteArrayKey", null)));
60080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
60180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.putByteArray("testPutByteArrayKey3", new byte[] { 'a', 'b', 'c' });
60280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("YWJj", pref.get("testPutByteArrayKey3", null));
60380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertTrue(Arrays.equals(new byte[] { 'a', 'b', 'c' }, pref
60480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                .getByteArray("testPutByteArrayKey3", null)));
60580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
60680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
60780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testRemove() throws BackingStoreException {
60880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences
60980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        .userNodeForPackage(Preferences.class);
61080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.remove("key");
61180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
61280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.put("key", "value");
61380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertEquals("value", pref.get("key", null));
61480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.remove("key");
61580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertNull(pref.get("key", null));
61680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
61780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.remove("key");
61880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
61980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
62080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.remove(null);
62180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
62280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
62380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
62480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
62580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.removeNode();
62680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
62780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.remove("key");
62880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
62980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalStateException e) {
63080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
63180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
63280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
63380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testRemoveNode() throws BackingStoreException {
63480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences
63580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        .userNodeForPackage(Preferences.class);
63680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences child = pref.node("child");
63780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences child1 = pref.node("child1");
63880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences grandchild = child.node("grandchild");
63980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
64080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.removeNode();
64180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
64280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertFalse(child.nodeExists(""));
64380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertFalse(child1.nodeExists(""));
64480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertFalse(grandchild.nodeExists(""));
64580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        assertFalse(pref.nodeExists(""));
64680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
64780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
64880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testAddNodeChangeListener() throws BackingStoreException {
64980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences.userNodeForPackage(Preferences.class);
65080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
65180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.addNodeChangeListener(null);
65280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
65380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
65480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
65580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
65680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences child1 = null;
65780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences child2 = null;
65880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences child3 = null;
65980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
66080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        MockNodeChangeListener nl = null;
66180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        // To get existed node doesn't create the change event
66280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
66380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl = new MockNodeChangeListener();
66480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.addNodeChangeListener(nl);
66580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            child1 = pref.node("mock1");
66680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.waitForEvent();
66780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            assertEquals(1, nl.getAdded());
66880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.reset();
66980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            child2 = pref.node("mock1");
67080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.waitForEvent();
67180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            assertEquals(0, nl.getAdded());
67280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.reset();
67380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } finally {
67480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.removeNodeChangeListener(nl);
67580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            child1.removeNode();
67680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
67780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        // same listener can be added twice, and must be removed twice
67880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
67980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl = new MockNodeChangeListener();
68080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.addNodeChangeListener(nl);
68180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.addNodeChangeListener(nl);
68280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            child1 = pref.node("mock2");
68380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.waitForEvent();
68480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            assertEquals(2, nl.getAdded());
68580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.reset();
68680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } finally {
68780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.removeNodeChangeListener(nl);
68880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.removeNodeChangeListener(nl);
68980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            child1.removeNode();
69080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
69180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        // test remove event
69280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
69380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl = new MockNodeChangeListener();
69480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.addNodeChangeListener(nl);
69580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            child1 = pref.node("mock3");
69680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            child1.removeNode();
69780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.waitForEvent();
69880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            assertEquals(1, nl.getRemoved());
69980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.reset();
70080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } finally {
70180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.removeNodeChangeListener(nl);
70280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
70380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        // test remove event with two listeners
70480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
70580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl = new MockNodeChangeListener();
70680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.addNodeChangeListener(nl);
70780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.addNodeChangeListener(nl);
70880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            child1 = pref.node("mock6");
70980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            child1.removeNode();
71080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.waitForEvent();
71180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            assertEquals(2, nl.getRemoved());
71280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.reset();
71380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } finally {
71480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.removeNodeChangeListener(nl);
71580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.removeNodeChangeListener(nl);
71680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
71780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        // test add/remove indirect children, or remove several children at the
71880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        // same time
71980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
72080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl = new MockNodeChangeListener();
72180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            child1 = pref.node("mock4");
72280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            child1.addNodeChangeListener(nl);
72380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            child2 = pref.node("mock4/mock5");
72480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.waitForEvent();
72580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            assertEquals(1, nl.getAdded());
72680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.reset();
72780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            child3 = pref.node("mock4/mock5/mock6");
72880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.waitForEvent();
72980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            assertEquals(0, nl.getAdded());
73080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.reset();
73180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
73280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            child3.removeNode();
73380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.waitForEvent();
73480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            assertEquals(0, nl.getRemoved());
73580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.reset();
73680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
73780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            child3 = pref.node("mock4/mock7");
73880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.waitForEvent();
73980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            assertEquals(1, nl.getAdded());
74080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.reset();
74180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
74280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            child1.removeNode();
74380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.waitForEvent();
74480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            assertEquals(2, nl.getRemoved()); // fail 1
74580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            nl.reset();
74680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } finally {
74780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            try {
74880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                child1.removeNode();
74980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            } catch (Exception e) {
75080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            }
75180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
75280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
75380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
75480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
75580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testAddPreferenceChangeListener() {
75680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences.userNodeForPackage(Preferences.class);
75780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        MockPreferenceChangeListener pl = null;
75880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
75980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
76080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.addPreferenceChangeListener(null);
76180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
76280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (NullPointerException e) {
76380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
76480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
76580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        // To get existed node doesn't create the change event
76680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
76780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pl = new MockPreferenceChangeListener();
76880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.addPreferenceChangeListener(pl);
76980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.putInt("mock1", 123);
77080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pl.waitForEvent(1);
77180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            assertEquals(1, pl.getChanged());
77280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.putLong("long_key", Long.MAX_VALUE);
77380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pl.waitForEvent(2);
77480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            assertEquals(2, pl.getChanged());
77580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pl.reset();
77680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            try {
77780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                pref.clear();
77880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                pl.waitForEvent(2);
77980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                assertEquals(2, pl.getChanged()); // fail 1
78080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            } catch(BackingStoreException bse) {
78180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                pl.reset();
78280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                fail("BackingStoreException is thrown");
78380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            }
78480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pl.reset();
78580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } finally {
78680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.removePreferenceChangeListener(pl);
78780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            //child1.removeNode();
78880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
78980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
79080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        // same listener can be added twice, and must be removed twice
79180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
79280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pl = new MockPreferenceChangeListener();
79380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.addPreferenceChangeListener(pl);
79480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.addPreferenceChangeListener(pl);
79580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.putFloat("float_key", Float.MIN_VALUE);
79680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pl.waitForEvent(2);
79780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            assertEquals(2, pl.getChanged());
79880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pl.reset();
79980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } finally {
80080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.removePreferenceChangeListener(pl);
80180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.removePreferenceChangeListener(pl);
80280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
80380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
80480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        // test remove event
80580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
80680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pl = new MockPreferenceChangeListener();
80780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.addPreferenceChangeListener(pl);
80880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.putDouble("double_key", Double.MAX_VALUE);
80980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pl.waitForEvent(1);
81080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            assertEquals(1, pl.getChanged());
81180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            try {
81280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                pref.clear();
81380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                pl.waitForEvent(3);
81480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                assertEquals(3, pl.getChanged()); // fails
81580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            } catch(BackingStoreException bse) {
81680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                fail("BackingStoreException is thrown");
81780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            }
81880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pl.reset();
81980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } finally {
82080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.removePreferenceChangeListener(pl);
82180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
82280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        // test remove event with two listeners
82380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
82480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pl = new MockPreferenceChangeListener();
82580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.addPreferenceChangeListener(pl);
82680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.addPreferenceChangeListener(pl);
82780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.putByteArray("byte_array_key", new byte [] {1 ,2 , 3});
82880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            try {
82980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                pref.clear();
83080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                pl.waitForEvent(4);
83180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                assertEquals(4, pl.getChanged());
83280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            } catch(BackingStoreException bse) {
83380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                fail("BackingStoreException is thrown");
83480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            }
83580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pl.reset();
83680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } finally {
83780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.removePreferenceChangeListener(pl);
83880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.removePreferenceChangeListener(pl);
83980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
84080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
84180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
84280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
84380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testRemoveNodeChangeListener() {
84480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences.userNodeForPackage(Preferences.class);
84580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
84680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.removeNodeChangeListener(null);
84780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
84880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
84980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
85080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        MockNodeChangeListener l1 = new MockNodeChangeListener();
85180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        MockNodeChangeListener l2 = new MockNodeChangeListener();
85280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.addNodeChangeListener(l1);
85380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.addNodeChangeListener(l1);
85480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
85580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.removeNodeChangeListener(l1);
85680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.removeNodeChangeListener(l1);
85780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
85880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.removeNodeChangeListener(l1);
85980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
86080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
86180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
86280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
86380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.removeNodeChangeListener(l2);
86480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
86580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
86680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
86780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
86880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
86980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    public void testRemovePreferenceChangeListener() {
87080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        Preferences pref = Preferences.userNodeForPackage(Preferences.class);
87180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
87280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.removePreferenceChangeListener(null);
87380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
87480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
87580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
87680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        MockPreferenceChangeListener l1 = new MockPreferenceChangeListener();
87780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        MockPreferenceChangeListener l2 = new MockPreferenceChangeListener();
87880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.addPreferenceChangeListener(l1);
87980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.addPreferenceChangeListener(l1);
88080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
88180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.removePreferenceChangeListener(l2);
88280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
88380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
88480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
88580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.removePreferenceChangeListener(l1);
88680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        pref.removePreferenceChangeListener(l1);
88780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        try {
88880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            pref.removePreferenceChangeListener(l1);
88980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            fail();
89080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        } catch (IllegalArgumentException e) {
89180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
89280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
89380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
89480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
89580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    static class MockInputStream extends InputStream {
89680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
89780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        static final int normal = 0;
89880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
89980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        static final int exception = 1;
90080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
90180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        static final int runtimeException = 2;
90280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
90380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        int result = normal;
90480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
90580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        InputStream wrapper;
90680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
90780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void setResult(int i) {
90880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            result = i;
90980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
91080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
91180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        private void checkException() throws IOException {
91280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            switch (result) {
91380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            case normal:
91480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                return;
91580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            case exception:
91680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                throw new IOException("test");
91780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            case runtimeException:
91880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                throw new RuntimeException("test");
91980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            }
92080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
92180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
92280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public MockInputStream(InputStream in) {
92380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            wrapper = in;
92480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
92580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
92680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
92780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public int read() throws IOException {
92880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            checkException();
92980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return wrapper.read();
93080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
93180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
93280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
93380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    static class MockNodeChangeListener implements NodeChangeListener {
93480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        private int added = 0;
93580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        private int removed = 0;
93680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
93780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public synchronized void waitForEvent() {
93880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            try {
93980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                wait(500);
94080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            } catch (InterruptedException ignored) {
94180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            }
94280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
94380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
94480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public synchronized void childAdded(NodeChangeEvent e) {
94580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            ++added;
94680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            notifyAll();
94780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
94880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
94980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public synchronized void childRemoved(NodeChangeEvent e) {
95080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            removed++;
95180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            notifyAll();
95280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
95380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
95480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public synchronized  int getAdded() {
95580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return added;
95680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
95780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
95880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public synchronized int getRemoved() {
95980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return removed;
96080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
96180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
96280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void reset() {
96380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            added = 0;
96480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            removed = 0;
96580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
96680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
96780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
96880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    private static class MockPreferenceChangeListener implements PreferenceChangeListener {
96980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        private int changed = 0;
97080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        private boolean addDispatched = false;
97180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        private boolean result = false;
97280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
97380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void waitForEvent(int count) {
97480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            for (int i = 0; i < count; i++) {
97580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                try {
97680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                    synchronized (this) {
97780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                        this.wait(500);
97880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                    }
97980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                } catch (InterruptedException ignored) {
98080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                }
98180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            }
98280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
98380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
98480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public synchronized void preferenceChange(PreferenceChangeEvent pce) {
98580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            changed++;
98680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            addDispatched = true;
98780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            notifyAll();
98880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
98980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
99080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public boolean getResult() {
99180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            if (!addDispatched) {
99280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                try {
99380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                    // TODO: don't know why must add limitation
99480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                    this.wait(100);
99580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                } catch (InterruptedException e) {
99680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                    e.printStackTrace();
99780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                }
99880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            }
99980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            addDispatched = false;
100080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return result;
100180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
100280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
100380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public synchronized int getChanged() {
100480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            if (!addDispatched) {
100580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                try {
100680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                    // TODO: don't know why must add limitation
100780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                    this.wait(1000);
100880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                } catch (InterruptedException e) {
100980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                    e.printStackTrace();
101080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson                }
101180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            }
101280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            addDispatched = false;
101380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return changed;
101480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
101580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
101680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void reset() {
101780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            changed = 0;
101880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            result = false;
101980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
102080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
102180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
102280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    @SuppressWarnings("unused")
102380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    static class MockPreferences extends Preferences {
102480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
102580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
102680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public String absolutePath() {
102780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return null;
102880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
102980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
103080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
103180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public String[] childrenNames() throws BackingStoreException {
103280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return null;
103380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
103480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
103580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
103680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void clear() throws BackingStoreException {
103780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
103880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
103980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
104080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void exportNode(OutputStream ostream) throws IOException, BackingStoreException {
104180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
104280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
104380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
104480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void exportSubtree(OutputStream ostream) throws IOException, BackingStoreException {
104580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
104680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
104780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
104880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void flush() throws BackingStoreException {
104980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
105080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
105180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
105280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public String get(String key, String deflt) {
105380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return null;
105480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
105580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
105680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
105780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public boolean getBoolean(String key, boolean deflt) {
105880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return false;
105980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
106080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
106180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
106280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public byte[] getByteArray(String key, byte[] deflt) {
106380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return null;
106480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
106580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
106680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
106780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public double getDouble(String key, double deflt) {
106880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return 0;
106980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
107080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
107180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
107280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public float getFloat(String key, float deflt) {
107380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return 0;
107480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
107580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
107680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
107780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public int getInt(String key, int deflt) {
107880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return 0;
107980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
108080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
108180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
108280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public long getLong(String key, long deflt) {
108380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return 0;
108480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
108580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
108680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
108780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public boolean isUserNode() {
108880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return false;
108980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
109080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
109180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
109280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public String[] keys() throws BackingStoreException {
109380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return null;
109480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
109580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
109680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
109780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public String name() {
109880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return null;
109980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
110080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
110180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
110280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public Preferences node(String name) {
110380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return null;
110480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
110580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
110680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
110780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public boolean nodeExists(String name) throws BackingStoreException {
110880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return false;
110980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
111080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
111180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
111280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public Preferences parent() {
111380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return null;
111480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
111580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
111680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
111780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void put(String key, String value) {
111880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
111980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
112080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
112180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void putBoolean(String key, boolean value) {
112280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
112380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
112480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
112580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void putByteArray(String key, byte[] value) {
112680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
112780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
112880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
112980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void putDouble(String key, double value) {
113080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
113180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
113280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
113380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void putFloat(String key, float value) {
113480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
113580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
113680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
113780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void putInt(String key, int value) {
113880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
113980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
114080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
114180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void putLong(String key, long value) {
114280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
114380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
114480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
114580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void remove(String key) {
114680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
114780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
114880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
114980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void removeNode() throws BackingStoreException {
115080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
115180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
115280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
115380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void addNodeChangeListener(NodeChangeListener ncl) {
115480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
115580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
115680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
115780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void addPreferenceChangeListener(PreferenceChangeListener pcl) {
115880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
115980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
116080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
116180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void removeNodeChangeListener(NodeChangeListener ncl) {
116280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
116380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
116480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
116580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void removePreferenceChangeListener(PreferenceChangeListener pcl) {
116680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
116780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
116880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
116980c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public void sync() throws BackingStoreException {
117080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
117180c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson
117280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        @Override
117380c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        public String toString() {
117480c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson            return null;
117580c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson        }
117680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    }
117780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson}
1178