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