| /* Licensed to the Apache Software Foundation (ASF) under one or more |
| * contributor license agreements. See the NOTICE file distributed with |
| * this work for additional information regarding copyright ownership. |
| * The ASF licenses this file to You under the Apache License, Version 2.0 |
| * (the "License"); you may not use this file except in compliance with |
| * the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, software |
| * distributed under the License is distributed on an "AS IS" BASIS, |
| * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
| * See the License for the specific language governing permissions and |
| * limitations under the License. |
| */ |
| |
| package org.apache.harmony.prefs.tests.java.util.prefs; |
| |
| import dalvik.annotation.TestLevel; |
| import dalvik.annotation.TestTargetClass; |
| import dalvik.annotation.TestTargetNew; |
| import dalvik.annotation.TestTargets; |
| import junit.framework.TestCase; |
| |
| import java.io.ByteArrayInputStream; |
| import java.io.IOException; |
| import java.io.InputStream; |
| import java.io.OutputStream; |
| import java.io.UnsupportedEncodingException; |
| import java.net.MalformedURLException; |
| import java.util.Arrays; |
| import java.util.prefs.AbstractPreferences; |
| import java.util.prefs.BackingStoreException; |
| import java.util.prefs.InvalidPreferencesFormatException; |
| import java.util.prefs.NodeChangeListener; |
| import java.util.prefs.PreferenceChangeListener; |
| import java.util.prefs.Preferences; |
| |
| /** |
| * |
| */ |
| @TestTargetClass(Preferences.class) |
| public class PreferencesTest extends TestCase { |
| |
| MockInputStream stream = null; |
| |
| final static String longKey; |
| |
| final static String longValue; |
| |
| InputStream in; |
| static { |
| StringBuffer key = new StringBuffer(Preferences.MAX_KEY_LENGTH); |
| for (int i = 0; i < Preferences.MAX_KEY_LENGTH; i++) { |
| key.append('a'); |
| } |
| longKey = key.toString(); |
| |
| StringBuffer value = new StringBuffer(Preferences.MAX_VALUE_LENGTH); |
| for (int i = 0; i < Preferences.MAX_VALUE_LENGTH; i++) { |
| value.append('a'); |
| } |
| longValue = value.toString(); |
| } |
| |
| /* |
| * @see TestCase#setUp() |
| */ |
| @Override |
| protected void setUp() throws Exception { |
| super.setUp(); |
| in = new ByteArrayInputStream( |
| "<!DOCTYPE preferences SYSTEM \"http://java.sun.com/dtd/preferences.dtd\"><preferences><root type=\"user\"><map></map></root></preferences>" |
| .getBytes("UTF-8")); |
| stream = new MockInputStream(in); |
| } |
| |
| /* |
| * @see TestCase#tearDown() |
| */ |
| @Override |
| protected void tearDown() throws Exception { |
| stream.close(); |
| super.tearDown(); |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "systemNodeForPackage", |
| args = {java.lang.Class.class} |
| ) |
| public void testSystemNodeForPackage() { |
| Preferences p = null; |
| try { |
| p = Preferences.systemNodeForPackage(Object.class); |
| } catch (SecurityException e) { |
| // may be caused by absence of privileges on the underlying OS |
| return; |
| } |
| assertEquals("/java/lang", p.absolutePath()); |
| assertTrue(p instanceof AbstractPreferences); |
| Preferences root = Preferences.systemRoot(); |
| Preferences parent = root.node("java"); |
| assertSame(parent, p.parent()); |
| assertFalse(p.isUserNode()); |
| assertEquals("lang", p.name()); |
| assertEquals("System Preference Node: " + p.absolutePath(), p |
| .toString()); |
| try { |
| assertEquals(0, p.childrenNames().length); |
| } catch (BackingStoreException e) { |
| // could be thrown according to specification |
| } |
| try { |
| assertEquals(0, p.keys().length); |
| } catch (BackingStoreException e) { |
| // could be thrown according to specification |
| } |
| |
| try { |
| p = Preferences.systemNodeForPackage(null); |
| fail("NullPointerException has not been thrown"); |
| } catch (NullPointerException e) { |
| // expected |
| } |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "SecurityException checking missed.", |
| method = "systemRoot", |
| args = {} |
| ) |
| public void testSystemRoot() { |
| Preferences p = Preferences.systemRoot(); |
| assertTrue(p instanceof AbstractPreferences); |
| assertEquals("/", p.absolutePath()); |
| assertSame(null, p.parent()); |
| assertFalse(p.isUserNode()); |
| assertEquals("", p.name()); |
| assertEquals("System Preference Node: " + p.absolutePath(), p |
| .toString()); |
| // assertEquals(0, p.childrenNames().length); |
| // assertEquals(0, p.keys().length); |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Checks constant values", |
| method = "!Constants", |
| args = {} |
| ) |
| public void testConsts() { |
| assertEquals(80, Preferences.MAX_KEY_LENGTH); |
| assertEquals(80, Preferences.MAX_NAME_LENGTH); |
| assertEquals(8192, Preferences.MAX_VALUE_LENGTH); |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "SecurityException checking missed.", |
| method = "userNodeForPackage", |
| args = {java.lang.Class.class} |
| ) |
| public void testUserNodeForPackage() throws BackingStoreException { |
| Preferences p = Preferences.userNodeForPackage(Object.class); |
| assertEquals("/java/lang", p.absolutePath()); |
| assertTrue(p instanceof AbstractPreferences); |
| Preferences root = Preferences.userRoot(); |
| Preferences parent = root.node("java"); |
| assertSame(parent, p.parent()); |
| assertTrue(p.isUserNode()); |
| assertEquals("lang", p.name()); |
| assertEquals("User Preference Node: " + p.absolutePath(), p.toString()); |
| assertEquals(0, p.childrenNames().length); |
| assertEquals(0, p.keys().length); |
| |
| try { |
| p = Preferences.userNodeForPackage(null); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "SecurityException checking missed.", |
| method = "userRoot", |
| args = {} |
| ) |
| public void testUserRoot() { |
| Preferences p = Preferences.userRoot(); |
| assertTrue(p instanceof AbstractPreferences); |
| assertEquals("/", p.absolutePath()); |
| assertSame(null, p.parent()); |
| assertTrue(p.isUserNode()); |
| assertEquals("", p.name()); |
| assertEquals("User Preference Node: " + p.absolutePath(), p.toString()); |
| // assertEquals(0, p.childrenNames().length); |
| // assertEquals(p.keys().length, 0); |
| } |
| |
| |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "SecurityException & IOException checking missed.", |
| method = "importPreferences", |
| args = {java.io.InputStream.class} |
| ) |
| public void testImportPreferences2() throws Exception { |
| InputStream in = PreferencesTest.class |
| .getResourceAsStream("/prefs/java/util/prefs/userprefs-badtype.xml"); |
| try { |
| Preferences.importPreferences(in); |
| fail(); |
| } catch (InvalidPreferencesFormatException e) { |
| } |
| |
| in = PreferencesTest.class |
| .getResourceAsStream("/prefs/java/util/prefs/userprefs-badencoding.xml"); |
| try { |
| Preferences.importPreferences(in); |
| fail(); |
| } catch (InvalidPreferencesFormatException e) { |
| } catch (UnsupportedEncodingException e) { |
| } |
| |
| } |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "SecurityException & IOException checking missed.", |
| method = "importPreferences", |
| args = {java.io.InputStream.class} |
| ) |
| public void testImportPreferences() throws Exception { |
| Preferences prefs = null; |
| try { |
| prefs = Preferences.userNodeForPackage(PreferencesTest.class); |
| // assertEquals(0, prefs.childrenNames().length); |
| // assertFalse(prefs.nodeExists("mock/child/grandson")); |
| |
| prefs.put("prefskey", "oldvalue"); |
| prefs.put("prefskey2", "oldvalue2"); |
| in = getClass().getResourceAsStream("/prefs/java/util/prefs/userprefs.xml"); |
| Preferences.importPreferences(in); |
| |
| prefs = Preferences.userNodeForPackage(PreferencesTest.class); |
| assertEquals(1, prefs.childrenNames().length); |
| assertTrue(prefs.nodeExists("mock/child/grandson")); |
| assertEquals("newvalue", prefs.get("prefskey", null)); |
| assertEquals("oldvalue2", prefs.get("prefskey2", null)); |
| assertEquals("newvalue3", prefs.get("prefskey3", null)); |
| |
| in = PreferencesTest.class |
| .getResourceAsStream("/prefs/java/util/prefs/userprefs-badform.xml"); |
| try { |
| Preferences.importPreferences(in); |
| fail(); |
| } catch (InvalidPreferencesFormatException e) { |
| } |
| |
| in = PreferencesTest.class |
| .getResourceAsStream("/prefs/java/util/prefs/userprefs-higherversion.xml"); |
| try { |
| Preferences.importPreferences(in); |
| fail(); |
| } catch (InvalidPreferencesFormatException e) { |
| } |
| |
| in = PreferencesTest.class |
| .getResourceAsStream("/prefs/java/util/prefs/userprefs-ascii.xml"); |
| Preferences.importPreferences(in); |
| prefs = Preferences.userNodeForPackage(PreferencesTest.class); |
| } finally { |
| try { |
| prefs = Preferences.userRoot().node("tests"); |
| prefs.removeNode(); |
| } catch (Exception e) { |
| } |
| } |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.PARTIAL_COMPLETE, |
| notes = "Test for Exceptions only.", |
| method = "importPreferences", |
| args = {java.io.InputStream.class} |
| ) |
| public void testImportPreferencesException() throws Exception { |
| try { |
| Preferences.importPreferences(null); |
| fail(); |
| } catch (MalformedURLException e) { |
| } |
| |
| byte[] source = new byte[0]; |
| InputStream in = new ByteArrayInputStream(source); |
| try { |
| Preferences.importPreferences(in); |
| fail(); |
| } catch (InvalidPreferencesFormatException e) { |
| } |
| |
| stream.setResult(MockInputStream.exception); |
| try { |
| Preferences.importPreferences(stream); |
| fail(); |
| } catch (IOException e) { |
| } |
| |
| stream.setResult(MockInputStream.runtimeException); |
| try { |
| Preferences.importPreferences(stream); |
| fail(); |
| } catch (RuntimeException e) { |
| } |
| } |
| |
| @TestTargets({ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "absolutePath", |
| args = {} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "childrenNames", |
| args = {} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "clear", |
| args = {} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "exportNode", |
| args = {java.io.OutputStream.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "exportSubtree", |
| args = {java.io.OutputStream.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "flush", |
| args = {} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "get", |
| args = {java.lang.String.class, java.lang.String.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "getBoolean", |
| args = {java.lang.String.class, boolean.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "getByteArray", |
| args = {java.lang.String.class, byte[].class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "getFloat", |
| args = {java.lang.String.class, float.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "getDouble", |
| args = {java.lang.String.class, double.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "getInt", |
| args = {java.lang.String.class, int.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "getLong", |
| args = {java.lang.String.class, long.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "isUserNode", |
| args = {} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "keys", |
| args = {} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "name", |
| args = {} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "node", |
| args = {java.lang.String.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "nodeExists", |
| args = {java.lang.String.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "parent", |
| args = {} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "put", |
| args = {java.lang.String.class, java.lang.String.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "putBoolean", |
| args = {java.lang.String.class, boolean.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "putByteArray", |
| args = {java.lang.String.class, byte[].class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "putDouble", |
| args = {java.lang.String.class, double.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "putFloat", |
| args = {java.lang.String.class, float.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "putInt", |
| args = {java.lang.String.class, int.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "putLong", |
| args = {java.lang.String.class, long.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "remove", |
| args = {java.lang.String.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "removeNode", |
| args = {} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "addNodeChangeListener", |
| args = {java.util.prefs.NodeChangeListener.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "addPreferenceChangeListener", |
| args = {java.util.prefs.PreferenceChangeListener.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "removeNodeChangeListener", |
| args = {java.util.prefs.NodeChangeListener.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "removePreferenceChangeListener", |
| args = {java.util.prefs.PreferenceChangeListener.class} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "sync", |
| args = {} |
| ), |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Test for abstract methods.", |
| method = "toString", |
| args = {} |
| ) |
| }) |
| public void testAbstractMethods() { |
| Preferences p = new MockPreferences(); |
| p.absolutePath(); |
| try { |
| p.childrenNames(); |
| } catch (BackingStoreException e4) { |
| } |
| try { |
| p.clear(); |
| } catch (BackingStoreException e5) { |
| } |
| try { |
| p.exportNode(null); |
| } catch (IOException e6) { |
| } catch (BackingStoreException e6) { |
| } |
| try { |
| p.exportSubtree(null); |
| } catch (IOException e7) { |
| } catch (BackingStoreException e7) { |
| } |
| try { |
| p.flush(); |
| } catch (BackingStoreException e8) { |
| } |
| p.get(null, null); |
| p.getBoolean(null, false); |
| p.getByteArray(null, null); |
| p.getFloat(null, 0.1f); |
| p.getDouble(null, 0.1); |
| p.getInt(null, 1); |
| p.getLong(null, 1l); |
| p.isUserNode(); |
| try { |
| p.keys(); |
| } catch (BackingStoreException e) { |
| } |
| p.name(); |
| p.node(null); |
| try { |
| p.nodeExists(null); |
| } catch (BackingStoreException e1) { |
| } |
| p.parent(); |
| p.put(null, null); |
| p.putBoolean(null, false); |
| p.putByteArray(null, null); |
| p.putDouble(null, 1); |
| p.putFloat(null, 1f); |
| p.putInt(null, 1); |
| p.putLong(null, 1l); |
| p.remove(null); |
| try { |
| p.removeNode(); |
| } catch (BackingStoreException e2) { |
| } |
| p.addNodeChangeListener(null); |
| p.addPreferenceChangeListener(null); |
| p.removeNodeChangeListener(null); |
| p.removePreferenceChangeListener(null); |
| try { |
| p.sync(); |
| } catch (BackingStoreException e3) { |
| } |
| p.toString(); |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "Preferences", |
| args = {} |
| ) |
| public void testConstructor() { |
| MockPreferences mp = new MockPreferences(); |
| assertEquals(mp.getClass(), MockPreferences.class); |
| } |
| |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "Check existed implementation", |
| method = "toString", |
| args = {} |
| ) |
| public void testToString() { |
| Preferences p1 = Preferences.userNodeForPackage(Preferences.class); |
| assertNotNull(p1.toString()); |
| |
| Preferences p2 = Preferences.systemRoot(); |
| assertNotNull(p2.toString()); |
| |
| Preferences p3 = Preferences.userRoot(); |
| assertNotNull(p3.toString()); |
| } |
| /** |
| * @test java.util.prefs.Preferences#absolutePath() |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "absolutePath", |
| args = {} |
| ) |
| public void testAbsolutePath() { |
| Preferences p = Preferences.userNodeForPackage(Preferences.class); |
| assertEquals("/java/util/prefs", p.absolutePath()); |
| |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#childrenNames() |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "IllegalStateException checking missed, but method is abstract, probably it is OK", |
| method = "childrenNames", |
| args = {} |
| ) |
| public void testChildrenNames() throws BackingStoreException { |
| Preferences pref = Preferences.userNodeForPackage(Preferences.class); |
| |
| Preferences child1 = pref.node("child1"); |
| |
| pref.node("child2"); |
| pref.node("child3"); |
| child1.node("subchild1"); |
| |
| assertSame(pref, child1.parent()); |
| assertEquals(3, pref.childrenNames().length); |
| assertEquals("child1", pref.childrenNames()[0]); |
| assertEquals(1, child1.childrenNames().length); |
| assertEquals("subchild1", child1.childrenNames()[0]); |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#clear() |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "IllegalStateException checking missed, but method is abstract, probably it is OK", |
| method = "clear", |
| args = {} |
| ) |
| public void testClear() throws BackingStoreException { |
| Preferences pref = Preferences.userNodeForPackage(Preferences.class); |
| pref.put("testClearKey", "testClearValue"); |
| pref.put("testClearKey1", "testClearValue1"); |
| assertEquals("testClearValue", pref.get("testClearKey", null)); |
| assertEquals("testClearValue1", pref.get("testClearKey1", null)); |
| pref.clear(); |
| assertNull(pref.get("testClearKey", null)); |
| assertNull(pref.get("testClearKey1", null)); |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#get(String key, String def) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "get", |
| args = {java.lang.String.class, java.lang.String.class} |
| ) |
| public void testGet() throws BackingStoreException { |
| Preferences root = Preferences.userNodeForPackage(Preferences.class); |
| Preferences pref = root.node("mock"); |
| assertNull(pref.get("", null)); |
| assertEquals("default", pref.get("key", "default")); |
| assertNull(pref.get("key", null)); |
| pref.put("testGetkey", "value"); |
| assertNull(pref.get("testGetKey", null)); |
| assertEquals("value", pref.get("testGetkey", null)); |
| |
| try { |
| pref.get(null, "abc"); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| pref.get("", "abc"); |
| pref.get("key", null); |
| pref.get("key", ""); |
| pref.putFloat("floatKey", 1.0f); |
| assertEquals("1.0", pref.get("floatKey", null)); |
| |
| pref.removeNode(); |
| try { |
| pref.get("key", "abc"); |
| fail(); |
| } catch (IllegalStateException e) { |
| } |
| try { |
| pref.get(null, "abc"); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#getBoolean(String key, boolean def) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "IllegalStateException checking missed, but method is abstract, probably it is OK", |
| method = "getBoolean", |
| args = {java.lang.String.class, boolean.class} |
| ) |
| public void testGetBoolean() { |
| Preferences pref = Preferences.userNodeForPackage(Preferences.class); |
| try { |
| pref.getBoolean(null, false); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| |
| pref.put("testGetBooleanKey", "false"); |
| pref.put("testGetBooleanKey2", "value"); |
| assertFalse(pref.getBoolean("testGetBooleanKey", true)); |
| assertTrue(pref.getBoolean("testGetBooleanKey2", true)); |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#getByteArray(String key, byte[] def) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "IllegalStateException checking missed, but method is abstract, probably it is OK", |
| method = "getByteArray", |
| args = {java.lang.String.class, byte[].class} |
| ) |
| public void testGetByteArray() { |
| Preferences pref = Preferences.userNodeForPackage(Preferences.class); |
| try { |
| pref.getByteArray(null, new byte[0]); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| byte[] b64Array = new byte[] { 0x59, 0x57, 0x4a, 0x6a };// BASE64 |
| |
| pref.put("testGetByteArrayKey", "abc="); |
| pref.put("testGetByteArrayKey2", new String(b64Array)); |
| pref.put("invalidKey", "<>?"); |
| assertTrue(Arrays.equals(new byte[] { 105, -73 }, pref.getByteArray( |
| "testGetByteArrayKey", new byte[0]))); |
| assertTrue(Arrays.equals(new byte[] { 'a', 'b', 'c' }, pref |
| .getByteArray("testGetByteArrayKey2", new byte[0]))); |
| assertTrue(Arrays.equals(new byte[0], pref.getByteArray("invalidKey", |
| new byte[0]))); |
| |
| pref.putByteArray("testGetByteArrayKey3", b64Array); |
| pref.putByteArray("testGetByteArrayKey4", "abc".getBytes()); |
| assertTrue(Arrays.equals(b64Array, pref.getByteArray( |
| "testGetByteArrayKey3", new byte[0]))); |
| assertTrue(Arrays.equals("abc".getBytes(), pref.getByteArray( |
| "testGetByteArrayKey4", new byte[0]))); |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#getDouble(String key, double def) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "IllegalStateException checking missed, but method is abstract, probably it is OK", |
| method = "getDouble", |
| args = {java.lang.String.class, double.class} |
| ) |
| public void testGetDouble() { |
| Preferences pref = Preferences.userNodeForPackage(Preferences.class); |
| try { |
| pref.getDouble(null, 0); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| |
| pref.put("testGetDoubleKey", "1"); |
| pref.put("testGetDoubleKey2", "value"); |
| pref.putDouble("testGetDoubleKey3", 1); |
| pref.putInt("testGetDoubleKey4", 1); |
| assertEquals(1.0, pref.getDouble("testGetDoubleKey", 0.0), 0); |
| assertEquals(0.0, pref.getDouble("testGetDoubleKey2", 0.0), 0); |
| assertEquals(1.0, pref.getDouble("testGetDoubleKey3", 0.0), 0); |
| assertEquals(1.0, pref.getDouble("testGetDoubleKey4", 0.0), 0); |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#getFloat(String key, float def) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "IllegalStateException checking missed, but method is abstract, probably it is OK", |
| method = "getFloat", |
| args = {java.lang.String.class, float.class} |
| ) |
| public void testGetFloat() { |
| Preferences pref = Preferences.userNodeForPackage(Preferences.class); |
| try { |
| pref.getFloat(null, 0f); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| pref.put("testGetFloatKey", "1"); |
| pref.put("testGetFloatKey2", "value"); |
| assertEquals(1f, pref.getFloat("testGetFloatKey", 0f), 0); |
| assertEquals(0f, pref.getFloat("testGetFloatKey2", 0f), 0); |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#getInt(String key, int def) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "IllegalStateException checking missed, but method is abstract, probably it is OK", |
| method = "getInt", |
| args = {java.lang.String.class, int.class} |
| ) |
| public void testGetInt() { |
| Preferences pref = Preferences.userNodeForPackage(Preferences.class); |
| try { |
| pref.getInt(null, 0); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| |
| pref.put("testGetIntKey", "1"); |
| pref.put("testGetIntKey2", "value"); |
| assertEquals(1, pref.getInt("testGetIntKey", 0)); |
| assertEquals(0, pref.getInt("testGetIntKey2", 0)); |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#getLong(String key, long def) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "IllegalStateException checking missed, but method is abstract, probably it is OK", |
| method = "getLong", |
| args = {java.lang.String.class, long.class} |
| ) |
| public void testGetLong() { |
| Preferences pref = Preferences.userNodeForPackage(Preferences.class); |
| try { |
| pref.getLong(null, 0); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| |
| pref.put("testGetLongKey", "1"); |
| pref.put("testGetLongKey2", "value"); |
| assertEquals(1, pref.getInt("testGetLongKey", 0)); |
| assertEquals(0, pref.getInt("testGetLongKey2", 0)); |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#isUserNode() |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "isUserNode", |
| args = {} |
| ) |
| public void testIsUserNode() { |
| Preferences pref1 = Preferences.userNodeForPackage(Preferences.class); |
| assertTrue(pref1.isUserNode()); |
| |
| Preferences pref2 = Preferences.systemNodeForPackage(Preferences.class); |
| assertFalse(pref2.isUserNode()); |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#keys() |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "Exceptions checking missed, but method is abstract, probably it is OK", |
| method = "keys", |
| args = {} |
| ) |
| public void testKeys() throws BackingStoreException { |
| Preferences pref = Preferences.userNodeForPackage(Preferences.class); |
| pref.clear(); |
| |
| pref.put("key0", "value"); |
| pref.put("key1", "value1"); |
| pref.put("key2", "value2"); |
| pref.put("key3", "value3"); |
| |
| String[] keys = pref.keys(); |
| assertEquals(4, keys.length); |
| for (int i = 0; i < keys.length; i++) { |
| assertEquals(0, keys[i].indexOf("key")); |
| assertEquals(4, keys[i].length()); |
| } |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#name() |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "name", |
| args = {} |
| ) |
| public void testName() { |
| Preferences pref = Preferences.userNodeForPackage(Preferences.class); |
| Preferences child = pref.node("mock"); |
| assertEquals("mock", child.name()); |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#node(String pathName) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "IllegalStateException checking missed, but method is abstract, probably it is OK", |
| method = "node", |
| args = {java.lang.String.class} |
| ) |
| public void testNode() throws BackingStoreException { |
| StringBuffer name = new StringBuffer(Preferences.MAX_NAME_LENGTH); |
| for (int i = 0; i < Preferences.MAX_NAME_LENGTH; i++) { |
| name.append('a'); |
| } |
| String longName = name.toString(); |
| |
| Preferences root = Preferences.userRoot(); |
| Preferences parent = Preferences |
| .userNodeForPackage(Preferences.class); |
| Preferences pref = parent.node("mock"); |
| |
| try { |
| pref.node(null); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| try { |
| pref.node("/java/util/prefs/"); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| try { |
| pref.node("/java//util/prefs"); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| try { |
| pref.node(longName + "a"); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| assertNotNull(pref.node(longName)); |
| |
| assertSame(root, pref.node("/")); |
| |
| Preferences prefs = pref.node("/java/util/prefs"); |
| assertSame(prefs, parent); |
| |
| assertSame(pref, pref.node("")); |
| |
| if (!(pref instanceof MockAbstractPreferences)) { |
| return; |
| } |
| MockAbstractPreferences child = (MockAbstractPreferences) ((MockAbstractPreferences) pref) |
| .publicChildSpi("child"); |
| assertSame(child, pref.node("child")); |
| |
| Preferences child2 = pref.node("child2"); |
| assertSame(child2, ((MockAbstractPreferences) pref) |
| .publicChildSpi("child2")); |
| |
| Preferences grandchild = pref.node("child/grandchild"); |
| assertSame(grandchild, child.childSpi("grandchild")); |
| assertSame(grandchild, child.cachedChildrenImpl()[0]); |
| grandchild.removeNode(); |
| assertNotSame(grandchild, pref.node("child/grandchild")); |
| |
| grandchild = pref.node("child3/grandchild"); |
| AbstractPreferences[] childs = ((MockAbstractPreferences) pref) |
| .cachedChildrenImpl(); |
| Preferences child3 = child; |
| for (int i = 0; i < childs.length; i++) { |
| if (childs[i].name().equals("child3")) { |
| child3 = childs[i]; |
| break; |
| } |
| } |
| assertSame(child3, grandchild.parent()); |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#nodeExists(String pathName) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "IllegalStateException & BackingStoreException checking missed, but method is abstract, probably it is OK", |
| method = "nodeExists", |
| args = {java.lang.String.class} |
| ) |
| public void testNodeExists() throws BackingStoreException { |
| |
| Preferences parent = Preferences |
| .userNodeForPackage(Preferences.class); |
| Preferences pref = parent.node("mock"); |
| |
| try { |
| pref.nodeExists(null); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| try { |
| pref.nodeExists("/java/util/prefs/"); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| try { |
| pref.nodeExists("/java//util/prefs"); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| |
| assertTrue(pref.nodeExists("/")); |
| |
| assertTrue(pref.nodeExists("/java/util/prefs")); |
| |
| assertTrue(pref.nodeExists("")); |
| |
| assertFalse(pref.nodeExists("child")); |
| Preferences grandchild = pref.node("child/grandchild"); |
| assertTrue(pref.nodeExists("child")); |
| assertTrue(pref.nodeExists("child/grandchild")); |
| grandchild.removeNode(); |
| assertTrue(pref.nodeExists("child")); |
| assertFalse(pref.nodeExists("child/grandchild")); |
| assertFalse(grandchild.nodeExists("")); |
| |
| assertFalse(pref.nodeExists("child2/grandchild")); |
| pref.node("child2/grandchild"); |
| assertTrue(pref.nodeExists("child2/grandchild")); |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#parent() |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "IllegalStateException checking missed, but method is abstract, probably it is OK", |
| method = "parent", |
| args = {} |
| ) |
| public void testParent() { |
| Preferences parent = Preferences |
| .userNodeForPackage(Preferences.class); |
| Preferences pref = parent.node("mock"); |
| |
| assertSame(parent, pref.parent()); |
| |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#put(String key, String value) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "put", |
| args = {java.lang.String.class, java.lang.String.class} |
| ) |
| public void testPut() throws BackingStoreException { |
| Preferences pref = Preferences |
| .userNodeForPackage(Preferences.class); |
| pref.put("", "emptyvalue"); |
| assertEquals("emptyvalue", pref.get("", null)); |
| pref.put("testPutkey", "value1"); |
| assertEquals("value1", pref.get("testPutkey", null)); |
| pref.put("testPutkey", "value2"); |
| assertEquals("value2", pref.get("testPutkey", null)); |
| |
| pref.put("", "emptyvalue"); |
| assertEquals("emptyvalue", pref.get("", null)); |
| |
| try { |
| pref.put(null, "value"); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| try { |
| pref.put("key", null); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| pref.put(longKey, longValue); |
| try { |
| pref.put(longKey + 1, longValue); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| try { |
| pref.put(longKey, longValue + 1); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| |
| pref.removeNode(); |
| try { |
| pref.put(longKey, longValue + 1); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| |
| try { |
| pref.put(longKey, longValue); |
| fail(); |
| } catch (IllegalStateException e) { |
| } |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#putBoolean(String key, boolean value) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "IllegalStateException checking missed, but method is abstract, probably it is OK", |
| method = "putBoolean", |
| args = {java.lang.String.class, boolean.class} |
| ) |
| public void testPutBoolean() { |
| Preferences pref = Preferences |
| .userNodeForPackage(Preferences.class); |
| try { |
| pref.putBoolean(null, false); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| pref.putBoolean(longKey, false); |
| try { |
| pref.putBoolean(longKey + "a", false); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| pref.putBoolean("testPutBooleanKey", false); |
| assertEquals("false", pref.get("testPutBooleanKey", null)); |
| assertFalse(pref.getBoolean("testPutBooleanKey", true)); |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#putDouble(String key, double value) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "IllegalStateException checking missed, but method is abstract, probably it is OK", |
| method = "putDouble", |
| args = {java.lang.String.class, double.class} |
| ) |
| public void testPutDouble() { |
| Preferences pref = Preferences |
| .userNodeForPackage(Preferences.class); |
| try { |
| pref.putDouble(null, 3); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| pref.putDouble(longKey, 3); |
| try { |
| pref.putDouble(longKey + "a", 3); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| pref.putDouble("testPutDoubleKey", 3); |
| assertEquals("3.0", pref.get("testPutDoubleKey", null)); |
| assertEquals(3, pref.getDouble("testPutDoubleKey", 0), 0); |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#putFloat(String key, float value) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "IllegalStateException checking missed, but method is abstract, probably it is OK", |
| method = "putFloat", |
| args = {java.lang.String.class, float.class} |
| ) |
| public void testPutFloat() { |
| Preferences pref = Preferences |
| .userNodeForPackage(Preferences.class); |
| try { |
| pref.putFloat(null, 3f); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| pref.putFloat(longKey, 3f); |
| try { |
| pref.putFloat(longKey + "a", 3f); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| pref.putFloat("testPutFloatKey", 3f); |
| assertEquals("3.0", pref.get("testPutFloatKey", null)); |
| assertEquals(3f, pref.getFloat("testPutFloatKey", 0), 0); |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#putInt(String key, int value) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "IllegalStateException checking missed, but method is abstract, probably it is OK", |
| method = "putInt", |
| args = {java.lang.String.class, int.class} |
| ) |
| public void testPutInt() { |
| Preferences pref = Preferences |
| .userNodeForPackage(Preferences.class); |
| try { |
| pref.putInt(null, 3); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| pref.putInt(longKey, 3); |
| try { |
| pref.putInt(longKey + "a", 3); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| pref.putInt("testPutIntKey", 3); |
| assertEquals("3", pref.get("testPutIntKey", null)); |
| assertEquals(3, pref.getInt("testPutIntKey", 0)); |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#putLong(String key, long value) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "IllegalStateException checking missed, but method is abstract, probably it is OK", |
| method = "putLong", |
| args = {java.lang.String.class, long.class} |
| ) |
| public void testPutLong() { |
| Preferences pref = Preferences |
| .userNodeForPackage(Preferences.class); |
| try { |
| pref.putLong(null, 3L); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| pref.putLong(longKey, 3L); |
| try { |
| pref.putLong(longKey + "a", 3L); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| pref.putLong("testPutLongKey", 3L); |
| assertEquals("3", pref.get("testPutLongKey", null)); |
| assertEquals(3L, pref.getLong("testPutLongKey", 0)); |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#putByteArray(String key, byte[] value) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "IllegalStateException checking missed, but method is abstract, probably it is OK", |
| method = "putByteArray", |
| args = {java.lang.String.class, byte[].class} |
| ) |
| public void testPutByteArray() { |
| Preferences pref = Preferences |
| .userNodeForPackage(Preferences.class); |
| try { |
| pref.putByteArray(null, new byte[0]); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| try { |
| pref.putByteArray("testPutByteArrayKey4", null); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| |
| pref.putByteArray(longKey, new byte[0]); |
| try { |
| pref.putByteArray(longKey + "a", new byte[0]); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| byte[] longArray = new byte[(int) (Preferences.MAX_VALUE_LENGTH * 0.74)]; |
| byte[] longerArray = new byte[(int) (Preferences.MAX_VALUE_LENGTH * 0.75) + 1]; |
| pref.putByteArray(longKey, longArray); |
| try { |
| pref.putByteArray(longKey, longerArray); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| |
| pref.putByteArray("testPutByteArrayKey", new byte[0]); |
| assertEquals("", pref.get("testPutByteArrayKey", null)); |
| assertTrue(Arrays.equals(new byte[0], pref.getByteArray( |
| "testPutByteArrayKey", null))); |
| |
| pref.putByteArray("testPutByteArrayKey3", new byte[] { 'a', 'b', 'c' }); |
| assertEquals("YWJj", pref.get("testPutByteArrayKey3", null)); |
| assertTrue(Arrays.equals(new byte[] { 'a', 'b', 'c' }, pref |
| .getByteArray("testPutByteArrayKey3", null))); |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#remove(String key) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.COMPLETE, |
| notes = "", |
| method = "remove", |
| args = {java.lang.String.class} |
| ) |
| public void testRemove() throws BackingStoreException { |
| Preferences pref = Preferences |
| .userNodeForPackage(Preferences.class); |
| pref.remove("key"); |
| |
| pref.put("key", "value"); |
| assertEquals("value", pref.get("key", null)); |
| pref.remove("key"); |
| assertNull(pref.get("key", null)); |
| |
| pref.remove("key"); |
| |
| try { |
| pref.remove(null); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| |
| pref.removeNode(); |
| try { |
| pref.remove("key"); |
| fail(); |
| } catch (IllegalStateException e) { |
| } |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#removeNode() |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "Exceptions checking missed, but method is abstract, probably it is OK", |
| method = "removeNode", |
| args = {} |
| ) |
| public void testRemoveNode() throws BackingStoreException { |
| Preferences pref = Preferences |
| .userNodeForPackage(Preferences.class); |
| Preferences child = pref.node("child"); |
| Preferences child1 = pref.node("child1"); |
| Preferences grandchild = child.node("grandchild"); |
| |
| pref.removeNode(); |
| |
| assertFalse(child.nodeExists("")); |
| assertFalse(child1.nodeExists("")); |
| assertFalse(grandchild.nodeExists("")); |
| assertFalse(pref.nodeExists("")); |
| } |
| |
| |
| /** |
| * @test java.util.prefs.Preferences#addNodeChangeListener(NodeChangeListener ncl) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "Only NullPointerException checked, but method is abstract, probably it is OK", |
| method = "addNodeChangeListener", |
| args = {java.util.prefs.NodeChangeListener.class} |
| ) |
| public void testAddNodeChangeListener() throws BackingStoreException { |
| Preferences pref = Preferences.userNodeForPackage(Preferences.class); |
| try { |
| pref.addNodeChangeListener(null); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| |
| Preferences child1 = null; |
| Preferences child2 = null; |
| Preferences child3 = null; |
| |
| MockNodeChangeListener nl = null; |
| // To get existed node doesn't create the change event |
| try { |
| nl = new MockNodeChangeListener(); |
| pref.addNodeChangeListener(nl); |
| child1 = pref.node("mock1"); |
| nl.waitForEvent(); |
| assertEquals(1, nl.getAdded()); |
| nl.reset(); |
| child2 = pref.node("mock1"); |
| nl.waitForEvent(); |
| assertEquals(0, nl.getAdded()); |
| nl.reset(); |
| } finally { |
| pref.removeNodeChangeListener(nl); |
| child1.removeNode(); |
| } |
| // same listener can be added twice, and must be removed twice |
| try { |
| nl = new MockNodeChangeListener(); |
| pref.addNodeChangeListener(nl); |
| pref.addNodeChangeListener(nl); |
| child1 = pref.node("mock2"); |
| nl.waitForEvent(); |
| assertEquals(2, nl.getAdded()); |
| nl.reset(); |
| } finally { |
| pref.removeNodeChangeListener(nl); |
| pref.removeNodeChangeListener(nl); |
| child1.removeNode(); |
| } |
| // test remove event |
| try { |
| nl = new MockNodeChangeListener(); |
| pref.addNodeChangeListener(nl); |
| child1 = pref.node("mock3"); |
| child1.removeNode(); |
| nl.waitForEvent(); |
| assertEquals(1, nl.getRemoved()); |
| nl.reset(); |
| } finally { |
| pref.removeNodeChangeListener(nl); |
| } |
| // test remove event with two listeners |
| try { |
| nl = new MockNodeChangeListener(); |
| pref.addNodeChangeListener(nl); |
| pref.addNodeChangeListener(nl); |
| child1 = pref.node("mock6"); |
| child1.removeNode(); |
| nl.waitForEvent(); |
| assertEquals(2, nl.getRemoved()); |
| nl.reset(); |
| } finally { |
| pref.removeNodeChangeListener(nl); |
| pref.removeNodeChangeListener(nl); |
| } |
| // test add/remove indirect children, or remove several children at the |
| // same time |
| try { |
| nl = new MockNodeChangeListener(); |
| child1 = pref.node("mock4"); |
| child1.addNodeChangeListener(nl); |
| child2 = pref.node("mock4/mock5"); |
| nl.waitForEvent(); |
| assertEquals(1, nl.getAdded()); |
| nl.reset(); |
| child3 = pref.node("mock4/mock5/mock6"); |
| nl.waitForEvent(); |
| assertEquals(0, nl.getAdded()); |
| nl.reset(); |
| |
| child3.removeNode(); |
| nl.waitForEvent(); |
| assertEquals(0, nl.getRemoved()); |
| nl.reset(); |
| |
| child3 = pref.node("mock4/mock7"); |
| nl.waitForEvent(); |
| assertEquals(1, nl.getAdded()); |
| nl.reset(); |
| |
| child1.removeNode(); |
| nl.waitForEvent(); |
| assertEquals(2, nl.getRemoved()); // fail 1 |
| nl.reset(); |
| } finally { |
| try { |
| child1.removeNode(); |
| } catch (Exception e) { |
| } |
| } |
| |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#addPreferenceChangeListener(PreferenceChangeListener pcl) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "Only NullPointerException checked, but method is abstract, probably it is OK", |
| method = "addPreferenceChangeListener", |
| args = {java.util.prefs.PreferenceChangeListener.class} |
| ) |
| public void testAddPreferenceChangeListener() { |
| |
| Preferences pref = Preferences.userNodeForPackage(Preferences.class); |
| MockPreferenceChangeListener pl = null; |
| |
| try { |
| pref.addPreferenceChangeListener(null); |
| fail(); |
| } catch (NullPointerException e) { |
| } |
| |
| // To get existed node doesn't create the change event |
| try { |
| pl = new MockPreferenceChangeListener(); |
| pref.addPreferenceChangeListener(pl); |
| pref.putInt("mock1", 123); |
| pl.waitForEvent(); |
| assertEquals(1, pl.getChanged()); |
| pref.putLong("long_key", Long.MAX_VALUE); |
| pl.waitForEvent(2); |
| assertEquals(2, pl.getChanged()); |
| pl.reset(); |
| try { |
| pref.clear(); |
| pl.waitForEvent(2); |
| assertEquals(2, pl.getChanged()); // fail 1 |
| } catch(BackingStoreException bse) { |
| pl.reset(); |
| fail("BackingStoreException is thrown"); |
| } |
| pl.reset(); |
| } finally { |
| pref.removePreferenceChangeListener(pl); |
| //child1.removeNode(); |
| } |
| |
| // same listener can be added twice, and must be removed twice |
| try { |
| pl = new MockPreferenceChangeListener(); |
| pref.addPreferenceChangeListener(pl); |
| pref.addPreferenceChangeListener(pl); |
| pref.putFloat("float_key", Float.MIN_VALUE); |
| pl.waitForEvent(2); |
| assertEquals(2, pl.getChanged()); |
| pl.reset(); |
| } finally { |
| pref.removePreferenceChangeListener(pl); |
| pref.removePreferenceChangeListener(pl); |
| |
| } |
| // test remove event |
| try { |
| pl = new MockPreferenceChangeListener(); |
| pref.addPreferenceChangeListener(pl); |
| pref.putDouble("double_key", Double.MAX_VALUE); |
| pl.waitForEvent(); |
| assertEquals(1, pl.getChanged()); |
| try { |
| pref.clear(); |
| pl.waitForEvent(3); |
| assertEquals(3, pl.getChanged()); // fails |
| } catch(BackingStoreException bse) { |
| fail("BackingStoreException is thrown"); |
| } |
| pl.reset(); |
| } finally { |
| pref.removePreferenceChangeListener(pl); |
| } |
| // test remove event with two listeners |
| try { |
| pl = new MockPreferenceChangeListener(); |
| pref.addPreferenceChangeListener(pl); |
| pref.addPreferenceChangeListener(pl); |
| pref.putByteArray("byte_array_key", new byte [] {1 ,2 , 3}); |
| try { |
| pref.clear(); |
| pl.waitForEvent(4); |
| assertEquals(4, pl.getChanged()); |
| } catch(BackingStoreException bse) { |
| fail("BackingStoreException is thrown"); |
| } |
| pl.reset(); |
| } finally { |
| pref.removePreferenceChangeListener(pl); |
| pref.removePreferenceChangeListener(pl); |
| } |
| |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#removeNodeChangeListener(NodeChangeListener ncl) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "IllegalStateException checking missed, but method is abstract, probably it is OK", |
| method = "removeNodeChangeListener", |
| args = {java.util.prefs.NodeChangeListener.class} |
| ) |
| public void testRemoveNodeChangeListener() { |
| Preferences pref = Preferences.userNodeForPackage(Preferences.class); |
| try { |
| pref.removeNodeChangeListener(null); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| MockNodeChangeListener l1 = new MockNodeChangeListener(); |
| MockNodeChangeListener l2 = new MockNodeChangeListener(); |
| pref.addNodeChangeListener(l1); |
| pref.addNodeChangeListener(l1); |
| |
| pref.removeNodeChangeListener(l1); |
| pref.removeNodeChangeListener(l1); |
| try { |
| pref.removeNodeChangeListener(l1); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| try { |
| pref.removeNodeChangeListener(l2); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| } |
| |
| /** |
| * @test java.util.prefs.Preferences#removePreferenceChangeListener(PreferenceChangeListener pcl) |
| * |
| */ |
| @TestTargetNew( |
| level = TestLevel.PARTIAL, |
| notes = "IllegalStateException checking missed, but method is abstract, probably it is OK", |
| method = "removePreferenceChangeListener", |
| args = {java.util.prefs.PreferenceChangeListener.class} |
| ) |
| public void testRemovePreferenceChangeListener() { |
| Preferences pref = Preferences.userNodeForPackage(Preferences.class); |
| try { |
| pref.removePreferenceChangeListener(null); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| MockPreferenceChangeListener l1 = new MockPreferenceChangeListener(); |
| MockPreferenceChangeListener l2 = new MockPreferenceChangeListener(); |
| pref.addPreferenceChangeListener(l1); |
| pref.addPreferenceChangeListener(l1); |
| try { |
| pref.removePreferenceChangeListener(l2); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| pref.removePreferenceChangeListener(l1); |
| pref.removePreferenceChangeListener(l1); |
| try { |
| pref.removePreferenceChangeListener(l1); |
| fail(); |
| } catch (IllegalArgumentException e) { |
| } |
| |
| } |
| |
| static class MockInputStream extends InputStream { |
| |
| static final int normal = 0; |
| |
| static final int exception = 1; |
| |
| static final int runtimeException = 2; |
| |
| int result = normal; |
| |
| InputStream wrapper; |
| |
| public void setResult(int i) { |
| result = i; |
| } |
| |
| private void checkException() throws IOException { |
| switch (result) { |
| case normal: |
| return; |
| case exception: |
| throw new IOException("test"); |
| case runtimeException: |
| throw new RuntimeException("test"); |
| } |
| } |
| |
| public MockInputStream(InputStream in) { |
| wrapper = in; |
| } |
| |
| @Override |
| public int read() throws IOException { |
| checkException(); |
| return wrapper.read(); |
| } |
| } |
| |
| @SuppressWarnings("unused") |
| static class MockPreferences extends Preferences { |
| |
| public MockPreferences() { |
| super(); |
| } |
| |
| @Override |
| public String absolutePath() { |
| return null; |
| } |
| |
| @Override |
| public String[] childrenNames() throws BackingStoreException { |
| return null; |
| } |
| |
| @Override |
| public void clear() throws BackingStoreException { |
| } |
| |
| @Override |
| public void exportNode(OutputStream ostream) throws IOException, |
| BackingStoreException { |
| } |
| |
| @Override |
| public void exportSubtree(OutputStream ostream) throws IOException, |
| BackingStoreException { |
| } |
| |
| @Override |
| public void flush() throws BackingStoreException { |
| } |
| |
| @Override |
| public String get(String key, String deflt) { |
| return null; |
| } |
| |
| @Override |
| public boolean getBoolean(String key, boolean deflt) { |
| return false; |
| } |
| |
| @Override |
| public byte[] getByteArray(String key, byte[] deflt) { |
| return null; |
| } |
| |
| @Override |
| public double getDouble(String key, double deflt) { |
| return 0; |
| } |
| |
| @Override |
| public float getFloat(String key, float deflt) { |
| return 0; |
| } |
| |
| @Override |
| public int getInt(String key, int deflt) { |
| return 0; |
| } |
| |
| @Override |
| public long getLong(String key, long deflt) { |
| return 0; |
| } |
| |
| @Override |
| public boolean isUserNode() { |
| return false; |
| } |
| |
| @Override |
| public String[] keys() throws BackingStoreException { |
| return null; |
| } |
| |
| @Override |
| public String name() { |
| return null; |
| } |
| |
| @Override |
| public Preferences node(String name) { |
| return null; |
| } |
| |
| @Override |
| public boolean nodeExists(String name) throws BackingStoreException { |
| return false; |
| } |
| |
| @Override |
| public Preferences parent() { |
| return null; |
| } |
| |
| @Override |
| public void put(String key, String value) { |
| |
| } |
| |
| @Override |
| public void putBoolean(String key, boolean value) { |
| |
| } |
| |
| @Override |
| public void putByteArray(String key, byte[] value) { |
| |
| } |
| |
| @Override |
| public void putDouble(String key, double value) { |
| |
| } |
| |
| @Override |
| public void putFloat(String key, float value) { |
| |
| } |
| |
| @Override |
| public void putInt(String key, int value) { |
| |
| } |
| |
| @Override |
| public void putLong(String key, long value) { |
| |
| } |
| |
| @Override |
| public void remove(String key) { |
| |
| } |
| |
| @Override |
| public void removeNode() throws BackingStoreException { |
| |
| } |
| |
| @Override |
| public void addNodeChangeListener(NodeChangeListener ncl) { |
| |
| } |
| |
| @Override |
| public void addPreferenceChangeListener(PreferenceChangeListener pcl) { |
| |
| } |
| |
| @Override |
| public void removeNodeChangeListener(NodeChangeListener ncl) { |
| |
| } |
| |
| @Override |
| public void removePreferenceChangeListener(PreferenceChangeListener pcl) { |
| |
| } |
| |
| @Override |
| public void sync() throws BackingStoreException { |
| |
| } |
| |
| @Override |
| public String toString() { |
| return null; |
| } |
| |
| } |
| |
| } |