tests/libjava-mauve/src/gnu/testlet/java/util/prefs/PreferenceTest.java
branchjk_new_structure
changeset 1541 75c2e24dea9a
parent 1540 92ac284961c1
child 1542 be11db817bcf
--- a/tests/libjava-mauve/src/gnu/testlet/java/util/prefs/PreferenceTest.java	Fri Jul 20 21:39:51 2012 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,496 +0,0 @@
-/*
- * PreferenceTest.java -- simple test for java.utils.prefs Copyright (C) 2006
- * Lima Software.
- * 
- * This file is part of Mauve.
- * 
- * Mauve is free software; you can redistribute it and/or modify it under the
- * terms of the GNU General Public License as published by the Free Software
- * Foundation; either version 2, or (at your option) any later version.
- * 
- * Mauve is distributed in the hope that it will be useful, but WITHOUT ANY
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
- * A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- * 
- * You should have received a copy of the GNU General Public License along with
- * Mauve; see the file COPYING. If not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- * 
- */
-
-// 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;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-
-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;
-
-/**
- * This simple test just read and write a set of preference. Does not assume a
- * particular backend.
- * 
- * @author Mario Torre <neugens@limasoftware.net>
- */
-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();
-    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);
-    }
-  }
-}