This is the mail archive of the
mauve-patches@sourceware.org
mailing list for the Mauve project.
FYI: Preference test update
- From: Mario Torre <neugens at limasoftware dot net>
- To: mauve-patches at sources dot redhat dot com
- Date: Wed, 27 Sep 2006 16:57:35 +0200
- Subject: FYI: Preference test update
This adds a test for the latest updates in the GConf preference backend.
I have also reformatted the test a bit.
2006-09-27 Mario Torre <neugens@limasoftware.net>
* gnu/testlet/java/util/prefs/PreferenceTest.java: code reformat.
(testSpecialCharacters): new test.
(test): enable use of new test.
--
Lima Software, SO.PR.IND. s.r.l.
http://www.limasoftware.net/
pgp key: http://subkeys.pgp.net/
Proud GNU Classpath developer: http://www.classpath.org/
Read About us at: http://planet.classpath.org
Please, support open standards:
http://opendocumentfellowship.org/petition/
http://www.nosoftwarepatents.com/
### Eclipse Workspace Patch 1.0
#P mauve
Index: gnu/testlet/java/util/prefs/PreferenceTest.java
===================================================================
RCS file: /cvs/mauve/mauve/gnu/testlet/java/util/prefs/PreferenceTest.java,v
retrieving revision 1.2
diff -u -r1.2 PreferenceTest.java
--- gnu/testlet/java/util/prefs/PreferenceTest.java 21 Jun 2006 21:45:48 -0000 1.2
+++ gnu/testlet/java/util/prefs/PreferenceTest.java 27 Sep 2006 14:43:12 -0000
@@ -1,6 +1,6 @@
/*
- * PreferenceTest.java -- simple test for java.utils.prefs
- * Copyright (C) 2006 Lima Software.
+ * PreferenceTest.java -- simple test for java.utils.prefs Copyright (C) 2006
+ * Lima Software.
*
* This file is part of Mauve.
*
@@ -21,6 +21,9 @@
// Tags: JDK1.4
package gnu.testlet.java.util.prefs;
+import gnu.testlet.TestHarness;
+import gnu.testlet.Testlet;
+
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
@@ -30,14 +33,10 @@
import java.util.prefs.BackingStoreException;
import java.util.prefs.NodeChangeEvent;
import java.util.prefs.NodeChangeListener;
-
import java.util.prefs.PreferenceChangeEvent;
import java.util.prefs.PreferenceChangeListener;
import java.util.prefs.Preferences;
-import gnu.testlet.TestHarness;
-import gnu.testlet.Testlet;
-
/**
* This simple test just read and write a set of preference. Does not assume a
* particular backend.
@@ -46,392 +45,452 @@
*/
public class PreferenceTest implements Testlet
{
- /**
- * The expected full name of this preference node. <strong>Note:</strong>
- * change it if you move this class, it always reflects the package name.
- */
- private static final String FULL_PATH = "/gnu/testlet/java/util/prefs";
-
- /**
- * Default key used for tests.
- */
- private static final String KEY = "AppName";
-
- /**
- * Default value for the test key.
- */
- private static final String VALUE =
- "GNU Classpath - Preference API Test Case";
-
- /**
- * Defines if we want debug information on the default debug log or not.
- * Enable the if you need it or leave disabled for normal tests.
- */
- private static final boolean DEBUG = false;
-
- /* Test Harness */
- protected TestHarness harness = null;
-
- /** Preference */
- private Preferences prefs = null;
-
- public void test(TestHarness harness)
- {
- this.harness = harness;
-
- // initiliaze tests, call it before any other method of this class
- setup();
-
- if (DEBUG) printInfo();
-
- // run tests
- testAbsolutePath();
-
- // clear the preference tree, to be sure it does not contains
- // keys we will use
- testClear();
-
- testPut();
- testByte();
- testBoolean();
-
- testListener();
- testChildren();
- }
-
- /**
- * Setup the preference api backend.
- */
- private void setup()
- {
- //System.setProperty("java.util.prefs.PreferencesFactory",
- // "gnu.java.util.prefs.GConfBasedFactory");
-
- this.prefs = Preferences.userNodeForPackage(PreferenceTest.class);
- }
-
- private void testAbsolutePath()
- {
- this.harness.checkPoint("absolutePath()");
-
- String absolutePath = this.prefs.absolutePath();
- print("Absolute path: " + absolutePath);
-
- this.harness.check(FULL_PATH.compareTo(absolutePath) == 0);
- }
-
- private void testClear()
- {
- this.harness.checkPoint("testClear()");
-
- try {
- this.prefs.clear();
-
- } catch (BackingStoreException e) {
- print(e.getLocalizedMessage());
- this.harness.fail("testClear()");
- }
-
- this.harness.check(true);
- }
-
- /**
- * Put the default key on the preference node, then get it and check the
- * result to see if the preference api is actually capable of storing
- * preferences.
- */
- private void testPut()
- {
- this.harness.checkPoint("testPut()");
-
- this.prefs.put(KEY, VALUE);
-
- // suggest a sync to try to avoid memory caching.
- try {
- this.prefs.sync();
-
- } catch (BackingStoreException e) {
- print(e.getLocalizedMessage());
- this.harness.fail("testPut(), call to sync");
- }
-
- String value = this.prefs.get(KEY, "Wrong value for key: " + KEY
- + ", expected: " + VALUE);
-
- print("Key (" + KEY + "): " + value);
- this.harness.check(VALUE.compareTo(value) == 0);
- }
-
- /**
- * Add a series of children to this node, put some preferences inside them
- * and retrieve everything, checking that the preference backend correctly
- * handles the tree structure of the entries under the current node.
- * <strong>Note</strong>: this test removes the preference node.
- */
- private void testChildren()
- {
- this.harness.checkPoint("testChildren()");
-
- String absolutePath = null;
-
- // add 3 new nodes, these will be direct children of the current node
-
- // node 1
- Preferences pref1 = this.prefs.node("children_1");
- this.harness.check("children_1".compareTo(pref1.name()) == 0);
- absolutePath = pref1.absolutePath();
- this.harness.check(
- (FULL_PATH + "/children_1").compareTo(absolutePath) == 0);
-
- // node 2
- Preferences pref2 = this.prefs.node("children_2");
- this.harness.check("children_2".compareTo(pref2.name()) == 0);
- absolutePath = pref2.absolutePath();
- this.harness.check(
- (FULL_PATH + "/children_2").compareTo(absolutePath) == 0);
-
- // node 3
- Preferences pref3 = this.prefs.node("children_3");
- this.harness.check("children_3".compareTo(pref3.name()) == 0);
- absolutePath = pref3.absolutePath();
- this.harness.check(
- (FULL_PATH + "/children_3").compareTo(absolutePath) == 0);
-
- // now add a preference key to each of these new nodes
- pref1.put("key1", "value1");
- pref2.put("key2", "value2");
- pref3.put("key3", "value3");
-
- // add a subnode for child #1
- Preferences child1 = pref1.node("subPreference1");
- this.harness.check("subPreference1".compareTo(child1.name()) == 0);
- absolutePath = child1.absolutePath();
- this.harness.check((FULL_PATH + "/children_1/" + "subPreference1")
- .compareTo(absolutePath) == 0);
-
- child1.put("key1-child1", "some value");
-
- // retrieve the list of children of the root node
- this.harness.checkPoint("testAddChildren() - check new children");
- String[] expResult = { "children_1", "children_2", "children_3" };
- if (!listChildren(this.prefs, expResult)) {
- this.harness.fail("testAddChildren(), children listing error");
- }
-
- this.harness.checkPoint("testAddChildren() - check subnodes");
- expResult = new String[] { "subPreference1"};
- if (!listChildren(pref1, expResult)) {
- this.harness.fail("testAddChildren(), children listing error");
- }
-
- // clean everything
- try {
- this.prefs.removeNode();
- this.prefs.flush();
-
- } catch (BackingStoreException e) {
- print(e.getLocalizedMessage());
- this.harness.fail("testAddChildren(), call to clear()");
- }
-
- // to check that the node is empty we simply call childrenNames on it
- // this operation should fail because the node does not exist anymore
- this.harness.checkPoint("testAddChildren() - checking emptyness");
- try {
- this.prefs.childrenNames();
- this.harness.fail("The node should not exist anymore!");
-
- } catch (IllegalStateException e) {
- this.harness.check(true);
-
- } catch (BackingStoreException e) {
- print(e.getLocalizedMessage());
- this.harness.fail("The node should not exist anymore!");
- }
- }
-
- private boolean listChildren(Preferences pref, String[] expResult)
- {
- boolean _res = false;
-
- try {
- String[] result = pref.childrenNames();
-
- print("Resuls length: " + result.length + ", expected: "
- + expResult.length);
- this.harness.check(result.length == expResult.length);
-
- for (int i = 0; i < expResult.length; i++) {
- print("result[" + i + "] = " + result[i] + ", expected = "
- + expResult[i]);
- this.harness.check(result[i], expResult[i]);
- }
-
- _res = true;
-
- } catch (BackingStoreException e) {
- print(e.getLocalizedMessage());
- this.harness.fail("call to childrenNames()");
- }
-
- return _res;
- }
-
- private void testByte()
- {
- this.harness.checkPoint("testByte()");
-
- String string = "an array of bytes value";
- byte[] bytes = null;
- byte[] result = null;
-
- ByteArrayOutputStream stream = new ByteArrayOutputStream();
- ObjectOutputStream oStream;
-
- try {
- oStream = new ObjectOutputStream(stream);
- oStream.writeObject(string);
- bytes = stream.toByteArray();
-
- this.harness.checkPoint("testByte() - put byte array");
- prefs.putByteArray(KEY, bytes);
-
- this.harness.checkPoint("testByte() - get byte array");
- result = prefs.getByteArray(KEY, null);
-
- // this fails, but the result is correct when restoring the
- // String
- //this.harness.check(result, bytes);
-
- ByteArrayInputStream iStream = new ByteArrayInputStream(result);
- ObjectInputStream oiStream = new ObjectInputStream(iStream);
- String rString = (String) oiStream.readObject();
-
- print("Result: " + rString + ", expected: " + string);
- this.harness.check(rString, string);
-
- } catch (IOException e) {
- print(e.getLocalizedMessage());
- this.harness.fail("call to testByte() - IO Exception");
-
- } catch (ClassNotFoundException e) {
- print(e.getLocalizedMessage());
- this.harness.fail("call to testByte() - ClassNotFoundException");
- }
- }
-
- private void testBoolean()
- {
- this.harness.checkPoint("testBoolean()");
-
- String key = "boolean_key";
- String _true = "TrUe";
-
- // test "normal" booleans
- this.prefs.putBoolean(key, true);
- boolean result = this.prefs.getBoolean(key, false);
-
- this.harness.check(result, true);
-
- // test String as boolean
- this.prefs.remove(key);
- try {
- this.prefs.flush();
-
- } catch (BackingStoreException e) {
- print(e.getLocalizedMessage());
- this.harness.fail("call to testBoolean() - fail to flush");
- }
-
- this.prefs.put(key, _true);
- result = this.prefs.getBoolean(key, false);
-
- this.harness.check(result, true);
- }
-
- private void testListener()
- {
- this.harness.checkPoint("testListener()");
-
- PreferenceListener listener = new PreferenceListener();
-
- this.harness.checkPoint("testListener() - adding listeners");
- this.prefs.addNodeChangeListener(listener);
- this.prefs.addPreferenceChangeListener(listener);
-
- // store this, key, read it then remove it
- this.harness.checkPoint("testListener() - inserting key");
-
- this.prefs.put("new_key", "some value");
- String key = this.prefs.get("new_key", "Wrong! Wrong! Wrong!");
- this.harness.check(key, "some value");
-
- this.harness.checkPoint("testListener() - updating key");
-
- this.prefs.put("new_key", "some other value");
- key = this.prefs.get("new_key", "Wrong! Wrong! Wrong!");
- this.harness.check(key, "some other value");
-
- this.harness.checkPoint("testListener() - removing listeners");
-
- this.prefs.removeNodeChangeListener(listener);
- this.prefs.removePreferenceChangeListener(listener);
-
- this.harness.checkPoint("testListener() - removing key");
- this.prefs.remove("new_key");
- }
-
- /**
- * Prints on screen some information about the class we are about to test.
- * This can be useful for debugging, ant to check if a particoular backend
- * is enabled.
- */
- private void printInfo()
- {
- String backendName = System.getProperty(
- "java.util.prefs.PreferencesFactory",
- "No backend registered, using default backend");
- String vendor = System.getProperty("java.vendor");
-
- this.harness.debug(vendor);
- this.harness.debug(backendName);
- }
-
- private void print(String message)
- {
- if (DEBUG) harness.debug(message);
- }
-
- private class PreferenceListener
- implements NodeChangeListener, PreferenceChangeListener
- {
- public void childAdded(NodeChangeEvent event)
- {
- PreferenceTest.this.harness.check(true);
-
- print("Child added!");
- String name = event.getChild().name();
- print("name: " + name);
- }
-
- public void childRemoved(NodeChangeEvent event)
- {
- PreferenceTest.this.harness.check(true);
-
- print("Child removed!");
- String name = event.getChild().name();
- print("name: " + name);
- }
-
- public void preferenceChange(PreferenceChangeEvent event)
- {
- PreferenceTest.this.harness.check(true);
-
- print("Preference changed!");
- String name = event.getNode().name();
- String value = event.getNewValue();
- print("name: " + name);
- print("value: " + value);
- }
- }
-}
\ No newline at end of file
+ /**
+ * The expected full name of this preference node. <strong>Note:</strong>
+ * change it if you move this class, it always reflects the package name.
+ */
+ private static final String FULL_PATH = "/gnu/testlet/java/util/prefs";
+
+ /**
+ * Default key used for tests.
+ */
+ private static final String KEY = "AppName";
+
+ /**
+ * Default value for the test key.
+ */
+ private static final String VALUE = "GNU Classpath - Preference API Test Case";
+
+ /**
+ * Defines if we want debug information on the default debug log or not.
+ * Enable the if you need it or leave disabled for normal tests.
+ */
+ private static final boolean DEBUG = false;
+
+ /* Test Harness */
+ protected TestHarness harness = null;
+
+ /** Preference */
+ private Preferences prefs = null;
+
+ public void test(TestHarness harness)
+ {
+ this.harness = harness;
+
+ // initiliaze tests, call it before any other method of this class
+ setup();
+
+ if (DEBUG) printInfo();
+
+ // run tests
+ testAbsolutePath();
+
+ // clear the preference tree, to be sure it does not contains
+ // keys we will use
+ testClear();
+
+ testPut();
+ testByte();
+ testBoolean();
+ testSpecialCharacters();
+
+ testListener();
+ testChildren();
+ }
+
+ /**
+ * Setup the preference api backend.
+ */
+ private void setup()
+ {
+ // System.setProperty("java.util.prefs.PreferencesFactory",
+ // "gnu.java.util.prefs.GConfBasedFactory");
+
+ this.prefs = Preferences.userNodeForPackage(PreferenceTest.class);
+ }
+
+ private void testAbsolutePath()
+ {
+ this.harness.checkPoint("absolutePath()");
+
+ String absolutePath = this.prefs.absolutePath();
+ print("Absolute path: " + absolutePath);
+
+ this.harness.check(FULL_PATH.compareTo(absolutePath) == 0);
+ }
+
+ private void testClear()
+ {
+ this.harness.checkPoint("testClear()");
+
+ try
+ {
+ this.prefs.clear();
+ }
+ catch (BackingStoreException e)
+ {
+ print(e.getLocalizedMessage());
+ this.harness.fail("testClear()");
+ }
+
+ this.harness.check(true);
+ }
+
+ /**
+ * Put the default key on the preference node, then get it and check the
+ * result to see if the preference api is actually capable of storing
+ * preferences.
+ */
+ private void testPut()
+ {
+ this.harness.checkPoint("testPut()");
+
+ this.prefs.put(KEY, VALUE);
+
+ // suggest a sync to try to avoid memory caching.
+ try
+ {
+ this.prefs.sync();
+
+ }
+ catch (BackingStoreException e)
+ {
+ print(e.getLocalizedMessage());
+ this.harness.fail("testPut(), call to sync");
+ }
+
+ String value
+ = this.prefs.get(KEY,
+ "Wrong value for key: " + KEY + ", expected: " + VALUE);
+
+ print("Key (" + KEY + "): " + value);
+ this.harness.check(VALUE.compareTo(value) == 0);
+ }
+
+ /**
+ * Add a series of children to this node, put some preferences inside them and
+ * retrieve everything, checking that the preference backend correctly handles
+ * the tree structure of the entries under the current node. <strong>Note</strong>:
+ * this test removes the preference node.
+ */
+ private void testChildren()
+ {
+ this.harness.checkPoint("testChildren()");
+
+ String absolutePath = null;
+
+ // add 3 new nodes, these will be direct children of the current node
+
+ // node 1
+ Preferences pref1 = this.prefs.node("children_1");
+ this.harness.check("children_1".compareTo(pref1.name()) == 0);
+ absolutePath = pref1.absolutePath();
+ this.harness
+ .check((FULL_PATH + "/children_1").compareTo(absolutePath) == 0);
+
+ // node 2
+ Preferences pref2 = this.prefs.node("children_2");
+ this.harness.check("children_2".compareTo(pref2.name()) == 0);
+ absolutePath = pref2.absolutePath();
+ this.harness
+ .check((FULL_PATH + "/children_2").compareTo(absolutePath) == 0);
+
+ // node 3
+ Preferences pref3 = this.prefs.node("children_3");
+ this.harness.check("children_3".compareTo(pref3.name()) == 0);
+ absolutePath = pref3.absolutePath();
+ this.harness
+ .check((FULL_PATH + "/children_3").compareTo(absolutePath) == 0);
+
+ // now add a preference key to each of these new nodes
+ pref1.put("key1", "value1");
+ pref2.put("key2", "value2");
+ pref3.put("key3", "value3");
+
+ // add a subnode for child #1
+ Preferences child1 = pref1.node("subPreference1");
+ this.harness.check("subPreference1".compareTo(child1.name()) == 0);
+ absolutePath = child1.absolutePath();
+ this.harness.check((FULL_PATH + "/children_1/" + "subPreference1")
+ .compareTo(absolutePath) == 0);
+
+ child1.put("key1-child1", "some value");
+
+ // retrieve the list of children of the root node
+ this.harness.checkPoint("testAddChildren() - check new children");
+ String[] expResult = {
+ "children_1", "children_2", "children_3"
+ };
+ if (!listChildren(this.prefs, expResult))
+ {
+ this.harness.fail("testAddChildren(), children listing error");
+ }
+
+ this.harness.checkPoint("testAddChildren() - check subnodes");
+ expResult = new String[] {
+ "subPreference1"
+ };
+ if (!listChildren(pref1, expResult))
+ {
+ this.harness.fail("testAddChildren(), children listing error");
+ }
+
+ // clean everything
+ try
+ {
+ this.prefs.removeNode();
+ this.prefs.flush();
+
+ }
+ catch (BackingStoreException e)
+ {
+ print(e.getLocalizedMessage());
+ this.harness.fail("testAddChildren(), call to clear()");
+ }
+
+ // to check that the node is empty we simply call childrenNames on it
+ // this operation should fail because the node does not exist anymore
+ this.harness.checkPoint("testAddChildren() - checking emptyness");
+ try
+ {
+ this.prefs.childrenNames();
+ this.harness.fail("The node should not exist anymore!");
+ }
+ catch (IllegalStateException e)
+ {
+ this.harness.check(true);
+ }
+ catch (BackingStoreException e)
+ {
+ print(e.getLocalizedMessage());
+ this.harness.fail("The node should not exist anymore!");
+ }
+ }
+
+ private boolean listChildren(Preferences pref, String[] expResult)
+ {
+ boolean _res = false;
+
+ try
+ {
+ String[] result = pref.childrenNames();
+
+ print("Resuls length: " + result.length +
+ ", expected: " + expResult.length);
+
+ this.harness.check(result.length == expResult.length);
+
+ for (int i = 0; i < expResult.length; i++)
+ {
+ print("result[" + i + "] = " + result[i] +
+ ", expected = " + expResult[i]);
+ this.harness.check(result[i], expResult[i]);
+ }
+
+ _res = true;
+
+ }
+ catch (BackingStoreException e)
+ {
+ print(e.getLocalizedMessage());
+ this.harness.fail("call to childrenNames()");
+ }
+
+ return _res;
+ }
+
+ private void testByte()
+ {
+ this.harness.checkPoint("testByte()");
+
+ String string = "an array of bytes value";
+ byte[] bytes = null;
+ byte[] result = null;
+
+ ByteArrayOutputStream stream = new ByteArrayOutputStream();
+ ObjectOutputStream oStream;
+
+ try
+ {
+ oStream = new ObjectOutputStream(stream);
+ oStream.writeObject(string);
+ bytes = stream.toByteArray();
+
+ this.harness.checkPoint("testByte() - put byte array");
+ prefs.putByteArray(KEY, bytes);
+
+ this.harness.checkPoint("testByte() - get byte array");
+ result = prefs.getByteArray(KEY, null);
+
+ // this fails, but the result is correct when restoring the
+ // String
+ // this.harness.check(result, bytes);
+
+ ByteArrayInputStream iStream = new ByteArrayInputStream(result);
+ ObjectInputStream oiStream = new ObjectInputStream(iStream);
+ String rString = (String) oiStream.readObject();
+
+ print("Result: " + rString + ", expected: " + string);
+ this.harness.check(rString, string);
+
+ }
+ catch (IOException e)
+ {
+ print(e.getLocalizedMessage());
+ this.harness.fail("call to testByte() - IO Exception");
+ }
+ catch (ClassNotFoundException e)
+ {
+ print(e.getLocalizedMessage());
+ this.harness.fail("call to testByte() - ClassNotFoundException");
+ }
+ }
+
+ private void testBoolean()
+ {
+ this.harness.checkPoint("testBoolean()");
+
+ String key = "boolean_key";
+ String _true = "TrUe";
+
+ // test "normal" booleans
+ this.prefs.putBoolean(key, true);
+ boolean result = this.prefs.getBoolean(key, false);
+
+ this.harness.check(result, true);
+
+ // test String as boolean
+ this.prefs.remove(key);
+ try
+ {
+ this.prefs.flush();
+ }
+ catch (BackingStoreException e)
+ {
+ print(e.getLocalizedMessage());
+ this.harness.fail("call to testBoolean() - fail to flush");
+ }
+
+ this.prefs.put(key, _true);
+ result = this.prefs.getBoolean(key, false);
+
+ this.harness.check(result, true);
+ }
+
+ /**
+ * This test is used by the GConf backend to test if it correctly handles
+ * nodes that contains invalid characters.
+ */
+ private void testSpecialCharacters()
+ {
+ this.harness.checkPoint("testSpecialCharacters()");
+
+ // try an invalid name as path
+ Preferences _prefs = this.prefs.node("invalid children node");
+ _prefs.put("Invalid Key", "An invalid key, on an invalid subnode");
+ _prefs.put("Valid_Key", "A valid key, on an invalid subnode");
+
+ String one = _prefs.get("Invalid Key", "unable to get the invalid key");
+ String two = _prefs.get("Valid_Key", "unable to get the invalid key");
+
+ this.harness.check(one, "An invalid key, on an invalid subnode");
+ this.harness.check(two, "A valid key, on an invalid subnode");
+
+ try
+ {
+ _prefs.flush();
+ _prefs.removeNode();
+ }
+ catch (BackingStoreException e)
+ {
+ print(e.getLocalizedMessage());
+ this.harness.fail("call to testSpecialCharacters() fail to removeNode");
+ }
+ }
+
+ private void testListener()
+ {
+ this.harness.checkPoint("testListener()");
+
+ PreferenceListener listener = new PreferenceListener();
+
+ this.harness.checkPoint("testListener() - adding listeners");
+ this.prefs.addNodeChangeListener(listener);
+ this.prefs.addPreferenceChangeListener(listener);
+
+ // store this, key, read it then remove it
+ this.harness.checkPoint("testListener() - inserting key");
+
+ this.prefs.put("new_key", "some value");
+ String key = this.prefs.get("new_key", "Wrong! Wrong! Wrong!");
+ this.harness.check(key, "some value");
+
+ this.harness.checkPoint("testListener() - updating key");
+
+ this.prefs.put("new_key", "some other value");
+ key = this.prefs.get("new_key", "Wrong! Wrong! Wrong!");
+ this.harness.check(key, "some other value");
+
+ this.harness.checkPoint("testListener() - removing listeners");
+
+ this.prefs.removeNodeChangeListener(listener);
+ this.prefs.removePreferenceChangeListener(listener);
+
+ this.harness.checkPoint("testListener() - removing key");
+ this.prefs.remove("new_key");
+ }
+
+ /**
+ * Prints on screen some information about the class we are about to test.
+ * This can be useful for debugging, ant to check if a particoular backend is
+ * enabled.
+ */
+ private void printInfo()
+ {
+ String backendName = System.getProperty(
+ "java.util.prefs.PreferencesFactory",
+ "No backend registered, using default backend");
+ String vendor = System.getProperty("java.vendor");
+
+ this.harness.debug(vendor);
+ this.harness.debug(backendName);
+ }
+
+ private void print(String message)
+ {
+ if (DEBUG) harness.debug(message);
+ }
+
+ private class PreferenceListener implements NodeChangeListener,
+ PreferenceChangeListener
+ {
+ public void childAdded(NodeChangeEvent event)
+ {
+ PreferenceTest.this.harness.check(true);
+
+ print("Child added!");
+ String name = event.getChild().name();
+ print("name: " + name);
+ }
+
+ public void childRemoved(NodeChangeEvent event)
+ {
+ PreferenceTest.this.harness.check(true);
+
+ print("Child removed!");
+ String name = event.getChild().name();
+ print("name: " + name);
+ }
+
+ public void preferenceChange(PreferenceChangeEvent event)
+ {
+ PreferenceTest.this.harness.check(true);
+
+ print("Preference changed!");
+ String name = event.getNode().name();
+ String value = event.getNewValue();
+ print("name: " + name);
+ print("value: " + value);
+ }
+ }
+}