You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@harmony.apache.org by nd...@apache.org on 2009/01/02 03:52:35 UTC
svn commit: r730659 [3/4] - in
/harmony/enhanced/classlib/trunk/modules/prefs/src:
main/java/java/util/prefs/ test/java/org/apache/harmony/prefs/tests/
test/java/org/apache/harmony/prefs/tests/java/util/prefs/
Modified: harmony/enhanced/classlib/trunk/modules/prefs/src/test/java/org/apache/harmony/prefs/tests/java/util/prefs/AbstractPreferencesTest.java
URL: http://svn.apache.org/viewvc/harmony/enhanced/classlib/trunk/modules/prefs/src/test/java/org/apache/harmony/prefs/tests/java/util/prefs/AbstractPreferencesTest.java?rev=730659&r1=730658&r2=730659&view=diff
==============================================================================
--- harmony/enhanced/classlib/trunk/modules/prefs/src/test/java/org/apache/harmony/prefs/tests/java/util/prefs/AbstractPreferencesTest.java (original)
+++ harmony/enhanced/classlib/trunk/modules/prefs/src/test/java/org/apache/harmony/prefs/tests/java/util/prefs/AbstractPreferencesTest.java Thu Jan 1 18:52:34 2009
@@ -50,1708 +50,1708 @@
*/
public class AbstractPreferencesTest extends TestCase {
- AbstractPreferences pref;
+ AbstractPreferences pref;
- static AbstractPreferences root = null;
+ static AbstractPreferences root = null;
- static AbstractPreferences parent = null;
+ static AbstractPreferences parent = null;
- final static String longKey;
+ final static String longKey;
- final static String longValue;
+ final static String longValue;
- final static String longName;
+ final static String longName;
- MockNodeChangeListener nl;
+ MockNodeChangeListener nl;
- MockPreferenceChangeListener pl;
+ MockPreferenceChangeListener pl;
- 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();
+ 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();
- StringBuffer name = new StringBuffer(Preferences.MAX_NAME_LENGTH);
- for (int i = 0; i < Preferences.MAX_NAME_LENGTH; i++) {
- name.append('a');
- }
- longName = name.toString();
- }
+ StringBuffer name = new StringBuffer(Preferences.MAX_NAME_LENGTH);
+ for (int i = 0; i < Preferences.MAX_NAME_LENGTH; i++) {
+ name.append('a');
+ }
+ longName = name.toString();
+ }
- @Override
+ @Override
protected void setUp() throws Exception {
- super.setUp();
- root = (AbstractPreferences) Preferences.userRoot();
- parent = (AbstractPreferences) Preferences
- .userNodeForPackage(Preferences.class);
- // FIXME: change here is dangerous
- // pref = new MockAbstractPreferences((AbstractPreferences) parent,
- // "mock");
+ super.setUp();
+ root = (AbstractPreferences) Preferences.userRoot();
+ parent = (AbstractPreferences) Preferences
+ .userNodeForPackage(Preferences.class);
+ // FIXME: change here is dangerous
+ // pref = new MockAbstractPreferences((AbstractPreferences) parent,
+ // "mock");
- pref = (AbstractPreferences) parent.node("mock");
- }
+ pref = (AbstractPreferences) parent.node("mock");
+ }
- @Override
+ @Override
protected void tearDown() throws Exception {
- try {
- if (pref instanceof MockAbstractPreferences) {
- ((MockAbstractPreferences) pref)
- .setResult(MockAbstractPreferences.NORMAL);
- }
- pref.removeNode();
- } catch (Exception e) {
- }
- super.tearDown();
- }
-
- public void testConstructor() throws BackingStoreException {
- try {
- pref = new MockAbstractPreferences(
- (AbstractPreferences) Preferences.userRoot(), "mo/ck");
- fail();
- } catch (IllegalArgumentException e) {
- }
- try {
- pref = new MockAbstractPreferences(null, "mock");
- fail();
- } catch (IllegalArgumentException e) {
- }
- try {
- new MockAbstractPreferences(null, " ");
- fail();
- } catch (IllegalArgumentException e) {
- }
- try {
- new MockAbstractPreferences(pref, "");
- fail();
- } catch (IllegalArgumentException e) {
- }
- try {
- new MockAbstractPreferences(pref, null);
- fail();
- } catch (NullPointerException e) {
- }
- if (!(pref instanceof MockAbstractPreferences)) {
- return;
- }
- new MockAbstractPreferences(pref, " ");
+ try {
+ if (pref instanceof MockAbstractPreferences) {
+ ((MockAbstractPreferences) pref)
+ .setResult(MockAbstractPreferences.NORMAL);
+ }
+ pref.removeNode();
+ } catch (Exception e) {
+ }
+ super.tearDown();
+ }
+
+ public void testConstructor() throws BackingStoreException {
+ try {
+ pref = new MockAbstractPreferences(
+ (AbstractPreferences) Preferences.userRoot(), "mo/ck");
+ fail();
+ } catch (IllegalArgumentException e) {
+ }
+ try {
+ pref = new MockAbstractPreferences(null, "mock");
+ fail();
+ } catch (IllegalArgumentException e) {
+ }
+ try {
+ new MockAbstractPreferences(null, " ");
+ fail();
+ } catch (IllegalArgumentException e) {
+ }
+ try {
+ new MockAbstractPreferences(pref, "");
+ fail();
+ } catch (IllegalArgumentException e) {
+ }
+ try {
+ new MockAbstractPreferences(pref, null);
+ fail();
+ } catch (NullPointerException e) {
+ }
+ if (!(pref instanceof MockAbstractPreferences)) {
+ return;
+ }
+ new MockAbstractPreferences(pref, " ");
Preferences p2 = new MockAbstractPreferences(null, "");
- assertNotSame(p2, Preferences.systemRoot());
- assertNotSame(p2, Preferences.userRoot());
- assertFalse(p2.isUserNode());
-
- p2 = new MockAbstractPreferences((AbstractPreferences) Preferences
- .userRoot(), "mock");
- assertNotSame(p2, pref);
- p2.removeNode();
- }
-
- public void testProtectedFields() throws BackingStoreException {
- if (!(pref instanceof MockAbstractPreferences)) {
- return;
- }
- MockAbstractPreferences p = new MockAbstractPreferences(pref, "newNode");
- assertFalse(p.getNewNode());
- assertSame(p.getLock().getClass(), Object.class);
-
- p = (MockAbstractPreferences) pref.node("child");
- assertTrue(p.getNewNode());
-
- p = (MockAbstractPreferences) ((MockAbstractPreferences) pref)
- .publicChildSpi("child2");
- assertTrue(p.getNewNode());
- }
-
- public void testToString() {
- assertEquals("User Preference Node: " + pref.absolutePath(), pref
- .toString());
-
- pref = new MockAbstractPreferences((AbstractPreferences) Preferences
- .systemRoot(), "mock");
- assertEquals("System Preference Node: " + pref.absolutePath(), pref
- .toString());
- }
-
- public void testAbsolutePath() {
- assertEquals("/java/util/prefs/mock", pref.absolutePath());
-
- pref = new MockAbstractPreferences(pref, " ");
- assertEquals("/java/util/prefs/mock/ ", pref.absolutePath());
- }
-
- public void testChildrenNames() throws BackingStoreException {
- assertEquals(0, pref.childrenNames().length);
-
- // MockAbstractPreferences child1 = new MockAbstractPreferences(pref,
- // "child1");
- // MockAbstractPreferences child2 = new MockAbstractPreferences(pref,
- // "child2");
- // MockAbstractPreferences child3 = new MockAbstractPreferences(pref,
- // "child3");
- // MockAbstractPreferences subchild1 = new
- // MockAbstractPreferences(child1,
- // "subchild1");
- Preferences child1 = pref.node("child1");
+ assertNotSame(p2, Preferences.systemRoot());
+ assertNotSame(p2, Preferences.userRoot());
+ assertFalse(p2.isUserNode());
+
+ p2 = new MockAbstractPreferences((AbstractPreferences) Preferences
+ .userRoot(), "mock");
+ assertNotSame(p2, pref);
+ p2.removeNode();
+ }
+
+ public void testProtectedFields() throws BackingStoreException {
+ if (!(pref instanceof MockAbstractPreferences)) {
+ return;
+ }
+ MockAbstractPreferences p = new MockAbstractPreferences(pref, "newNode");
+ assertFalse(p.getNewNode());
+ assertSame(p.getLock().getClass(), Object.class);
+
+ p = (MockAbstractPreferences) pref.node("child");
+ assertTrue(p.getNewNode());
+
+ p = (MockAbstractPreferences) ((MockAbstractPreferences) pref)
+ .publicChildSpi("child2");
+ assertTrue(p.getNewNode());
+ }
+
+ public void testToString() {
+ assertEquals("User Preference Node: " + pref.absolutePath(), pref
+ .toString());
+
+ pref = new MockAbstractPreferences((AbstractPreferences) Preferences
+ .systemRoot(), "mock");
+ assertEquals("System Preference Node: " + pref.absolutePath(), pref
+ .toString());
+ }
+
+ public void testAbsolutePath() {
+ assertEquals("/java/util/prefs/mock", pref.absolutePath());
+
+ pref = new MockAbstractPreferences(pref, " ");
+ assertEquals("/java/util/prefs/mock/ ", pref.absolutePath());
+ }
+
+ public void testChildrenNames() throws BackingStoreException {
+ assertEquals(0, pref.childrenNames().length);
+
+ // MockAbstractPreferences child1 = new MockAbstractPreferences(pref,
+ // "child1");
+ // MockAbstractPreferences child2 = new MockAbstractPreferences(pref,
+ // "child2");
+ // MockAbstractPreferences child3 = new MockAbstractPreferences(pref,
+ // "child3");
+ // MockAbstractPreferences subchild1 = new
+ // MockAbstractPreferences(child1,
+ // "subchild1");
+ Preferences child1 = pref.node("child1");
pref.node("child2");
- pref.node("child3");
- child1.node("subchild1");
+ pref.node("child3");
+ child1.node("subchild1");
assertSame(pref, child1.parent());
- assertEquals(3, pref.childrenNames().length);
- }
+ assertEquals(3, pref.childrenNames().length);
+ }
- public void testClear() throws BackingStoreException {
- 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));
- }
-
- public void testGet() throws BackingStoreException {
- 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) {
- }
- }
-
- public void testGetBoolean() {
- 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));
- }
-
- public void testPutByteArray() {
- 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)));
- }
-
- public void testGetByteArray() throws UnsupportedEncodingException {
- try {
- pref.getByteArray(null, new byte[0]);
- fail();
- } catch (NullPointerException e) {
- }
- byte[] b64Array = new byte[] { 0x59, 0x57, 0x4a, 0x6a };// BASE64
- // encoding for
- // "abc"
-
- pref.put("testGetByteArrayKey", "abc=");
- pref.put("testGetByteArrayKey2", new String(b64Array));
- pref.put("invalidKey", "<>?");
- // assertTrue(Arrays.equals(new byte[0], p.getByteArray(
- // "testGetByteArrayKey", new byte[0])));
- 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])));
- }
-
- public void testGetDouble() {
- 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);
- }
-
- public void testGetFloat() {
- try {
- pref.getFloat(null, 0f);
- fail();
- } catch (NullPointerException e) {
- }
- pref.put("testGetFloatKey", "1");
- pref.put("testGetFloatKey2", "value");
- assertEquals(1f, pref.getFloat("testGetFloatKey", 0f), 0); //$NON-NLS-1$
- assertEquals(0f, pref.getFloat("testGetFloatKey2", 0f), 0);
- }
-
- public void testGetInt() {
- 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));
- }
-
- public void testGetLong() {
- 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));
- }
-
- public void testIsUserNode() {
- assertTrue(pref.isUserNode());
-
- pref = new MockAbstractPreferences((AbstractPreferences) Preferences
- .systemRoot(), "mock");
- assertFalse(pref.isUserNode());
- }
-
- // TODO, how to test the "stored defaults"
- // TODO, how to test the multi-thread
- public void testKeys() throws BackingStoreException {
- assertEquals(0, pref.keys().length);
-
- 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());
- }
- }
-
- public void testName() {
- assertEquals("mock", pref.name());
-
- pref = new MockAbstractPreferences(pref, " ");
- assertEquals(" ", pref.name());
- }
-
- public void testCharCase() throws BackingStoreException {
- assertSame(pref.node("samechild"), pref.node("samechild"));
- assertNotSame(pref.node("sameChild"), pref.node("samechild"));
- assertNotSame(pref.node("child"), pref.node("Child"));
- assertNotSame(pref.node("child"), pref.node("Child"));
- assertNotSame(pref.node("child"), pref.node(" child"));
- String[] names = pref.childrenNames();
- assertEquals(5, names.length);
- for (int i = 0; i < names.length; i++) {
- String name = names[i];
- assertTrue("samechild".equals(name) || "sameChild".equals(name)
- || "child".equals(name) || "Child".equals(name)
- || " child".equals(name));
- }
-
- Preferences mock1 = pref.node("mock1");
- mock1.put("key", "1value");
- mock1.put("KEY", "2value");
- mock1.put("/K/E/Y", "7value");
- mock1.put("/K/E\\Y\\abc~@!#$%^&*(\\", "8value");
-
- assertEquals("8value", mock1.get("/K/E\\Y\\abc~@!#$%^&*(\\", null));
- assertNull(mock1.get("/k/e/y", null));
- assertEquals("7value", mock1.get("/K/E/Y", null));
- assertEquals("1value", mock1.get("key", null));
-
- String[] keys = mock1.keys();
- assertEquals(4, keys.length);
- for (int i = 0; i < keys.length; i++) {
- String key = keys[i];
- assertTrue("key".equals(key) || "KEY".equals(key)
- || "/K/E/Y".equals(key)
- || "/K/E\\Y\\abc~@!#$%^&*(\\".equals(key));
- }
- }
-
- public void testNode() throws BackingStoreException {
- 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());
- }
-
- public void testNodeExists() throws BackingStoreException {
- 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"));
- }
-
- public void testParent() {
- assertSame(parent, pref.parent());
- AbstractPreferences child1 = new MockAbstractPreferences(pref, "child1");
- assertSame(pref, child1.parent());
- assertNull(root.parent());
- }
-
- public void testPut() throws BackingStoreException {
- 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) {
- }
- }
-
- public void testPutBoolean() {
- 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));
- }
-
- public void testPutDouble() {
- 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);
- }
-
- public void testPutFloat() {
- 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);
- }
-
- public void testPutInt() {
- 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));
- }
-
- public void testPutLong() {
- 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));
- }
-
- public void testRemove() throws BackingStoreException {
- 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);
- } catch (NullPointerException e) {
- }
-
- pref.removeNode();
- try {
- pref.remove("key");
- fail();
- } catch (IllegalStateException e) {
- }
- }
-
- public void testRemoveNode() throws BackingStoreException {
- 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(""));
- }
-
- // public void testAddNodeChangeListener() throws BackingStoreException {
- // try {
- // pref.addNodeChangeListener(null);
- // fail();
- // } catch (NullPointerException e) {
- // }
- //
- // Preferences child1 = null;
- // Preferences child2 = null;
- // Preferences child3 = null;
- // //To get existed node doesn't create the change event
- // try {
- // nl = new MockNodeChangeListener();
- // pref.addNodeChangeListener(nl);
- // child1 = pref.node("mock1");
- // assertEquals(1, nl.getAdded());
- // nl.reset();
- // child2 = pref.node("mock1");
- // 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");
- // 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();
- // 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();
- // 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");
- // assertEquals(1, nl.getAdded());
- // nl.reset();
- // child3 = pref.node("mock4/mock5/mock6");
- // assertEquals(0, nl.getAdded());
- // nl.reset();
- //
- // child3.removeNode();
- // assertEquals(0, nl.getRemoved());
- // nl.reset();
- //
- // child3 = pref.node("mock4/mock7");
- // assertEquals(1, nl.getAdded());
- // nl.reset();
- //
- // child1.removeNode();
- // assertEquals(2, nl.getRemoved());
- // nl.reset();
- // } finally {
- // try {
- // child1.removeNode();
- // } catch (Exception e) {
- // }
- // }
- //
- // }
-
- public void testAddPreferenceChangeListener() {
- // TODO: start from here
-
- }
-
- public void testRemoveNodeChangeListener() {
- 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) {
- }
- }
-
- public void testRemovePreferenceChangeListener() {
- 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) {
- }
-
- }
-
- public void testSync() throws BackingStoreException {
- pref.sync();
- if (!(pref instanceof MockAbstractPreferences)) {
- return;
- }
- MockAbstractPreferences p = (MockAbstractPreferences) pref;
- p.resetSyncTimes();
- p.sync();
- assertEquals(1, p.getSyncTimes());
-
- p.resetSyncTimes();
- MockAbstractPreferences child = (MockAbstractPreferences) p
- .node("child");
- MockAbstractPreferences child2 = new MockAbstractPreferences(p,
- "child2");
- p.childs.put("child2", child2);
- assertEquals(1, p.cachedChildrenImpl().length);
- assertSame(child, p.cachedChildrenImpl()[0]);
- p.sync();
- assertEquals(1, p.getSyncTimes());
- assertEquals(1, child.getSyncTimes());
- assertEquals(0, child2.getSyncTimes());
-
- p.resetSyncTimes();
- child.resetSyncTimes();
- child.sync();
- assertEquals(0, p.getSyncTimes());
- assertEquals(1, child.getSyncTimes());
-
- p.resetSyncTimes();
- child.resetSyncTimes();
- MockAbstractPreferences grandson = (MockAbstractPreferences) child
- .node("grandson");
- child.sync();
- assertEquals(0, p.getSyncTimes());
- assertEquals(1, child.getSyncTimes());
- assertEquals(1, grandson.getSyncTimes());
- }
-
- public void testFlush() throws BackingStoreException {
- pref.flush();
- if (!(pref instanceof MockAbstractPreferences)) {
- return;
- }
- MockAbstractPreferences p = (MockAbstractPreferences) pref;
- p.resetFlushedTimes();
- p.flush();
- assertEquals(1, p.getFlushedTimes());
-
- p.resetFlushedTimes();
- MockAbstractPreferences child = (MockAbstractPreferences) p
- .node("child");
- MockAbstractPreferences child2 = new MockAbstractPreferences(p,
- "child2");
- p.childs.put("child2", child2);
- assertEquals(1, p.cachedChildrenImpl().length);
- assertSame(child, p.cachedChildrenImpl()[0]);
- p.flush();
- assertEquals(1, p.getFlushedTimes());
- assertEquals(1, child.getFlushedTimes());
- assertEquals(0, child2.getFlushedTimes());
-
- p.resetFlushedTimes();
- child.resetFlushedTimes();
- child.flush();
- assertEquals(0, p.getFlushedTimes());
- assertEquals(1, child.getFlushedTimes());
-
- p.resetFlushedTimes();
- child.resetFlushedTimes();
- MockAbstractPreferences grandson = (MockAbstractPreferences) child
- .node("grandson");
- child.flush();
- assertEquals(0, p.getFlushedTimes());
- assertEquals(1, child.getFlushedTimes());
- assertEquals(1, grandson.getFlushedTimes());
-
- p.resetFlushedTimes();
- child.resetFlushedTimes();
- grandson.resetFlushedTimes();
- child.removeNode();
- child.flush();
- assertEquals(0, p.getFlushedTimes());
- assertEquals(1, child.getFlushedTimes());
- assertEquals(0, grandson.getFlushedTimes());
- }
-
- public void testGetChild() throws BackingStoreException {
- if (!(pref instanceof MockAbstractPreferences)) {
- return;
- }
- MockAbstractPreferences p = (MockAbstractPreferences) pref;
- assertNull(p.getChildImpl("child"));
- MockAbstractPreferences child = new MockAbstractPreferences(p, "child");
- p.childs.put("child", child);
- assertSame(child, p.getChildImpl("child"));
- assertNull(p.getChildImpl("child "));
-
- assertNull(p.getChildImpl("child/grandson"));
- child.childs.put("grandson", new MockAbstractPreferences(child,
- "grandson"));
- assertNull(p.getChildImpl("child/grandson"));
-
- assertNull(p.getChildImpl(null));
- assertNull(p.getChildImpl(""));
- assertNull(p.getChildImpl(" "));
- assertNull(p.getChildImpl("abc//abc"));
- assertNull(p.getChildImpl("child/"));
- assertNull(p.getChildImpl(longName + "a"));
-
- child.removeNode();
- assertNull(p.getChildImpl("child"));
- }
-
- public void testIsRemoved() throws BackingStoreException {
- if (!(pref instanceof MockAbstractPreferences)) {
- return;
- }
- MockAbstractPreferences p = (MockAbstractPreferences) pref;
- assertFalse(p.isRemovedImpl());
- p.removeNode();
- assertTrue(p.isRemovedImpl());
- }
-
- public void testExportNode() throws Exception {
- try {
- pref.exportNode(null);
- fail();
- } catch (NullPointerException e) {
- // Expected
- }
-
- pref.putBoolean("key", false);
- Preferences child = pref.node("child<");
- child.put("key2", "value2<");
- Preferences grandson = child.node("grandson");
- grandson.put("key3", "value3");
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- child.exportNode(out);
-
- byte[] result = out.toByteArray();
- ByteArrayInputStream in = new ByteArrayInputStream(result);
-
- Document doc = parseXmlStream(in, true);
-
- // only output this node without parent and children
- String rootpath = "/preferences[@EXTERNAL_XML_VERSION='1.0']/root[@type='user']/node[@name='java']/node[@name='util']/node[@name='prefs']";
- Node node = XPathAPI
- .selectSingleNode(
- doc,
- rootpath
- + "/node[@name='mock']/map/entry[@key='key' and @value='false']");
- assertNull(node);
- node = XPathAPI
- .selectSingleNode(
- doc,
- rootpath
- + "/node[@name='mock']/node[@name='child<']/map/entry[@key='key2' and @value='value2<']");
- assertNotNull(node);
- node = XPathAPI.selectSingleNode(doc, rootpath
- + "/node[@name='mock']/node[@name='child']/node");
- assertNull(node);
- }
-
- private static Document parseXmlStream(InputStream input, boolean validating)
- throws SAXException, IOException, ParserConfigurationException {
- // Create a builder factory
- DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
- factory.setValidating(validating);
-
- // Create the builder and parse the file
- DocumentBuilder builder = factory.newDocumentBuilder();
- Document doc = builder.parse(input);
- return doc;
- }
-
- public void testExportSubtree() throws Exception {
- try {
- pref.exportSubtree(null);
- fail();
- } catch (NullPointerException e) {
- // Expected
- }
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- pref.putBoolean("key", false);
- Preferences child = pref.node("child");
- child.put("key2", "value2");
- Preferences grandson = child.node("grandson");
- grandson.put("key3", "value3");
- child.node("grandson2");
- Preferences grandgrandson = grandson.node("grandgrandson");
- grandgrandson.put("key4", "value4");
- child.exportSubtree(out);
-
- byte[] result = out.toByteArray();
- // System.out.println(new String(result, "utf-8"));
- ByteArrayInputStream in = new ByteArrayInputStream(result);
- Document doc = parseXmlStream(in, true);
-
- // only output this node and subtree without parent
- String rootpath = "/preferences[@EXTERNAL_XML_VERSION='1.0']/root[@type='user']/node[@name='java']/node[@name='util']/node[@name='prefs']";
- Node node = XPathAPI
- .selectSingleNode(
- doc,
- rootpath
- + "/node[@name='mock']/map/entry[@key='key' and @value='false']");
- assertNull(node);
- node = XPathAPI
- .selectSingleNode(
- doc,
- rootpath
- + "/node[@name='mock']/node[@name='child']/map/entry[@key='key2' and @value='value2']");
- assertNotNull(node);
- node = XPathAPI
- .selectSingleNode(
- doc,
- rootpath
- + "/node[@name='mock']/node[@name='child']/node[@name='grandson']/map/entry[@key='key3' and @value='value3']");
- assertNotNull(node);
- node = XPathAPI
- .selectSingleNode(
- doc,
- rootpath
- + "/node[@name='mock']/node[@name='child']/node[@name='grandson']/node[@name='grandgrandson']/map/entry[@key='key4' and @value='value4']");
- assertNotNull(node);
- node = XPathAPI
- .selectSingleNode(
- doc,
- rootpath
- + "/node[@name='mock']/node[@name='child']/node[@name='grandson2']/map");
- assertNotNull(node);
- }
-
- public void testCachedChildren() throws Exception {
- if (!(pref instanceof MockAbstractPreferences)) {
- return;
- }
- MockAbstractPreferences p = (MockAbstractPreferences) pref;
- assertEquals(0, p.cachedChildrenImpl().length);
-
- MockAbstractPreferences child = (MockAbstractPreferences) p
- .getChildImpl("child");
- assertNull(child);
-
- child = new MockAbstractPreferences(p, "child");
- assertSame(child, p.getChildImpl("child"));
-
- assertEquals(0, p.cachedChildrenImpl().length);
-
- p.node("child");
- assertSame(child, p.cachedChildrenImpl()[0]);
-
- MockAbstractPreferences grandchild = new MockAbstractPreferences(child,
- "grandchild");
- assertSame(grandchild, child.getChildImpl("grandchild"));
- assertNull(p.getChildImpl("grandchild"));
-
- assertEquals(1, p.cachedChildrenImpl().length);
- assertEquals(0, child.cachedChildrenImpl().length);
-
- p.node("child/grandchild");
- assertSame(child, p.cachedChildrenImpl()[0]);
- assertSame(grandchild, child.cachedChildrenImpl()[0]);
- assertEquals(1, p.cachedChildrenImpl().length);
- assertEquals(1, child.cachedChildrenImpl().length);
-
- p.childs.put("child2", new MockAbstractPreferences(p, "child2"));
- p.nodeExists("child2/grandchild");
- assertSame(child, p.cachedChildrenImpl()[0]);
- assertSame(grandchild, child.cachedChildrenImpl()[0]);
- assertEquals(1, p.cachedChildrenImpl().length);
- assertEquals(1, child.cachedChildrenImpl().length);
- }
-
- public void testAbstractMethod() {
- if (!(pref instanceof MockAbstractPreferences)) {
- return;
- }
- ((MockAbstractPreferences) pref).protectedAbstractMethod();
- }
-
- public Object invokeNonPublicMethod(AbstractPreferences obj, String name,
- Class<?>[] params, Object[] paramValues) throws SecurityException,
- NoSuchMethodException, IllegalArgumentException,
- IllegalAccessException, InvocationTargetException {
- Method method = obj.getClass().getMethod(name, params);
- method.setAccessible(true);
- return method.invoke(obj, paramValues);
- }
-
- public void testBackingStoreException() throws IOException,
- BackingStoreException {
- if (!(pref instanceof MockAbstractPreferences)) {
- return;
- }
- MockAbstractPreferences p = (MockAbstractPreferences) pref;
- p.setResult(MockAbstractPreferences.backingException);
- try {
- p.childrenNames();
- fail();
- } catch (BackingStoreException e) {
- }
- p.put("exceptionkey", "value");
- p.absolutePath();
- p.toString();
- assertEquals("exception default", p.get("key", "exception default"));
- p.remove("key");
- try {
- p.clear();
- fail();
- } catch (BackingStoreException e) {
- }
- p.putInt("key", 3);
- p.getInt("key", 3);
- p.putLong("key", 3l);
- p.getLong("key", 3l);
- p.putDouble("key", 3);
- p.getDouble("key", 3);
- p.putBoolean("key", true);
- p.getBoolean("key", true);
- p.putFloat("key", 3f);
- p.getFloat("key", 3f);
- p.putByteArray("key", new byte[0]);
- p.getByteArray("key", new byte[0]);
- try {
- p.keys();
- fail();
- } catch (BackingStoreException e) {
- }
-
- try {
- p.keys();
- fail();
- } catch (BackingStoreException e) {
- }
- try {
- p.childrenNames();
- fail();
- } catch (BackingStoreException e) {
- }
- p.parent();
- p.node("");
- p.nodeExists("");
- try {
- p.removeNode();
- fail();
- } catch (BackingStoreException e) {
- }
- p.name();
- p.absolutePath();
- p.isUserNode();
- MockPreferenceChangeListener mockPreferenceChangeListener = new MockPreferenceChangeListener();
- p.addPreferenceChangeListener(mockPreferenceChangeListener);
- p.removePreferenceChangeListener(mockPreferenceChangeListener);
- MockNodeChangeListener mockNodeChangeListener = new MockNodeChangeListener();
- p.addNodeChangeListener(mockNodeChangeListener);
- p.removeNodeChangeListener(mockNodeChangeListener);
- p.toString();
- try {
- p.sync();
- fail();
- } catch (BackingStoreException e) {
- }
- try {
- p.flush();
- fail();
- } catch (BackingStoreException e) {
- }
- try {
- p.exportNode(new ByteArrayOutputStream());
- fail();
- } catch (BackingStoreException e) {
- }
- try {
- p.exportSubtree(new ByteArrayOutputStream());
- fail();
- } catch (BackingStoreException e) {
- }
- p.isRemovedImpl();
- try {
- p.getChildImpl(null);
- fail();
- } catch (BackingStoreException e) {
- }
- p.cachedChildrenImpl();
- }
-
- public void testRuntimeException() throws IOException,
- BackingStoreException {
- if (!(pref instanceof MockAbstractPreferences)) {
- return;
- }
- MockAbstractPreferences p = (MockAbstractPreferences) pref;
- p.setResult(MockAbstractPreferences.runtimeException);
- try {
- p.childrenNames();
- fail();
- } catch (MockRuntimeException e) {
- }
- try {
- p.put("exceptionkey", "value");
- fail();
- } catch (MockRuntimeException e) {
- }
- p.absolutePath();
- p.toString();
- assertEquals("exception default", p.get("key", "exception default"));
- try {
- p.remove("key");
- fail();
- } catch (MockRuntimeException e) {
- }
- try {
- p.clear();
- fail();
- } catch (MockRuntimeException e) {
- }
- try {
- p.putInt("key", 3);
- fail();
- } catch (MockRuntimeException e) {
- }
- p.getInt("key", 3);
- try {
- p.putLong("key", 3l);
- fail();
- } catch (MockRuntimeException e) {
- }
- p.getLong("key", 3l);
- try {
- p.putDouble("key", 3);
- fail();
- } catch (MockRuntimeException e) {
- }
- p.getDouble("key", 3);
- try {
- p.putBoolean("key", true);
- fail();
- } catch (MockRuntimeException e) {
- }
- p.getBoolean("key", true);
- try {
- p.putFloat("key", 3f);
- fail();
- } catch (MockRuntimeException e) {
- }
- p.getFloat("key", 3f);
- try {
- p.putByteArray("key", new byte[0]);
- fail();
- } catch (MockRuntimeException e) {
- }
- p.getByteArray("key", new byte[0]);
- try {
- p.keys();
- fail();
- } catch (MockRuntimeException e) {
- }
- try {
- p.keys();
- fail();
- } catch (MockRuntimeException e) {
- }
- try {
- p.childrenNames();
- fail();
- } catch (MockRuntimeException e) {
- }
- p.parent();
- p.node("");
- p.nodeExists("");
- try {
- p.removeNode();
- fail();
- } catch (MockRuntimeException e) {
- }
- p.name();
- p.absolutePath();
- p.isUserNode();
- MockPreferenceChangeListener pcl = new MockPreferenceChangeListener();
- p.addPreferenceChangeListener(pcl);
- p.removePreferenceChangeListener(pcl);
- MockNodeChangeListener ncl = new MockNodeChangeListener();
- p.addNodeChangeListener(ncl);
- p.removeNodeChangeListener(ncl);
- p.toString();
- try {
- p.sync();
- fail();
- } catch (MockRuntimeException e) {
- }
- try {
- p.flush();
- fail();
- } catch (MockRuntimeException e) {
- }
- try {
- p.exportNode(new ByteArrayOutputStream());
- fail();
- } catch (MockRuntimeException e) {
- }
- try {
- p.exportSubtree(new ByteArrayOutputStream());
- fail();
- } catch (MockRuntimeException e) {
- }
- p.isRemovedImpl();
- try {
- p.getChildImpl(null);
- fail();
- } catch (MockRuntimeException e) {
- }
- p.cachedChildrenImpl();
- }
-
- public void testSPIReturnNull() throws IOException, BackingStoreException {
- if (!(pref instanceof MockAbstractPreferences)) {
- return;
- }
- MockAbstractPreferences p = (MockAbstractPreferences) pref;
- p.setResult(MockAbstractPreferences.returnNull);
- try {
- p.childrenNames();
- fail();
- } catch (NullPointerException e) {
- }
- p.absolutePath();
- p.toString();
- p.put("nullkey", "value");
- assertEquals("null default", p.get("key", "null default"));
- p.remove("key");
- try {
- p.clear();
- fail();
- } catch (NullPointerException e) {
- }
- p.putInt("key", 3);
- p.getInt("key", 3);
- p.putLong("key", 3l);
- p.getLong("key", 3l);
- p.putDouble("key", 3);
- p.getDouble("key", 3);
- p.putBoolean("key", true);
- p.getBoolean("key", true);
- p.putFloat("key", 3f);
- p.getFloat("key", 3f);
- p.putByteArray("key", new byte[0]);
- p.getByteArray("key", new byte[0]);
- p.keys();
- try {
- p.childrenNames();
- fail();
- } catch (NullPointerException e) {
- }
- p.parent();
- p.node("");
- p.nodeExists("");
- try {
- p.removeNode();
- fail();
- } catch (NullPointerException e) {
- }
- p.name();
- p.absolutePath();
- p.isUserNode();
- MockPreferenceChangeListener mockPreferenceChangeListener = new MockPreferenceChangeListener();
- p.addPreferenceChangeListener(mockPreferenceChangeListener);
- p.removePreferenceChangeListener(mockPreferenceChangeListener);
- MockNodeChangeListener mockNodeChangeListener = new MockNodeChangeListener();
- p.addNodeChangeListener(mockNodeChangeListener);
- p.removeNodeChangeListener(mockNodeChangeListener);
- p.toString();
- p.sync();
- p.flush();
- try {
- p.exportNode(System.out);
- fail();
- } catch (NullPointerException e) {
- }
- try {
- p.exportSubtree(System.out);
- fail();
- } catch (NullPointerException e) {
- }
- p.isRemovedImpl();
- try {
- p.getChildImpl("");
- fail();
- } catch (NullPointerException e) {
- }
- p.cachedChildrenImpl();
- }
-
- public void testIllegalStateException() throws IOException,
- BackingStoreException {
- if (!(pref instanceof MockAbstractPreferences)) {
- return;
- }
- pref.removeNode();
- // after remove node, every methods, except name(), absolutePath(),
- // isUserNode(), flush() or nodeExists(""),
- // will throw illegal state exception
- pref.nodeExists("");
- pref.name();
- pref.absolutePath();
- pref.isUserNode();
- pref.toString();
- pref.flush();
- try {
- pref.nodeExists("child");
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.childrenNames();
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.remove(null);
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.clear();
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.get("key", "null default");
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.put("nullkey", "value");
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.putInt("key", 3);
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.getInt("key", 3);
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.putLong("key", 3l);
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.getLong("key", 3l);
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.putDouble("key", 3);
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.getDouble("key", 3);
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.putBoolean("key", true);
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.getBoolean("key", true);
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.putFloat("key", 3f);
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.getFloat("key", 3f);
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.putByteArray("key", new byte[0]);
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.getByteArray("key", new byte[0]);
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.keys();
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.keys();
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.childrenNames();
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.parent();
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.node(null);
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.removeNode();
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref
- .addPreferenceChangeListener(new MockPreferenceChangeListener());
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref
- .removePreferenceChangeListener(new MockPreferenceChangeListener());
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.addNodeChangeListener(new MockNodeChangeListener());
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.removeNodeChangeListener(new MockNodeChangeListener());
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.sync();
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.exportNode(null);
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- pref.exportSubtree(null);
- fail();
- } catch (IllegalStateException e) {
- }
- if (!(pref instanceof MockAbstractPreferences)) {
- return;
- }
- MockAbstractPreferences p = (MockAbstractPreferences) pref;
- p.isRemovedImpl();
- p.cachedChildrenImpl();
- try {
- p.getChildImpl(null);
- fail();
- } catch (IllegalStateException e) {
- }
- }
-
- public void testNullAndIllegalStateException() throws Exception {
- if (!(pref instanceof MockAbstractPreferences)) {
- return;
- }
- MockAbstractPreferences p = (MockAbstractPreferences) pref;
- p.removeNode();
- try {
- p.get(null, "null default");
- fail();
- } catch (NullPointerException e) {
- }
- try {
- p.put(null, "value");
- fail();
- } catch (NullPointerException e) {
- }
- try {
- p.putInt(null, 3);
- fail();
- } catch (NullPointerException e) {
- }
- try {
- p.getInt(null, 3);
- fail();
- } catch (NullPointerException e) {
- }
- try {
- p.putLong(null, 3l);
- fail();
- } catch (NullPointerException e) {
- }
- try {
- p.getLong(null, 3l);
- fail();
- } catch (NullPointerException e) {
- }
- try {
- p.putDouble(null, 3);
- fail();
- } catch (NullPointerException e) {
- }
- try {
- p.getDouble(null, 3);
- fail();
- } catch (NullPointerException e) {
- }
- try {
- p.putBoolean(null, true);
- fail();
- } catch (NullPointerException e) {
- }
- try {
- p.getBoolean(null, true);
- fail();
- } catch (NullPointerException e) {
- }
- try {
- p.putFloat(null, 3f);
- fail();
- } catch (NullPointerException e) {
- }
- try {
- p.getFloat(null, 3f);
- fail();
- } catch (NullPointerException e) {
- }
- try {
- p.putByteArray(null, new byte[0]);
- fail();
- } catch (NullPointerException e) {
- }
- try {
- p.getByteArray(null, new byte[0]);
- fail();
- } catch (NullPointerException e) {
- }
- try {
- p.addPreferenceChangeListener(null);
- fail();
- } catch (NullPointerException e) {
- }
- try {
- p.removePreferenceChangeListener(null);
- fail();
- } catch (IllegalStateException e) {
- }
- try {
- p.addNodeChangeListener(null);
- fail();
- } catch (NullPointerException e) {
- }
- try {
- p.removeNodeChangeListener(null);
- fail();
- } catch (IllegalStateException e) {
- }
- }
+ public void testClear() throws BackingStoreException {
+ 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));
+ }
+
+ public void testGet() throws BackingStoreException {
+ 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) {
+ }
+ }
+
+ public void testGetBoolean() {
+ 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));
+ }
+
+ public void testPutByteArray() {
+ 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)));
+ }
+
+ public void testGetByteArray() throws UnsupportedEncodingException {
+ try {
+ pref.getByteArray(null, new byte[0]);
+ fail();
+ } catch (NullPointerException e) {
+ }
+ byte[] b64Array = new byte[] { 0x59, 0x57, 0x4a, 0x6a };// BASE64
+ // encoding for
+ // "abc"
+
+ pref.put("testGetByteArrayKey", "abc=");
+ pref.put("testGetByteArrayKey2", new String(b64Array));
+ pref.put("invalidKey", "<>?");
+ // assertTrue(Arrays.equals(new byte[0], p.getByteArray(
+ // "testGetByteArrayKey", new byte[0])));
+ 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])));
+ }
+
+ public void testGetDouble() {
+ 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);
+ }
+
+ public void testGetFloat() {
+ try {
+ pref.getFloat(null, 0f);
+ fail();
+ } catch (NullPointerException e) {
+ }
+ pref.put("testGetFloatKey", "1");
+ pref.put("testGetFloatKey2", "value");
+ assertEquals(1f, pref.getFloat("testGetFloatKey", 0f), 0); //$NON-NLS-1$
+ assertEquals(0f, pref.getFloat("testGetFloatKey2", 0f), 0);
+ }
+
+ public void testGetInt() {
+ 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));
+ }
+
+ public void testGetLong() {
+ 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));
+ }
+
+ public void testIsUserNode() {
+ assertTrue(pref.isUserNode());
+
+ pref = new MockAbstractPreferences((AbstractPreferences) Preferences
+ .systemRoot(), "mock");
+ assertFalse(pref.isUserNode());
+ }
+
+ // TODO, how to test the "stored defaults"
+ // TODO, how to test the multi-thread
+ public void testKeys() throws BackingStoreException {
+ assertEquals(0, pref.keys().length);
+
+ 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());
+ }
+ }
+
+ public void testName() {
+ assertEquals("mock", pref.name());
+
+ pref = new MockAbstractPreferences(pref, " ");
+ assertEquals(" ", pref.name());
+ }
+
+ public void testCharCase() throws BackingStoreException {
+ assertSame(pref.node("samechild"), pref.node("samechild"));
+ assertNotSame(pref.node("sameChild"), pref.node("samechild"));
+ assertNotSame(pref.node("child"), pref.node("Child"));
+ assertNotSame(pref.node("child"), pref.node("Child"));
+ assertNotSame(pref.node("child"), pref.node(" child"));
+ String[] names = pref.childrenNames();
+ assertEquals(5, names.length);
+ for (int i = 0; i < names.length; i++) {
+ String name = names[i];
+ assertTrue("samechild".equals(name) || "sameChild".equals(name)
+ || "child".equals(name) || "Child".equals(name)
+ || " child".equals(name));
+ }
+
+ Preferences mock1 = pref.node("mock1");
+ mock1.put("key", "1value");
+ mock1.put("KEY", "2value");
+ mock1.put("/K/E/Y", "7value");
+ mock1.put("/K/E\\Y\\abc~@!#$%^&*(\\", "8value");
+
+ assertEquals("8value", mock1.get("/K/E\\Y\\abc~@!#$%^&*(\\", null));
+ assertNull(mock1.get("/k/e/y", null));
+ assertEquals("7value", mock1.get("/K/E/Y", null));
+ assertEquals("1value", mock1.get("key", null));
+
+ String[] keys = mock1.keys();
+ assertEquals(4, keys.length);
+ for (int i = 0; i < keys.length; i++) {
+ String key = keys[i];
+ assertTrue("key".equals(key) || "KEY".equals(key)
+ || "/K/E/Y".equals(key)
+ || "/K/E\\Y\\abc~@!#$%^&*(\\".equals(key));
+ }
+ }
+
+ public void testNode() throws BackingStoreException {
+ 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());
+ }
+
+ public void testNodeExists() throws BackingStoreException {
+ 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"));
+ }
+
+ public void testParent() {
+ assertSame(parent, pref.parent());
+ AbstractPreferences child1 = new MockAbstractPreferences(pref, "child1");
+ assertSame(pref, child1.parent());
+ assertNull(root.parent());
+ }
+
+ public void testPut() throws BackingStoreException {
+ 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) {
+ }
+ }
+
+ public void testPutBoolean() {
+ 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));
+ }
+
+ public void testPutDouble() {
+ 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);
+ }
+
+ public void testPutFloat() {
+ 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);
+ }
+
+ public void testPutInt() {
+ 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));
+ }
+
+ public void testPutLong() {
+ 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));
+ }
+
+ public void testRemove() throws BackingStoreException {
+ 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);
+ } catch (NullPointerException e) {
+ }
+
+ pref.removeNode();
+ try {
+ pref.remove("key");
+ fail();
+ } catch (IllegalStateException e) {
+ }
+ }
+
+ public void testRemoveNode() throws BackingStoreException {
+ 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(""));
+ }
+
+ // public void testAddNodeChangeListener() throws BackingStoreException {
+ // try {
+ // pref.addNodeChangeListener(null);
+ // fail();
+ // } catch (NullPointerException e) {
+ // }
+ //
+ // Preferences child1 = null;
+ // Preferences child2 = null;
+ // Preferences child3 = null;
+ // //To get existed node doesn't create the change event
+ // try {
+ // nl = new MockNodeChangeListener();
+ // pref.addNodeChangeListener(nl);
+ // child1 = pref.node("mock1");
+ // assertEquals(1, nl.getAdded());
+ // nl.reset();
+ // child2 = pref.node("mock1");
+ // 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");
+ // 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();
+ // 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();
+ // 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");
+ // assertEquals(1, nl.getAdded());
+ // nl.reset();
+ // child3 = pref.node("mock4/mock5/mock6");
+ // assertEquals(0, nl.getAdded());
+ // nl.reset();
+ //
+ // child3.removeNode();
+ // assertEquals(0, nl.getRemoved());
+ // nl.reset();
+ //
+ // child3 = pref.node("mock4/mock7");
+ // assertEquals(1, nl.getAdded());
+ // nl.reset();
+ //
+ // child1.removeNode();
+ // assertEquals(2, nl.getRemoved());
+ // nl.reset();
+ // } finally {
+ // try {
+ // child1.removeNode();
+ // } catch (Exception e) {
+ // }
+ // }
+ //
+ // }
+
+ public void testAddPreferenceChangeListener() {
+ // TODO: start from here
+
+ }
+
+ public void testRemoveNodeChangeListener() {
+ 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) {
+ }
+ }
+
+ public void testRemovePreferenceChangeListener() {
+ 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) {
+ }
+
+ }
+
+ public void testSync() throws BackingStoreException {
+ pref.sync();
+ if (!(pref instanceof MockAbstractPreferences)) {
+ return;
+ }
+ MockAbstractPreferences p = (MockAbstractPreferences) pref;
+ p.resetSyncTimes();
+ p.sync();
+ assertEquals(1, p.getSyncTimes());
+
+ p.resetSyncTimes();
+ MockAbstractPreferences child = (MockAbstractPreferences) p
+ .node("child");
+ MockAbstractPreferences child2 = new MockAbstractPreferences(p,
+ "child2");
+ p.childs.put("child2", child2);
+ assertEquals(1, p.cachedChildrenImpl().length);
+ assertSame(child, p.cachedChildrenImpl()[0]);
+ p.sync();
+ assertEquals(1, p.getSyncTimes());
+ assertEquals(1, child.getSyncTimes());
+ assertEquals(0, child2.getSyncTimes());
+
+ p.resetSyncTimes();
+ child.resetSyncTimes();
+ child.sync();
+ assertEquals(0, p.getSyncTimes());
+ assertEquals(1, child.getSyncTimes());
+
+ p.resetSyncTimes();
+ child.resetSyncTimes();
+ MockAbstractPreferences grandson = (MockAbstractPreferences) child
+ .node("grandson");
+ child.sync();
+ assertEquals(0, p.getSyncTimes());
+ assertEquals(1, child.getSyncTimes());
+ assertEquals(1, grandson.getSyncTimes());
+ }
+
+ public void testFlush() throws BackingStoreException {
+ pref.flush();
+ if (!(pref instanceof MockAbstractPreferences)) {
+ return;
+ }
+ MockAbstractPreferences p = (MockAbstractPreferences) pref;
+ p.resetFlushedTimes();
+ p.flush();
+ assertEquals(1, p.getFlushedTimes());
+
+ p.resetFlushedTimes();
+ MockAbstractPreferences child = (MockAbstractPreferences) p
+ .node("child");
+ MockAbstractPreferences child2 = new MockAbstractPreferences(p,
+ "child2");
+ p.childs.put("child2", child2);
+ assertEquals(1, p.cachedChildrenImpl().length);
+ assertSame(child, p.cachedChildrenImpl()[0]);
+ p.flush();
+ assertEquals(1, p.getFlushedTimes());
+ assertEquals(1, child.getFlushedTimes());
+ assertEquals(0, child2.getFlushedTimes());
+
+ p.resetFlushedTimes();
+ child.resetFlushedTimes();
+ child.flush();
+ assertEquals(0, p.getFlushedTimes());
+ assertEquals(1, child.getFlushedTimes());
+
+ p.resetFlushedTimes();
+ child.resetFlushedTimes();
+ MockAbstractPreferences grandson = (MockAbstractPreferences) child
+ .node("grandson");
+ child.flush();
+ assertEquals(0, p.getFlushedTimes());
+ assertEquals(1, child.getFlushedTimes());
+ assertEquals(1, grandson.getFlushedTimes());
+
+ p.resetFlushedTimes();
+ child.resetFlushedTimes();
+ grandson.resetFlushedTimes();
+ child.removeNode();
+ child.flush();
+ assertEquals(0, p.getFlushedTimes());
+ assertEquals(1, child.getFlushedTimes());
+ assertEquals(0, grandson.getFlushedTimes());
+ }
+
+ public void testGetChild() throws BackingStoreException {
+ if (!(pref instanceof MockAbstractPreferences)) {
+ return;
+ }
+ MockAbstractPreferences p = (MockAbstractPreferences) pref;
+ assertNull(p.getChildImpl("child"));
+ MockAbstractPreferences child = new MockAbstractPreferences(p, "child");
+ p.childs.put("child", child);
+ assertSame(child, p.getChildImpl("child"));
+ assertNull(p.getChildImpl("child "));
+
+ assertNull(p.getChildImpl("child/grandson"));
+ child.childs.put("grandson", new MockAbstractPreferences(child,
+ "grandson"));
+ assertNull(p.getChildImpl("child/grandson"));
+
+ assertNull(p.getChildImpl(null));
+ assertNull(p.getChildImpl(""));
+ assertNull(p.getChildImpl(" "));
+ assertNull(p.getChildImpl("abc//abc"));
+ assertNull(p.getChildImpl("child/"));
+ assertNull(p.getChildImpl(longName + "a"));
+
+ child.removeNode();
+ assertNull(p.getChildImpl("child"));
+ }
+
+ public void testIsRemoved() throws BackingStoreException {
+ if (!(pref instanceof MockAbstractPreferences)) {
+ return;
+ }
+ MockAbstractPreferences p = (MockAbstractPreferences) pref;
+ assertFalse(p.isRemovedImpl());
+ p.removeNode();
+ assertTrue(p.isRemovedImpl());
+ }
+
+ public void testExportNode() throws Exception {
+ try {
+ pref.exportNode(null);
+ fail();
+ } catch (NullPointerException e) {
+ // Expected
+ }
+
+ pref.putBoolean("key", false);
+ Preferences child = pref.node("child<");
+ child.put("key2", "value2<");
+ Preferences grandson = child.node("grandson");
+ grandson.put("key3", "value3");
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ child.exportNode(out);
+
+ byte[] result = out.toByteArray();
+ ByteArrayInputStream in = new ByteArrayInputStream(result);
+
+ Document doc = parseXmlStream(in, true);
+
+ // only output this node without parent and children
+ String rootpath = "/preferences[@EXTERNAL_XML_VERSION='1.0']/root[@type='user']/node[@name='java']/node[@name='util']/node[@name='prefs']";
+ Node node = XPathAPI
+ .selectSingleNode(
+ doc,
+ rootpath
+ + "/node[@name='mock']/map/entry[@key='key' and @value='false']");
+ assertNull(node);
+ node = XPathAPI
+ .selectSingleNode(
+ doc,
+ rootpath
+ + "/node[@name='mock']/node[@name='child<']/map/entry[@key='key2' and @value='value2<']");
+ assertNotNull(node);
+ node = XPathAPI.selectSingleNode(doc, rootpath
+ + "/node[@name='mock']/node[@name='child']/node");
+ assertNull(node);
+ }
+
+ private static Document parseXmlStream(InputStream input, boolean validating)
+ throws SAXException, IOException, ParserConfigurationException {
+ // Create a builder factory
+ DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
+ factory.setValidating(validating);
+
+ // Create the builder and parse the file
+ DocumentBuilder builder = factory.newDocumentBuilder();
+ Document doc = builder.parse(input);
+ return doc;
+ }
+
+ public void testExportSubtree() throws Exception {
+ try {
+ pref.exportSubtree(null);
+ fail();
+ } catch (NullPointerException e) {
+ // Expected
+ }
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ pref.putBoolean("key", false);
+ Preferences child = pref.node("child");
+ child.put("key2", "value2");
+ Preferences grandson = child.node("grandson");
+ grandson.put("key3", "value3");
+ child.node("grandson2");
+ Preferences grandgrandson = grandson.node("grandgrandson");
+ grandgrandson.put("key4", "value4");
+ child.exportSubtree(out);
+
+ byte[] result = out.toByteArray();
+ // System.out.println(new String(result, "utf-8"));
+ ByteArrayInputStream in = new ByteArrayInputStream(result);
+ Document doc = parseXmlStream(in, true);
+
+ // only output this node and subtree without parent
+ String rootpath = "/preferences[@EXTERNAL_XML_VERSION='1.0']/root[@type='user']/node[@name='java']/node[@name='util']/node[@name='prefs']";
+ Node node = XPathAPI
+ .selectSingleNode(
+ doc,
+ rootpath
+ + "/node[@name='mock']/map/entry[@key='key' and @value='false']");
+ assertNull(node);
+ node = XPathAPI
+ .selectSingleNode(
+ doc,
+ rootpath
+ + "/node[@name='mock']/node[@name='child']/map/entry[@key='key2' and @value='value2']");
+ assertNotNull(node);
+ node = XPathAPI
+ .selectSingleNode(
+ doc,
+ rootpath
+ + "/node[@name='mock']/node[@name='child']/node[@name='grandson']/map/entry[@key='key3' and @value='value3']");
+ assertNotNull(node);
+ node = XPathAPI
+ .selectSingleNode(
+ doc,
+ rootpath
+ + "/node[@name='mock']/node[@name='child']/node[@name='grandson']/node[@name='grandgrandson']/map/entry[@key='key4' and @value='value4']");
+ assertNotNull(node);
+ node = XPathAPI
+ .selectSingleNode(
+ doc,
+ rootpath
+ + "/node[@name='mock']/node[@name='child']/node[@name='grandson2']/map");
+ assertNotNull(node);
+ }
+
+ public void testCachedChildren() throws Exception {
+ if (!(pref instanceof MockAbstractPreferences)) {
+ return;
+ }
+ MockAbstractPreferences p = (MockAbstractPreferences) pref;
+ assertEquals(0, p.cachedChildrenImpl().length);
+
+ MockAbstractPreferences child = (MockAbstractPreferences) p
+ .getChildImpl("child");
+ assertNull(child);
+
+ child = new MockAbstractPreferences(p, "child");
+ assertSame(child, p.getChildImpl("child"));
+
+ assertEquals(0, p.cachedChildrenImpl().length);
+
+ p.node("child");
+ assertSame(child, p.cachedChildrenImpl()[0]);
+
+ MockAbstractPreferences grandchild = new MockAbstractPreferences(child,
+ "grandchild");
+ assertSame(grandchild, child.getChildImpl("grandchild"));
+ assertNull(p.getChildImpl("grandchild"));
+
+ assertEquals(1, p.cachedChildrenImpl().length);
+ assertEquals(0, child.cachedChildrenImpl().length);
+
+ p.node("child/grandchild");
+ assertSame(child, p.cachedChildrenImpl()[0]);
+ assertSame(grandchild, child.cachedChildrenImpl()[0]);
+ assertEquals(1, p.cachedChildrenImpl().length);
+ assertEquals(1, child.cachedChildrenImpl().length);
+
+ p.childs.put("child2", new MockAbstractPreferences(p, "child2"));
+ p.nodeExists("child2/grandchild");
+ assertSame(child, p.cachedChildrenImpl()[0]);
+ assertSame(grandchild, child.cachedChildrenImpl()[0]);
+ assertEquals(1, p.cachedChildrenImpl().length);
+ assertEquals(1, child.cachedChildrenImpl().length);
+ }
+
+ public void testAbstractMethod() {
+ if (!(pref instanceof MockAbstractPreferences)) {
+ return;
+ }
+ ((MockAbstractPreferences) pref).protectedAbstractMethod();
+ }
+
+ public Object invokeNonPublicMethod(AbstractPreferences obj, String name,
+ Class<?>[] params, Object[] paramValues) throws SecurityException,
+ NoSuchMethodException, IllegalArgumentException,
+ IllegalAccessException, InvocationTargetException {
+ Method method = obj.getClass().getMethod(name, params);
+ method.setAccessible(true);
+ return method.invoke(obj, paramValues);
+ }
+
+ public void testBackingStoreException() throws IOException,
+ BackingStoreException {
+ if (!(pref instanceof MockAbstractPreferences)) {
+ return;
+ }
+ MockAbstractPreferences p = (MockAbstractPreferences) pref;
+ p.setResult(MockAbstractPreferences.backingException);
+ try {
+ p.childrenNames();
+ fail();
+ } catch (BackingStoreException e) {
+ }
+ p.put("exceptionkey", "value");
+ p.absolutePath();
+ p.toString();
+ assertEquals("exception default", p.get("key", "exception default"));
+ p.remove("key");
+ try {
+ p.clear();
+ fail();
+ } catch (BackingStoreException e) {
+ }
+ p.putInt("key", 3);
+ p.getInt("key", 3);
+ p.putLong("key", 3l);
+ p.getLong("key", 3l);
+ p.putDouble("key", 3);
+ p.getDouble("key", 3);
+ p.putBoolean("key", true);
+ p.getBoolean("key", true);
+ p.putFloat("key", 3f);
+ p.getFloat("key", 3f);
+ p.putByteArray("key", new byte[0]);
+ p.getByteArray("key", new byte[0]);
+ try {
+ p.keys();
+ fail();
+ } catch (BackingStoreException e) {
+ }
+
+ try {
+ p.keys();
+ fail();
+ } catch (BackingStoreException e) {
+ }
+ try {
+ p.childrenNames();
+ fail();
+ } catch (BackingStoreException e) {
+ }
+ p.parent();
+ p.node("");
+ p.nodeExists("");
+ try {
+ p.removeNode();
+ fail();
+ } catch (BackingStoreException e) {
+ }
+ p.name();
+ p.absolutePath();
+ p.isUserNode();
+ MockPreferenceChangeListener mockPreferenceChangeListener = new MockPreferenceChangeListener();
+ p.addPreferenceChangeListener(mockPreferenceChangeListener);
+ p.removePreferenceChangeListener(mockPreferenceChangeListener);
+ MockNodeChangeListener mockNodeChangeListener = new MockNodeChangeListener();
+ p.addNodeChangeListener(mockNodeChangeListener);
+ p.removeNodeChangeListener(mockNodeChangeListener);
+ p.toString();
+ try {
+ p.sync();
+ fail();
+ } catch (BackingStoreException e) {
+ }
+ try {
+ p.flush();
+ fail();
+ } catch (BackingStoreException e) {
+ }
+ try {
+ p.exportNode(new ByteArrayOutputStream());
+ fail();
+ } catch (BackingStoreException e) {
+ }
+ try {
+ p.exportSubtree(new ByteArrayOutputStream());
+ fail();
+ } catch (BackingStoreException e) {
+ }
+ p.isRemovedImpl();
+ try {
+ p.getChildImpl(null);
+ fail();
+ } catch (BackingStoreException e) {
+ }
+ p.cachedChildrenImpl();
+ }
+
+ public void testRuntimeException() throws IOException,
+ BackingStoreException {
+ if (!(pref instanceof MockAbstractPreferences)) {
+ return;
+ }
+ MockAbstractPreferences p = (MockAbstractPreferences) pref;
+ p.setResult(MockAbstractPreferences.runtimeException);
+ try {
+ p.childrenNames();
+ fail();
+ } catch (MockRuntimeException e) {
+ }
+ try {
+ p.put("exceptionkey", "value");
+ fail();
+ } catch (MockRuntimeException e) {
+ }
+ p.absolutePath();
+ p.toString();
+ assertEquals("exception default", p.get("key", "exception default"));
+ try {
+ p.remove("key");
+ fail();
+ } catch (MockRuntimeException e) {
+ }
+ try {
+ p.clear();
+ fail();
+ } catch (MockRuntimeException e) {
+ }
+ try {
+ p.putInt("key", 3);
+ fail();
+ } catch (MockRuntimeException e) {
+ }
+ p.getInt("key", 3);
+ try {
+ p.putLong("key", 3l);
+ fail();
+ } catch (MockRuntimeException e) {
+ }
+ p.getLong("key", 3l);
+ try {
+ p.putDouble("key", 3);
+ fail();
+ } catch (MockRuntimeException e) {
+ }
+ p.getDouble("key", 3);
+ try {
+ p.putBoolean("key", true);
+ fail();
+ } catch (MockRuntimeException e) {
+ }
+ p.getBoolean("key", true);
+ try {
+ p.putFloat("key", 3f);
+ fail();
+ } catch (MockRuntimeException e) {
+ }
+ p.getFloat("key", 3f);
+ try {
+ p.putByteArray("key", new byte[0]);
+ fail();
+ } catch (MockRuntimeException e) {
+ }
+ p.getByteArray("key", new byte[0]);
+ try {
+ p.keys();
[... 601 lines stripped ...]