1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/*
2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Copyright (C) 2008 The Android Open Source Project
3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License");
5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * you may not use this file except in compliance with the License.
6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * You may obtain a copy of the License at
7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *      http://www.apache.org/licenses/LICENSE-2.0
9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project *
10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software
11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS,
12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and
14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License.
15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */
16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonpackage libcore.java.util.prefs;
18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ByteArrayInputStream;
20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.ByteArrayOutputStream;
21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.IOException;
22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.prefs.AbstractPreferences;
23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.prefs.BackingStoreException;
24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.prefs.InvalidPreferencesFormatException;
25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.prefs.NodeChangeEvent;
26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.prefs.NodeChangeListener;
27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.prefs.PreferenceChangeEvent;
28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.prefs.PreferenceChangeListener;
29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.prefs.Preferences;
3080c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonimport junit.framework.TestCase;
31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
3280c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilsonpublic final class OldAbstractPreferencesTest extends TestCase {
33f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    static final String nodeName = "mock";
35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
3680c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    AbstractPreferences pref;
3780c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    AbstractPreferences root;
3880c9f71990a6655b7b2b43dc1946487e917f0f9dJesse Wilson    AbstractPreferences parent = null;
39f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    protected void setUp() throws Exception {
41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        super.setUp();
42adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
437387da1059039afc7d8fd3e48e4d0712fff5dfafThe Android Open Source Project        root = (AbstractPreferences) Preferences.userRoot();
44c3002fbb233734d150a2fcef30fac69260c9ac6eJesse Wilson        for (String child : root.childrenNames()) {
45c3002fbb233734d150a2fcef30fac69260c9ac6eJesse Wilson            root.node(child).removeNode();
46c3002fbb233734d150a2fcef30fac69260c9ac6eJesse Wilson        }
47c3002fbb233734d150a2fcef30fac69260c9ac6eJesse Wilson        root.clear();
48ab28398a565e5ce8a56cdfd50ac6226e5317cf66The Android Open Source Project
49c3002fbb233734d150a2fcef30fac69260c9ac6eJesse Wilson        parent = (AbstractPreferences) Preferences.userNodeForPackage(getClass());
50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref = (AbstractPreferences) parent.node(nodeName);
51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testToString() {
54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(pref.toString().contains(nodeName));
55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
56adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testPut() throws BackingStoreException {
58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.put("Value", "String");
59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
60f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("String", pref.get("Value", ":"));
62f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
63adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.put(null, "Exception");
65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
69f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int i;
71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        StringBuffer sb = new StringBuffer();
72f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (i = 0; i < Preferences.MAX_KEY_LENGTH + 1; i++) {
74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sb.append('c');
75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
76f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.put(new String(sb), "Exception");
79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
82adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sb = new StringBuffer();
85f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (i = 0; i < Preferences.MAX_VALUE_LENGTH + 1; i++) {
87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sb.append('c');
88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
89f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.put("DoubleValue", new String(sb));
92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
95adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
96f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
98f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.put("DoubleValue", "Exception");
101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGet() throws BackingStoreException {
108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.put("Value", "String");
109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putDouble("DoubleValue", new Double(9.10938188e-31));
110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putBoolean("BoolValue", true);
111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
112f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("String", pref.get("Value", ":"));
114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("true", pref.get("BoolValue", ":"));
115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals("9.10938188E-31", pref.get("DoubleValue", null));
116f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.get(null, "Exception");
119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
123f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
125f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.get("DoubleValue", "Exception");
128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testRemove() throws BackingStoreException {
135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] keyArray = new String[]{"Value", "DoubleValue", "LongValue", "IntValue"};
136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.put(keyArray[0], "String");
137adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putDouble(keyArray[1], new Double(9.10938188e-31));
138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putLong(keyArray[2], new Long(Long.MIN_VALUE));
139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putInt(keyArray[3], 299792458);
140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.node("New node");
141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
142f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
143adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] str = pref.keys();
144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(keyArray.length, str.length);
145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for(int i = 0; i < keyArray.length; i++) {
146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.remove(keyArray[i]);
147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            str = pref.keys();
148adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(keyArray.length - i - 1, str.length);
149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1, pref.childrenNames().length);
151adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.remove("New node");
152adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1, pref.childrenNames().length);
153f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
154adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
155f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
156adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
157adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.remove("New node");
158adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
159adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
160adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
161adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
162adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
163adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
164adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testClear() throws BackingStoreException {
165adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractPreferences ap = (AbstractPreferences) pref.node("New node");
166adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putInt("IntValue", 33);
167adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putBoolean("BoolValue", true);
168adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
169adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(pref.getBoolean("BoolValue", false));
170adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(33, pref.getInt("IntValue", 22));
171adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1, pref.childrenNames().length);
172adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.clear();
173adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(pref.getBoolean("BoolValue", false));
174adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(22, pref.getInt("IntValue", 22));
175adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1, pref.childrenNames().length);
176f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
177adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
178f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
179adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
180adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.clear();
181adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
182adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
183adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
184adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
185f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
186adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
187adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            ap.clear();
188adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
189adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
190adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
191adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
192adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
193adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
194adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testPutInt() throws BackingStoreException {
195adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putInt("IntValue", 299792458);
196adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
197f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
198adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(299792458, pref.getInt("IntValue", new Integer(1)));
199f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
200adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
201adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.putInt(null, new Integer(1));
202adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
203adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
204adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
205adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
206f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
207adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int i;
208adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        StringBuffer sb = new StringBuffer();
209f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
210adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (i = 0; i < Preferences.MAX_KEY_LENGTH + 1; i++) {
211adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sb.append('c');
212adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
213f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
214adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
215adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.putInt(new String(sb), new Integer(1));
216adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
217adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
218adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
219adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
220f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
221adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
222f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
223adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
224adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.putInt("IntValue", new Integer(1));
225adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
226adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
227adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
228adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
229adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
230adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
231adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetInt() throws BackingStoreException {
232adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.put("Value", "String");
233adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putDouble("DoubleValue", new Double(9.10938188e-31));
234adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putLong("LongValue", new Long(Long.MIN_VALUE));
235adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putInt("IntValue", 299792458);
236adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
237f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
238adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1, pref.getInt("Value", new Integer(1)));
239adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1, pref.getInt("LongValue", new Integer(1)));
240adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1, pref.getInt("DoubleValue", new Integer(1)));
241adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(299792458, pref.getInt("IntValue", new Integer(1)));
242f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
243adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
244adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.getInt(null, new Integer(1));
245adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
246adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
247adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
248adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
249f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
250adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
251f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
252adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
253adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.getInt("IntValue", new Integer(1));
254adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
255adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
256adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
257adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
258adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
259adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
260adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testPutLong() throws BackingStoreException {
261adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putLong("LongValue", new Long(299792458));
262adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
263f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
264adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(299792458L, pref.getLong("LongValue", new Long(1)));
265f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
266adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
267adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.putLong(null, new Long(1));
268adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
269adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
270adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
271adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
272f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
273adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int i;
274adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        StringBuffer sb = new StringBuffer();
275f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
276adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (i = 0; i < Preferences.MAX_KEY_LENGTH + 1; i++) {
277adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sb.append('c');
278adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
279f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
280adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
281adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.putLong(new String(sb), new Long(1));
282adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
283adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
284adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
285adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
286f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
287adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
288f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
289adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
290adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.putLong("LongValue", new Long(1));
291adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
292adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
293adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
294adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
295adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
296adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
297adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetLong() throws BackingStoreException {
298adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.put("Value", "String");
299adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putDouble("DoubleValue", new Double(9.10938188e-31));
300adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putLong("LongValue", new Long(Long.MIN_VALUE));
301adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putInt("IntValue", 299792458);
302adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
303f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
304adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1L, pref.getLong("Value", new Long(1)));
305adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(Long.MIN_VALUE, pref.getLong("LongValue", new Long(1)));
306adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1L, pref.getLong("DoubleValue", new Long(1)));
307adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(299792458L, pref.getLong("IntValue", new Long(1)));
308f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
309adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
310adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.getLong(null, new Long(1));
311adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
312adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
313adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
314adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
315f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
316adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
317f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
318adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
319adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.getLong("LongValue", new Long(1));
320adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
321adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
322adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
323adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
324adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
325adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
326adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testPutBoolean() throws BackingStoreException {
327adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putBoolean("BoolValue", true);
328adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
329f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
330adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(pref.getBoolean("BoolValue", false));
331f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
332adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
333adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.putBoolean(null, true);
334adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
335adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
336adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
337adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
338f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
339adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int i;
340adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        StringBuffer sb = new StringBuffer();
341f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
342adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (i = 0; i < Preferences.MAX_KEY_LENGTH + 1; i++) {
343adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sb.append('c');
344adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
345f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
346adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
347adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.putBoolean(new String(sb), true);
348adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
349adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
350adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
351adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
352f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
353adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
354f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
355adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
356adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.putBoolean("DoubleValue", true);
357adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
358adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
359adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
360adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
361adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
362adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
363adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetBoolean() throws BackingStoreException {
364adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.put("Value", "String");
365adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putDouble("DoubleValue", new Double(9.10938188e-31));
366adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putBoolean("BoolValue", true);
367adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
368f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
369adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(pref.getBoolean("Value", false));
370adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(pref.getBoolean("BoolValue", false));
371adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(pref.getBoolean("DoubleValue", false));
372f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
373adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
374adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.getBoolean(null, true);
375adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
376adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
377adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
378adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
379f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
380adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
381f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
382adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
383adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.getBoolean("DoubleValue", true);
384adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
385adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
386adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
387adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
388adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
389adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
390adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testPutFloat() throws BackingStoreException {
391adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putFloat("FloatValue", new Float(1.602e-19));
392adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
393f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
394adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Float(1.602e-19), pref.getFloat("FloatValue", new Float(0.2)));
395f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
396adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
397adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.putFloat(null, new Float(0.1));
398adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
399adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
400adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
401adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
402f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
403adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int i;
404adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        StringBuffer sb = new StringBuffer();
405f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
406adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (i = 0; i < Preferences.MAX_KEY_LENGTH + 1; i++) {
407adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sb.append('c');
408adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
409f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
410adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
411adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.putFloat(new String(sb), new Float(0.1));
412adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
413adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
414adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
415adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
416f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
417adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
418f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
419adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
420adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.putFloat("FloatValue", new Float(0.1));
421adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
422adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
423adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
424adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
425adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
426adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
427adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetFloat() throws BackingStoreException {
428adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.put("Value", "String");
429adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putDouble("DoubleValue", new Double(9.10938188e-31));
430adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putFloat("FloatValue", new Float(-0.123));
431adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putInt("IntValue", 299792458);
432adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
433f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
434adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Float(0.1), pref.getFloat("Value", new Float(0.1)));
435adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Float(-0.123), pref.getFloat("FloatValue", new Float(0.2)));
436adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Float(9.109382e-31), pref.getFloat("DoubleValue", new Float(2.14)));
437adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Float(2.99792448e8), pref.getFloat("IntValue", new Float(5)));
438f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
439adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
440adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.getFloat(null, new Float(0.1));
441adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
442adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
443adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
444adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
445f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
446adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
447f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
448adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
449adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.getFloat("FloatValue", new Float(0.1));
450adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
451adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
452adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
453adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
454adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
455adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
456adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testPutDouble() throws BackingStoreException {
457adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putDouble("DoubleValue", new Double(9.10938188e-31));
458adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
459f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
460adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Double(9.10938188e-31), pref.getDouble("DoubleValue", new Double(2.14)));
461f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
462adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
463adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.putDouble(null, new Double(0.1));
464adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
465adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
466adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
467adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
468f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
469adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int i;
470adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        StringBuffer sb = new StringBuffer();
471f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
472adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (i = 0; i < Preferences.MAX_KEY_LENGTH + 1; i++) {
473adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sb.append('c');
474adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
475f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
476adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
477adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.putDouble(new String(sb), new Double(0.1));
478adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
479adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
480adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
481adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
482f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
483adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
484f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
485adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
486adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.putDouble("DoubleValue", new Double(0.1));
487adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
488adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
489adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
490adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
491adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
492adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
493adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetDouble() throws BackingStoreException {
494adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.put("Value", "String");
495adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putDouble("DoubleValue", new Double(9.10938188e-31));
496adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putBoolean("BoolValue", true);
497adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putInt("IntValue", 299792458);
498adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
499f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
500adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Double(0.1), pref.getDouble("Value", new Double(0.1)));
501adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Double(0.2), pref.getDouble("BoolValue", new Double(0.2)));
502adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Double(9.10938188e-31), pref.getDouble("DoubleValue", new Double(2.14)));
503adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Double(2.99792458e8), pref.getDouble("IntValue", new Double(5)));
504f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
505adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
506adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.getDouble(null, new Double(0.1));
507adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
508adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
509adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
510adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
511f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
512adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
513f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
514adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
515adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.getDouble("DoubleValue", new Double(0.1));
516adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
517adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
518adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
519adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
520adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
521adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
522adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testPutByteArray() throws BackingStoreException {
523adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byte[] bArray = new byte[]{1, 2, 3, 4, 5};
524adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byte[] array  = null;
525adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int i;
526adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putByteArray("Array", bArray);
527adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
528f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
529adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        array = pref.getByteArray("Array", null);
530adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(bArray.length, array.length);
531adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for(i = 0; i < bArray.length; i++) {
532adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(bArray[i], array[i]);
533adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
534f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
535adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
536adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.putByteArray(null, bArray);
537adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
538adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
539adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
540adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
541adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
542adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        StringBuffer sb = new StringBuffer();
543f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
544adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (i = 0; i < Preferences.MAX_KEY_LENGTH + 1; i++) {
545adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sb.append('c');
546adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
547f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
548adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
549adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.putByteArray(new String(sb), bArray);
550adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
551adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
552adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
553adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
554f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
555adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        bArray = new byte[Preferences.MAX_VALUE_LENGTH * 3 / 4 + 1];
556f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
557adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
558adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.putByteArray("Big array", bArray);
559adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
560adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
561adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
562adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
563f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
564adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
565f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
566adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
567adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.putByteArray("Array", new byte[10]);
568adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
569adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
570adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
571adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
572adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
573adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
574adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testGetByteArray() throws BackingStoreException {
575adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byte[] bArray = new byte[]{1, 2, 3, 4, 5};
576adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byte[] tmp    = new byte[]{5};
577adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        byte[] array  = null;
578adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int i;
579adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.put("Value", "String");
580adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putDouble("DoubleValue", new Double(9.10938188e-31));
581adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putByteArray("Array", bArray);
582adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
583f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
584adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        array = pref.getByteArray("Value", tmp);
585adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(tmp.length, array.length);
586adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for(i = 0; i < tmp.length; i++) {
587adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(tmp[i], array[i]);
588adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
589f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
590adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        array = pref.getByteArray("DoubleValue", tmp);
591adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(tmp.length, array.length);
592adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for(i = 0; i < tmp.length; i++) {
593adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(tmp[i], array[i]);
594adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
595f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
596adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        array = pref.getByteArray("Array", tmp);
597adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(bArray.length, array.length);
598adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for(i = 0; i < bArray.length; i++) {
599adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(bArray[i], array[i]);
600adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
601f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
602adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
603adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.getByteArray(null, tmp);
604adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("NullPointerException expected");
605adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (NullPointerException e) {
606adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
607adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
608f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
609adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
610f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
611adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
612adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.getByteArray("Array", tmp);
613adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
614adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
615adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
616adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
617adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
618adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
619adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testKeys() throws BackingStoreException {
620adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] keyArray = new String[]{"Value", "DoubleValue", "BoolValue", "IntValue"};
621adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String nodeStr = "New node";
622adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.node(nodeStr);
623adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.put(keyArray[0], "String");
624adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putDouble(keyArray[1], new Double(9.10938188e-31));
625adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putBoolean(keyArray[2], true);
626adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putInt(keyArray[3], 299792458);
627adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
628f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
629adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] str = pref.keys();
630adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(keyArray.length, str.length);
631adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for(int i = 0; i < str.length; i++) {
632adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            boolean flag = false;
633adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            for(int j = 0; j < keyArray.length; j++) {
634adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                if (str[i].compareTo(keyArray[j]) == 0) {
635adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    flag = true;
636adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                    break;
637adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project                }
638adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            }
639adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(str[i].compareTo(nodeStr) != 0);
640adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertTrue(flag);
641adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
642f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
643adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
644f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
645adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
646adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.keys();
647adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
648adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch(IllegalStateException e) {
649adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
650adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
651adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
652adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
653adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testChildrenNames() throws BackingStoreException {
654adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractPreferences first = (AbstractPreferences) pref.node("First node");
655adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractPreferences second = (AbstractPreferences) pref.node("Second node");
656f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
657adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(2, pref.childrenNames().length);
658adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(0, first.childrenNames().length);
659adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(0, second.childrenNames().length);
660f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
661adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        second.removeNode();
662f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
663adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
664adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            second.childrenNames();
665adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
666adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
667adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
668adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
669adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
670adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
671adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
672adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
673adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            first.childrenNames();
674adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
675adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
676adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
677adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
678adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
679adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
6805cc8cb84ac4a3474cfb666c9b94fd721e4615ca0Jesse Wilson    public void test_nodeExists() throws BackingStoreException {
6815cc8cb84ac4a3474cfb666c9b94fd721e4615ca0Jesse Wilson        AbstractPreferences test = (AbstractPreferences) Preferences.userRoot()
6825cc8cb84ac4a3474cfb666c9b94fd721e4615ca0Jesse Wilson                .node("test");
6835cc8cb84ac4a3474cfb666c9b94fd721e4615ca0Jesse Wilson        try {
6845cc8cb84ac4a3474cfb666c9b94fd721e4615ca0Jesse Wilson            test.nodeExists(null);
6855cc8cb84ac4a3474cfb666c9b94fd721e4615ca0Jesse Wilson            fail("should throw NullPointerException");
6865cc8cb84ac4a3474cfb666c9b94fd721e4615ca0Jesse Wilson        } catch (NullPointerException e) {
6875cc8cb84ac4a3474cfb666c9b94fd721e4615ca0Jesse Wilson            // Expected
6885cc8cb84ac4a3474cfb666c9b94fd721e4615ca0Jesse Wilson        }
6895cc8cb84ac4a3474cfb666c9b94fd721e4615ca0Jesse Wilson
6905cc8cb84ac4a3474cfb666c9b94fd721e4615ca0Jesse Wilson        test.removeNode();
6915cc8cb84ac4a3474cfb666c9b94fd721e4615ca0Jesse Wilson        try {
6925cc8cb84ac4a3474cfb666c9b94fd721e4615ca0Jesse Wilson            test.nodeExists(null);
6935cc8cb84ac4a3474cfb666c9b94fd721e4615ca0Jesse Wilson            fail("should throw NullPointerException");
6945cc8cb84ac4a3474cfb666c9b94fd721e4615ca0Jesse Wilson        } catch (NullPointerException e) {
6955cc8cb84ac4a3474cfb666c9b94fd721e4615ca0Jesse Wilson            // Expected
6965cc8cb84ac4a3474cfb666c9b94fd721e4615ca0Jesse Wilson        }
6975cc8cb84ac4a3474cfb666c9b94fd721e4615ca0Jesse Wilson    }
6985cc8cb84ac4a3474cfb666c9b94fd721e4615ca0Jesse Wilson
699adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testParent() throws BackingStoreException {
700adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractPreferences node = (AbstractPreferences) pref.node("First node/sub node");
701f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
702adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(node.parent().name().compareTo("First node") == 0);
703adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
704adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
705adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
706adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
707adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            node.parent();
708adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
709adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
710adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
711adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
712adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
713adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
714adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testNode() throws BackingStoreException {
715adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractPreferences first = (AbstractPreferences) pref.node("First node");
716adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractPreferences second = (AbstractPreferences) pref.node("Second node");
717f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
718adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
719adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            first.node("blabla/");
720adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
721adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
722adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
723adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
724f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
725adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
726adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            first.node("///invalid");
727adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
728adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
729adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
730adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
731f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
732adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        StringBuffer sb = new StringBuffer();
733f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
734adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (int i = 0; i < Preferences.MAX_NAME_LENGTH; i++) {
735adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            sb.append('c');
736adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
737adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        first.node(new String(sb));
738adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        sb.append('c');
739f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
740adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
741adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            first.node(new String(sb));
742adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
743adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
744adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
745adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
746adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
747adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        second.removeNode();
748f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
749adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
750adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            second.node("");
751adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
752adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
753adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
754adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
755adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
756adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
757adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            first.node("");
758adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
759adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
760adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
761adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
762adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
763adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
764adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testNodeExists() throws BackingStoreException {
765adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractPreferences ap1 = (AbstractPreferences) pref.node("First node");
766adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractPreferences ap2 = (AbstractPreferences) pref.node("Second node");
767adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putInt("IntegerValue", 33);
768adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putBoolean("BoolValue", true);
769adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
770f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
771adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(pref.nodeExists("First node"));
772adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(pref.nodeExists("Second node"));
773adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(pref.nodeExists("IntegerValue"));
774adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(pref.nodeExists("BoolValue"));
775adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(pref.nodeExists("Value"));
776adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(pref.nodeExists(nodeName));
777f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
778adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
779adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.nodeExists("///invalid");
780adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
781adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
782adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
783adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
784f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
785adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
786f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
787adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
788adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.nodeExists("Exception");
789adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
790adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
791adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
792adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
793adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
794adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
795adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testRemoveNode() throws BackingStoreException {
796adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] nodeArray = new String[]{"First node", "Second node", "Last node"};
797adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        int i;
798adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.put("Key", "String");
799adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for (i = 0; i < nodeArray.length; i++) {
800adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.node(nodeArray[i]);
801adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
802adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
803f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
804adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String[] str = pref.childrenNames();
805adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(nodeArray.length, str.length);
806adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        for(i = 0; i < nodeArray.length; i++) {
807adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.node(nodeArray[i]).removeNode();
808adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            str = pref.childrenNames();
809adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            assertEquals(nodeArray.length - i - 1, str.length);
810adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
811adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1, pref.keys().length);
812adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.node("Key").removeNode();
813adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1, pref.keys().length);
814f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
815adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
816f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
817adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
818adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.removeNode();
819adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
820adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
821adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
822adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
823f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
824adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
825adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            root.removeNode();
826adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("UnsupportedOperationException expected");
827adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (UnsupportedOperationException e) {
828adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
829adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
830adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
831adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
832adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testName() {
833adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractPreferences first = (AbstractPreferences) pref.node("First node");
834adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractPreferences second = (AbstractPreferences) pref.node("Second node/sub node");
835adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
836adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(first.name().compareTo("First node") == 0);
837adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(first.name().compareTo("Second node") == 0);
838adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(second.name().compareTo("sub node") == 0);
839adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
840adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
841adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testAbsolutePath() {
842adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(parent.absolutePath() + "/" + nodeName, pref.absolutePath());
843adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(parent.absolutePath() + "/" + "new node", parent.node("new node").absolutePath());
844adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
845adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
846adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testIsUserNode() {
847adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(parent.isUserNode());
848adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertFalse(Preferences.systemRoot().isUserNode());
849adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
850adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
851adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testSync() throws BackingStoreException {
852adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.node("new node/sub node");
853adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.sync();
854f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
855adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
856f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
857adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
858adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.sync();
859adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
860adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
861adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
862adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
863adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
864adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
865adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    class MockPreferenceChangeListener implements PreferenceChangeListener {
866adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        private boolean flagChange = false;
867adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
868f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        public synchronized void preferenceChange(PreferenceChangeEvent arg0) {
869adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            flagChange = true;
870f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson            notifyAll();
871adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
872f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
873f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        public synchronized void assertChanged(boolean expected) throws InterruptedException {
874f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson            wait(100);
875f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson            assertEquals(expected, flagChange);
876adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            flagChange = false;
877adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
878adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
879f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
880f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson    public void testAddPreferenceChangeListener() throws Exception {
881adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MockPreferenceChangeListener mpcl = new MockPreferenceChangeListener();
882adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.addPreferenceChangeListener(mpcl);
883f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mpcl.assertChanged(false);
884adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.node("new node");
885f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mpcl.assertChanged(false);
886adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.node("new node");
887f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mpcl.assertChanged(false);
888adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.putInt("IntValue", 33);
889f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mpcl.assertChanged(true);
890adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(33, parent.getInt("IntValue", 22));
891f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mpcl.assertChanged(false);
892adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(22, parent.getInt("Missed Value", 22));
893f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mpcl.assertChanged(false);
894adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
895adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
896f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson    public void testRemovePreferenceChangeListener() throws Exception {
897adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MockPreferenceChangeListener mpcl = new MockPreferenceChangeListener();
898adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.addPreferenceChangeListener(mpcl);
899f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mpcl.assertChanged(false);
900adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.putInt("IntValue", 33);
901f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mpcl.assertChanged(true);
902adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.removePreferenceChangeListener(mpcl);
903adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.putInt("IntValue", 33);
904f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mpcl.assertChanged(false);
905adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
906adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
907adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    class MockNodeChangeListener implements NodeChangeListener {
908adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        private boolean flagAdded = false;
909adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        private boolean flagRemoved = false;
910adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
911f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        public synchronized void childAdded(NodeChangeEvent arg0) {
912adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            flagAdded = true;
913f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson            notifyAll();
914adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
915adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
916f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        public synchronized void childRemoved(NodeChangeEvent arg0) {
917adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            flagRemoved = true;
918f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson            notifyAll();
919adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
920f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
921f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        public synchronized void assertAdded(boolean expected) throws InterruptedException {
922f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson            wait(100);
923f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson            assertEquals(expected, flagAdded);
924adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
925f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
926f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        public synchronized void assertRemoved(boolean expected) throws InterruptedException {
927f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson            wait(100);
928f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson            assertEquals(expected, flagRemoved);
929adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
930adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
931f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
932f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson    public void testAddNodeChangeListener() throws Exception {
933adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MockNodeChangeListener mncl = new MockNodeChangeListener();
934adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.addNodeChangeListener(mncl);
935adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.node("test");
936f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mncl.assertAdded(false);
937f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mncl.assertRemoved(false);
938adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
939f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mncl.assertAdded(false);
940f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mncl.assertRemoved(true);
941adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.node("new node");
942f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mncl.assertAdded(true);
943f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mncl.assertRemoved(true);
944adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
945adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
946f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson    public void testRemoveNodeChangeListener() throws BackingStoreException, InterruptedException {
947adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        MockNodeChangeListener mncl = new MockNodeChangeListener();
948adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.addNodeChangeListener(mncl);
949adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.node("test");
950f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mncl.assertAdded(false);
951f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mncl.assertRemoved(false);
952adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.removeNodeChangeListener(mncl);
953adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
954f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mncl.assertAdded(false);
955f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mncl.assertRemoved(false);
956adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        parent.node("new node");
957f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mncl.assertAdded(false);
958f296f0cb984fb2435bedad23439c1fdc2ad61bd0Jesse Wilson        mncl.assertRemoved(false);
959adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
960adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
961adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testExportNode() throws BackingStoreException, IOException, InvalidPreferencesFormatException {
962adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractPreferences ap = (AbstractPreferences) pref.node("New node");
963adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putInt("IntValue", 33);
964adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putBoolean("BoolValue", true);
965adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
966f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
967adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ByteArrayOutputStream baos = new ByteArrayOutputStream();
968f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
969adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.exportNode(baos);
970adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
971f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
972adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(pref.getBoolean("BoolValue", false));
973adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(33, pref.getInt("IntValue", 22));
974adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(1, pref.childrenNames().length);
975f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
976adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String xmlData = new String(baos.toByteArray());
977adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
978adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(xmlData.contains("IntValue"));
979adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(xmlData.contains("BoolValue"));
980adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(xmlData.contains("33"));
981adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(xmlData.contains("true"));
982f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
983adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
984f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
985adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
986adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.exportNode(new ByteArrayOutputStream());
987adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
988adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
989adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
990adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
991f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
992adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
993adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.getBoolean("BoolValue", false);
994adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
995adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
996adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
997adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
998adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref = (AbstractPreferences) parent.node(nodeName);
999adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1000adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.importPreferences(bais);
1001f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1002adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(pref.getBoolean("BoolValue", false));
1003adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(33, pref.getInt("IntValue", 22));
1004adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(0, pref.childrenNames().length);
1005adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1006adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1007adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testExportSubtree() throws BackingStoreException, IOException, InvalidPreferencesFormatException {
1008adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractPreferences ap1 = (AbstractPreferences) pref.node("First node");
1009adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        AbstractPreferences ap2 = (AbstractPreferences) pref.node("Second node");
1010adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putInt("IntegerValue", 33);
1011adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.putBoolean("BoolValue", true);
1012adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.flush();
1013adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1014adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ap1.putInt("FirstIntValue", 11);
1015adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ap2.putDouble("DoubleValue", new Double(6.626e-34));
1016f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1017adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ByteArrayOutputStream baos = new ByteArrayOutputStream();
1018f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1019adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.exportSubtree(baos);
1020adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
1021f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1022adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(pref.getBoolean("BoolValue", false));
1023adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(33, pref.getInt("IntegerValue", 22));
1024adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(2, pref.childrenNames().length);
1025adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(11, ap1.getInt("FirstIntValue", 22));
1026adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Double(6.626e-34), ap2.getDouble("DoubleValue", new Double (3.14)));
1027f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1028adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        String xmlData = new String(baos.toByteArray());
1029adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1030adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(xmlData.contains("IntegerValue"));
1031adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(xmlData.contains("BoolValue"));
1032adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(xmlData.contains("FirstIntValue"));
1033adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(xmlData.contains("DoubleValue"));
1034adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(xmlData.contains("33"));
1035adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(xmlData.contains("true"));
1036adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(xmlData.contains("11"));
1037adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(xmlData.contains("6.626E-34"));
1038f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1039adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.removeNode();
1040f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1041adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1042adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.exportSubtree(new ByteArrayOutputStream());
1043adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
1044adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
1045adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
1046adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1047f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1048adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1049adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            pref.getBoolean("BoolValue", false);
1050adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalStateException expected");
1051adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalStateException e) {
1052adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
1053adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1054adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref = (AbstractPreferences) parent.node(nodeName);
1055adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.importPreferences(bais);
1056adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1057adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ap1 = (AbstractPreferences) pref.node("First node");
1058adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        ap2 = (AbstractPreferences) pref.node("Second node");
1059f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1060adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertTrue(pref.getBoolean("BoolValue", false));
1061adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(33, pref.getInt("IntegerValue", 22));
1062adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(2, pref.childrenNames().length);
1063adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(11, ap1.getInt("FirstIntValue", 22));
1064adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(new Double(6.626e-34), ap2.getDouble("DoubleValue", new Double (3.14)));
1065adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1066f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1067adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    class MockAbstractPreferences extends AbstractPreferences {
1068adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected MockAbstractPreferences(AbstractPreferences parent, String name) {
1069adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            super(parent, name);
1070adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1071adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1072adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
1073adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected AbstractPreferences childSpi(String name) {
1074adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
1075adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1076adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1077adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
1078adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected String[] childrenNamesSpi() throws BackingStoreException {
1079adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
1080adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1081adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1082adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
1083adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected void flushSpi() throws BackingStoreException {
1084adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1085adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1086adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
1087adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected String getSpi(String key) {
1088adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
1089adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1090adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1091adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
1092adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected String[] keysSpi() throws BackingStoreException {
1093adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            return null;
1094adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1095adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1096adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
1097adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected void putSpi(String key, String value) {
1098adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1099adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
1101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected void removeNodeSpi() throws BackingStoreException {
1102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1104adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
1105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected void removeSpi(String key) {
1106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1108adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        @Override
1109adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        protected void syncSpi() throws BackingStoreException {
1110adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1111adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testAbstractPreferences() {
1114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertNotNull(new MockAbstractPreferences(pref, "node name"));
1115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new MockAbstractPreferences(pref, "node/name");
1117adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
1118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
1119adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
1120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        try {
1123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            new MockAbstractPreferences(null, "node");
1124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            fail("IllegalArgumentException expected");
1125adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        } catch (IllegalArgumentException e) {
1126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project            //expected
1127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        }
1128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project
1130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    public void testCachedChildren() throws BackingStoreException {
1131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.node("First node");
1132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        pref.node("Second node");
1133f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes
1134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project        assertEquals(2, pref.childrenNames().length);
1135adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project    }
1136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project}
1137