You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by eb...@apache.org on 2005/09/30 00:24:33 UTC

svn commit: r292567 - in /jakarta/commons/proper/configuration/trunk: ./ src/java/org/apache/commons/configuration/plist/ src/test/org/apache/commons/configuration/plist/

Author: ebourg
Date: Thu Sep 29 15:24:16 2005
New Revision: 292567

URL: http://svn.apache.org/viewcvs?rev=292567&view=rev
Log:
Improved the test coverage on the plist package

Added:
    jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestPropertyListParser.java
Modified:
    jakarta/commons/proper/configuration/trunk/project.properties
    jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListConfiguration.java
    jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListParser.java
    jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListParser.jj
    jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListParserTokenManager.java
    jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/SimpleCharStream.java
    jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/XMLPropertyListConfiguration.java
    jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestPropertyListConfiguration.java
    jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestXMLPropertyListConfiguration.java

Modified: jakarta/commons/proper/configuration/trunk/project.properties
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/project.properties?rev=292567&r1=292566&r2=292567&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/project.properties (original)
+++ jakarta/commons/proper/configuration/trunk/project.properties Thu Sep 29 15:24:16 2005
@@ -35,6 +35,4 @@
 
 maven.compile.source = 1.3
 
-maven.clover.license.path=src/conf/clover.license
-
 maven.javacc.javacc.grammar=src/java/org/apache/commons/configuration/plist/PropertyListParser.jj

Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListConfiguration.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListConfiguration.java?rev=292567&r1=292566&r2=292567&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListConfiguration.java Thu Sep 29 15:24:16 2005
@@ -173,13 +173,14 @@
                 printNode(out, indentLevel + 1, child);
 
                 // add a semi colon for elements that are not dictionaries
-                if (child.getValue() != null)
+                Object value = child.getValue();
+                if (value != null && !(value instanceof Map) && !(value instanceof Configuration))
                 {
                     out.println(";");
                 }
 
                 // skip a line after arrays and dictionaries
-                if (it.hasNext() && (child.getValue() == null || child.getValue() instanceof List))
+                if (it.hasNext() && (value == null || value instanceof List))
                 {
                     out.println();
                 }
@@ -229,6 +230,7 @@
         else if (value instanceof Configuration)
         {
             // display a flat Configuration as a dictionary
+            out.println();
             out.println(padding + "{");
 
             Configuration config = (Configuration) value;
@@ -240,11 +242,7 @@
                 node.setValue(config.getProperty(key));
 
                 printNode(out, indentLevel + 1, node);
-
-                if (it.hasNext())
-                {
-                    out.println();
-                }
+                out.println(";");
             }
             out.println(padding + "}");
         }
@@ -281,7 +279,7 @@
      *   <li>foo;bar -> "foo;bar"</li>
      * </ul>
      */
-    private String quoteString(String s)
+    String quoteString(String s)
     {
         if (s == null)
         {

Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListParser.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListParser.java?rev=292567&r1=292566&r2=292567&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListParser.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListParser.java Thu Sep 29 15:24:16 2005
@@ -22,7 +22,7 @@
     /**
      * Remove the quotes at the beginning and at the end of the specified String.
      */
-    private String removeQuotes(String s)
+    protected String removeQuotes(String s)
     {
         if (s == null)
         {
@@ -37,7 +37,7 @@
         return s;
     }
 
-    private String unescapeQuotes(String s)
+    protected String unescapeQuotes(String s)
     {
         return StringUtils.replace(s, "\\\"", "\"");
     }
@@ -46,7 +46,7 @@
      * Remove the white spaces and the data delimiters from the specified
      * string and parse it as a byte array.
      */
-    private byte[] filterData(String s) throws ParseException
+    protected byte[] filterData(String s) throws ParseException
     {
         if (s == null)
         {
@@ -84,10 +84,8 @@
         PropertyListConfiguration configuration = null;
         configuration = Dictionary();
         jj_consume_token(0);
-        {
-            if (true) return configuration;
-        }
-        throw new Error("Missing return statement in function");
+
+        return configuration;
     }
 
     final public PropertyListConfiguration Dictionary() throws ParseException
@@ -130,21 +128,16 @@
             configuration.getRoot().addChild(child);
         }
 
-        {
-            if (true) return configuration;
-        }
-        throw new Error("Missing return statement in function");
+        return configuration;
     }
 
     final public Node Property() throws ParseException
     {
-        String key = null;
-        Object value = null;
         Node node = new Node();
-        key = String();
+        String key = String();
         node.setName(key);
         jj_consume_token(EQUAL);
-        value = Element();
+        Object value = Element();
         node.setValue(value);
         switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
         {
@@ -155,48 +148,32 @@
                 jj_la1[1] = jj_gen;
                 ;
         }
-        {
-            if (true) return node;
-        }
-        throw new Error("Missing return statement in function");
+
+        return node;
     }
 
     final public Object Element() throws ParseException
     {
-        Object value = null;
         switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
         {
             case ARRAY_BEGIN:
-                value = Array();
-                {
-                    if (true) return value;
-                }
-                break;
+                return Array();
+
             case DICT_BEGIN:
-                value = Dictionary();
-                {
-                    if (true) return value;
-                }
-                break;
+                return Dictionary();
+
             case STRING:
             case QUOTED_STRING:
-                value = String();
-                {
-                    if (true) return value;
-                }
-                break;
+                return String();
+
             case DATA:
-                value = Data();
-                {
-                    if (true) return value;
-                }
-                break;
+                return Data();
+
             default:
                 jj_la1[2] = jj_gen;
                 jj_consume_token(-1);
                 throw new ParseException();
         }
-        throw new Error("Missing return statement in function");
     }
 
     final public List Array() throws ParseException
@@ -235,46 +212,36 @@
                 ;
         }
         jj_consume_token(ARRAY_END);
-        {
-            if (true) return list;
-        }
-        throw new Error("Missing return statement in function");
+
+        return list;
     }
 
     final public String String() throws ParseException
     {
         Token token = null;
-        String value = null;
         switch ((jj_ntk == -1) ? jj_ntk() : jj_ntk)
         {
             case QUOTED_STRING:
                 token = jj_consume_token(QUOTED_STRING);
-                {
-                    if (true) return unescapeQuotes(removeQuotes(token.image));
-                }
-                break;
+                return unescapeQuotes(removeQuotes(token.image));
+
             case STRING:
                 token = jj_consume_token(STRING);
-                {
-                    if (true) return token.image;
-                }
-                break;
+                return token.image;
+
             default:
                 jj_la1[5] = jj_gen;
                 jj_consume_token(-1);
                 throw new ParseException();
         }
-        throw new Error("Missing return statement in function");
     }
 
     final public byte[] Data() throws ParseException
     {
         Token token;
         token = jj_consume_token(DATA);
-        {
-            if (true) return filterData(token.image);
-        }
-        throw new Error("Missing return statement in function");
+
+        return filterData(token.image);
     }
 
     public PropertyListParserTokenManager token_source;
@@ -305,16 +272,6 @@
         for (int i = 0; i < 6; i++) jj_la1[i] = -1;
     }
 
-    public void ReInit(java.io.InputStream stream)
-    {
-        jj_input_stream.ReInit(stream, 1, 1);
-        token_source.ReInit(jj_input_stream);
-        token = new Token();
-        jj_ntk = -1;
-        jj_gen = 0;
-        for (int i = 0; i < 6; i++) jj_la1[i] = -1;
-    }
-
     public PropertyListParser(java.io.Reader stream)
     {
         jj_input_stream = new SimpleCharStream(stream, 1, 1);
@@ -325,34 +282,6 @@
         for (int i = 0; i < 6; i++) jj_la1[i] = -1;
     }
 
-    public void ReInit(java.io.Reader stream)
-    {
-        jj_input_stream.ReInit(stream, 1, 1);
-        token_source.ReInit(jj_input_stream);
-        token = new Token();
-        jj_ntk = -1;
-        jj_gen = 0;
-        for (int i = 0; i < 6; i++) jj_la1[i] = -1;
-    }
-
-    public PropertyListParser(PropertyListParserTokenManager tm)
-    {
-        token_source = tm;
-        token = new Token();
-        jj_ntk = -1;
-        jj_gen = 0;
-        for (int i = 0; i < 6; i++) jj_la1[i] = -1;
-    }
-
-    public void ReInit(PropertyListParserTokenManager tm)
-    {
-        token_source = tm;
-        token = new Token();
-        jj_ntk = -1;
-        jj_gen = 0;
-        for (int i = 0; i < 6; i++) jj_la1[i] = -1;
-    }
-
     final private Token jj_consume_token(int kind) throws ParseException
     {
         Token oldToken;
@@ -371,30 +300,6 @@
         throw generateParseException();
     }
 
-    final public Token getNextToken()
-    {
-        if (token.next != null)
-            token = token.next;
-        else
-            token = token.next = token_source.getNextToken();
-        jj_ntk = -1;
-        jj_gen++;
-        return token;
-    }
-
-    final public Token getToken(int index)
-    {
-        Token t = token;
-        for (int i = 0; i < index; i++)
-        {
-            if (t.next != null)
-                t = t.next;
-            else
-                t = t.next = token_source.getNextToken();
-        }
-        return t;
-    }
-
     final private int jj_ntk()
     {
         if ((jj_nt = token.next) == null)
@@ -448,14 +353,6 @@
             exptokseq[i] = (int[]) jj_expentries.elementAt(i);
         }
         return new ParseException(token, exptokseq, tokenImage);
-    }
-
-    final public void enable_tracing()
-    {
-    }
-
-    final public void disable_tracing()
-    {
     }
 
 }

Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListParser.jj
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListParser.jj?rev=292567&r1=292566&r2=292567&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListParser.jj (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListParser.jj Thu Sep 29 15:24:16 2005
@@ -43,7 +43,7 @@
     /**
      * Remove the quotes at the beginning and at the end of the specified String.
      */
-    private String removeQuotes(String s)
+    protected String removeQuotes(String s)
     {
         if (s == null)
         {
@@ -58,7 +58,7 @@
         return s;
     }
 
-    private String unescapeQuotes(String s)
+    protected String unescapeQuotes(String s)
     {
         return StringUtils.replace(s, "\\\"", "\"");
     }
@@ -67,7 +67,7 @@
      * Remove the white spaces and the data delimiters from the specified
      * string and parse it as a byte array.
      */
-    private byte[] filterData(String s) throws ParseException
+    protected byte[] filterData(String s) throws ParseException
     {
         if (s == null)
         {

Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListParserTokenManager.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListParserTokenManager.java?rev=292567&r1=292566&r2=292567&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListParserTokenManager.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/PropertyListParserTokenManager.java Thu Sep 29 15:24:16 2005
@@ -1,14 +1,12 @@
 /* Generated By:JavaCC: Do not edit this line. PropertyListParserTokenManager.java */
 package org.apache.commons.configuration.plist;
 
+import java.io.IOException;
+import java.io.PrintStream;
+
 class PropertyListParserTokenManager implements PropertyListParserConstants
 {
-    public java.io.PrintStream debugStream = System.out;
-
-    public void setDebugStream(java.io.PrintStream ds)
-    {
-        debugStream = ds;
-    }
+    public PrintStream debugStream = System.out;
 
     private final int jjStopStringLiteralDfa_0(int pos, long active0)
     {
@@ -52,7 +50,7 @@
         {
             curChar = input_stream.readChar();
         }
-        catch (java.io.IOException e)
+        catch (IOException e)
         {
             return pos + 1;
         }
@@ -96,7 +94,7 @@
         {
             curChar = input_stream.readChar();
         }
-        catch (java.io.IOException e)
+        catch (IOException e)
         {
             jjStopStringLiteralDfa_0(0, active0);
             return 1;
@@ -122,15 +120,6 @@
         }
     }
 
-    private final void jjAddStates(int start, int end)
-    {
-        do
-        {
-            jjstateSet[jjnewStateCnt++] = jjnextStates[start];
-        }
-        while (start++ != end);
-    }
-
     private final void jjCheckNAddTwoStates(int state1, int state2)
     {
         jjCheckNAdd(state1);
@@ -146,24 +135,17 @@
         while (start++ != end);
     }
 
-    private final void jjCheckNAddStates(int start)
-    {
-        jjCheckNAdd(jjnextStates[start]);
-        jjCheckNAdd(jjnextStates[start + 1]);
-    }
-
     static final long[] jjbitVec0 = {
         0x0L, 0x0L, 0xffffffffffffffffL, 0xffffffffffffffffL
     };
 
     private final int jjMoveNfa_0(int startState, int curPos)
     {
-        int[] nextStates;
         int startsAt = 0;
         jjnewStateCnt = 9;
         int i = 1;
         jjstateSet[0] = startState;
-        int j, kind = 0x7fffffff;
+        int kind = 0x7fffffff;
         for (; ;)
         {
             if (++jjround == 0x7fffffff)
@@ -339,7 +321,7 @@
             {
                 curChar = input_stream.readChar();
             }
-            catch (java.io.IOException e)
+            catch (IOException e)
             {
                 return curPos;
             }
@@ -373,12 +355,6 @@
         input_stream = stream;
     }
 
-    public PropertyListParserTokenManager(SimpleCharStream stream, int lexState)
-    {
-        this(stream);
-        SwitchTo(lexState);
-    }
-
     public void ReInit(SimpleCharStream stream)
     {
         jjmatchedPos = jjnewStateCnt = 0;
@@ -395,20 +371,6 @@
             jjrounds[i] = 0x80000000;
     }
 
-    public void ReInit(SimpleCharStream stream, int lexState)
-    {
-        ReInit(stream);
-        SwitchTo(lexState);
-    }
-
-    public void SwitchTo(int lexState)
-    {
-        if (lexState >= 1 || lexState < 0)
-            throw new TokenMgrError("Error: Ignoring invalid lexical state : " + lexState + ". State unchanged.", TokenMgrError.INVALID_LEXICAL_STATE);
-        else
-            curLexState = lexState;
-    }
-
     protected Token jjFillToken()
     {
         Token t = Token.newToken(jjmatchedKind);
@@ -431,8 +393,6 @@
 
     public Token getNextToken()
     {
-        int kind;
-        Token specialToken = null;
         Token matchedToken;
         int curPos = 0;
 
@@ -443,7 +403,7 @@
             {
                 curChar = input_stream.BeginToken();
             }
-            catch (java.io.IOException e)
+            catch (IOException e)
             {
                 jjmatchedKind = 0;
                 matchedToken = jjFillToken();
@@ -456,7 +416,7 @@
                 while (curChar <= 32 && (0x100002600L & (1L << curChar)) != 0L)
                     curChar = input_stream.BeginToken();
             }
-            catch (java.io.IOException e1)
+            catch (IOException e1)
             {
                 continue EOFLoop;
             }
@@ -486,7 +446,7 @@
                 input_stream.readChar();
                 input_stream.backup(1);
             }
-            catch (java.io.IOException e1)
+            catch (IOException e1)
             {
                 EOFSeen = true;
                 error_after = curPos <= 1 ? "" : input_stream.GetImage();

Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/SimpleCharStream.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/SimpleCharStream.java?rev=292567&r1=292566&r2=292567&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/SimpleCharStream.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/SimpleCharStream.java Thu Sep 29 15:24:16 2005
@@ -276,16 +276,6 @@
     bufpos = -1;
   }
 
-  public void ReInit(java.io.Reader dstream, int startline,
-                                                           int startcolumn)
-  {
-     ReInit(dstream, startline, startcolumn, 4096);
-  }
-
-  public void ReInit(java.io.Reader dstream)
-  {
-     ReInit(dstream, 1, 1, 4096);
-  }
   public SimpleCharStream(java.io.InputStream dstream, int startline,
   int startcolumn, int buffersize)
   {
@@ -303,21 +293,6 @@
      this(dstream, 1, 1, 4096);
   }
 
-  public void ReInit(java.io.InputStream dstream, int startline,
-                          int startcolumn, int buffersize)
-  {
-     ReInit(new java.io.InputStreamReader(dstream), startline, startcolumn, 4096);
-  }
-
-  public void ReInit(java.io.InputStream dstream)
-  {
-     ReInit(dstream, 1, 1, 4096);
-  }
-  public void ReInit(java.io.InputStream dstream, int startline,
-                                                           int startcolumn)
-  {
-     ReInit(dstream, startline, startcolumn, 4096);
-  }
   public String GetImage()
   {
      if (bufpos >= tokenBegin)
@@ -327,75 +302,11 @@
                               new String(buffer, 0, bufpos + 1);
   }
 
-  public char[] GetSuffix(int len)
-  {
-     char[] ret = new char[len];
-
-     if ((bufpos + 1) >= len)
-        System.arraycopy(buffer, bufpos - len + 1, ret, 0, len);
-     else
-     {
-        System.arraycopy(buffer, bufsize - (len - bufpos - 1), ret, 0,
-                                                          len - bufpos - 1);
-        System.arraycopy(buffer, 0, ret, len - bufpos - 1, bufpos + 1);
-     }
-
-     return ret;
-  }
-
   public void Done()
   {
      buffer = null;
      bufline = null;
      bufcolumn = null;
-  }
-
-  /**
-   * Method to adjust line and column numbers for the start of a token.
-   */
-  public void adjustBeginLineColumn(int newLine, int newCol)
-  {
-     int start = tokenBegin;
-     int len;
-
-     if (bufpos >= tokenBegin)
-     {
-        len = bufpos - tokenBegin + inBuf + 1;
-     }
-     else
-     {
-        len = bufsize - tokenBegin + bufpos + 1 + inBuf;
-     }
-
-     int i = 0, j = 0, k = 0;
-     int nextColDiff = 0, columnDiff = 0;
-
-     while (i < len &&
-            bufline[j = start % bufsize] == bufline[k = ++start % bufsize])
-     {
-        bufline[j] = newLine;
-        nextColDiff = columnDiff + bufcolumn[k] - bufcolumn[j];
-        bufcolumn[j] = newCol + columnDiff;
-        columnDiff = nextColDiff;
-        i++;
-     } 
-
-     if (i < len)
-     {
-        bufline[j] = newLine++;
-        bufcolumn[j] = newCol + columnDiff;
-
-        while (i++ < len)
-        {
-           if (bufline[j = start % bufsize] != bufline[++start % bufsize])
-              bufline[j] = newLine++;
-           else
-              bufline[j] = newLine;
-        }
-     }
-
-     line = bufline[j];
-     column = bufcolumn[j];
   }
 
 }

Modified: jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/XMLPropertyListConfiguration.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/XMLPropertyListConfiguration.java?rev=292567&r1=292566&r2=292567&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/XMLPropertyListConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/java/org/apache/commons/configuration/plist/XMLPropertyListConfiguration.java Thu Sep 29 15:24:16 2005
@@ -257,11 +257,6 @@
             super(methodName);
         }
 
-        public SetNextAndPopRule(String methodName, String paramType)
-        {
-            super(methodName, paramType);
-        }
-
         public void end(String namespace, String name) throws Exception
         {
             super.end(namespace, name);

Modified: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestPropertyListConfiguration.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestPropertyListConfiguration.java?rev=292567&r1=292566&r2=292567&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestPropertyListConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestPropertyListConfiguration.java Thu Sep 29 15:24:16 2005
@@ -17,16 +17,18 @@
 package org.apache.commons.configuration.plist;
 
 import java.io.File;
-import java.util.List;
-import java.util.Map;
-import java.util.HashMap;
+import java.io.StringReader;
 import java.util.Iterator;
+import java.util.List;
 
 import junit.framework.TestCase;
-import junitx.framework.ObjectAssert;
 import junitx.framework.ArrayAssert;
 import junitx.framework.ListAssert;
+import junitx.framework.ObjectAssert;
 import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.ConfigurationComparator;
+import org.apache.commons.configuration.ConfigurationException;
+import org.apache.commons.configuration.StrictConfigurationComparator;
 
 /**
  * @author Emmanuel Bourg
@@ -50,6 +52,18 @@
         assertFalse("the configuration is empty", config.isEmpty());
     }
 
+    public void testLoadWithError()
+    {
+        config = new PropertyListConfiguration();
+        try {
+            config.load(new StringReader(""));
+            fail("No exception thrown on loading an empty file");
+        } catch (ConfigurationException e) {
+            // expected
+            assertNotNull(e.getMessage());
+        }
+    }
+
     public void testString()
     {
         assertEquals("simple-string", "string1", config.getProperty("simple-string"));
@@ -160,7 +174,7 @@
     }
 
 
-    public void invalidtestSave() throws Exception
+    public void testSave() throws Exception
     {
         File savedFile = new File("target/testsave.plist");
 
@@ -177,10 +191,12 @@
         assertTrue("The saved file doesn't exist", savedFile.exists());
 
         // read the configuration and compare the properties
-        Configuration checkConfig = new PropertyListConfiguration(filename);
-        for (Iterator i = config.getKeys(); i.hasNext();)
+        Configuration checkConfig = new PropertyListConfiguration(new File(filename));
+
+        Iterator it = config.getKeys();
+        while (it.hasNext())
         {
-            String key = (String) i.next();
+            String key = (String) it.next();
             assertTrue("The saved configuration doesn't contain the key '" + key + "'", checkConfig.containsKey(key));
 
             Object value = checkConfig.getProperty(key);
@@ -191,7 +207,27 @@
             }
             else if (value instanceof List)
             {
-                List list1 = (List) value;
+                List list1 = (List) config.getProperty(key);
+                List list2 = (List) value;
+
+                assertEquals("The size of the list for the key '" + key + "' doesn't match", list1.size(), list2.size());
+
+                for (int i = 0; i < list2.size(); i++)
+                {
+                    Object value1 = list1.get(i);
+                    Object value2 = list2.get(i);
+
+                    if (value1 instanceof Configuration)
+                    {
+                        ConfigurationComparator comparator = new StrictConfigurationComparator();
+                        assertTrue("The dictionnary at index " + i + " for the key '" + key + "' doesn't match", comparator.compare((Configuration) value1, (Configuration) value2));
+                    }
+                    else
+                    {
+                        assertEquals("Element at index " + i + " for the key '" + key + "'", value1, value2);
+                    }
+                }
+
                 ListAssert.assertEquals("Value of the '" + key + "' property", (List) config.getProperty(key), list1);
             }
             else
@@ -200,5 +236,14 @@
             }
 
         }
+    }
+
+    public void testQuoteString()
+    {
+        assertEquals("null string", null, config.quoteString(null));
+        assertEquals("simple string", "abcd", config.quoteString("abcd"));
+        assertEquals("string with a space", "\"ab cd\"", config.quoteString("ab cd"));
+        assertEquals("string with a quote", "\"foo\\\"bar\"", config.quoteString("foo\"bar"));
+        assertEquals("string with a special char", "\"foo;bar\"", config.quoteString("foo;bar"));
     }
 }

Added: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestPropertyListParser.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestPropertyListParser.java?rev=292567&view=auto
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestPropertyListParser.java (added)
+++ jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestPropertyListParser.java Thu Sep 29 15:24:16 2005
@@ -0,0 +1,56 @@
+/*
+ * Copyright 2005 The Apache Software Foundation.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License")
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *     http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.configuration.plist;
+
+import java.io.Reader;
+
+import junit.framework.TestCase;
+import junitx.framework.ArrayAssert;
+
+/**
+ * @author Emmanuel Bourg
+ * @version $Revision$, $Date$
+ */
+public class TestPropertyListParser extends TestCase
+{
+    private PropertyListParser parser = new PropertyListParser((Reader) null);
+
+    public void testRemoveQuotes()
+    {
+        assertEquals("unquoted string", "abc", parser.removeQuotes("abc"));
+        assertEquals("quoted string", "abc", parser.removeQuotes("\"abc\""));
+        assertEquals("empty quotes", "", parser.removeQuotes("\"\""));
+        assertEquals("empty string", "", parser.removeQuotes(""));
+        assertEquals("null string", null, parser.removeQuotes(null));
+    }
+
+    public void testUnescapeQuotes()
+    {
+        assertEquals("non escaped quotes", "aaa\"bbb\"ccc", parser.unescapeQuotes("aaa\"bbb\"ccc"));
+        assertEquals("escaped quotes", "aaa\"bbb\"ccc", parser.unescapeQuotes("aaa\\\"bbb\\\"ccc"));
+    }
+
+    public void testFilterData() throws Exception
+    {
+        byte[] expected = new byte[] {0x20, 0x20};
+        ArrayAssert.assertEquals("null string", null, parser.filterData(null));
+        ArrayAssert.assertEquals("data with < >", expected, parser.filterData("<2020>"));
+        ArrayAssert.assertEquals("data without < >", expected, parser.filterData("2020"));
+        ArrayAssert.assertEquals("data with space", expected, parser.filterData("20 20"));
+        ArrayAssert.assertEquals("odd length", new byte[]{9, 0x20}, parser.filterData("920"));
+    }
+}

Modified: jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestXMLPropertyListConfiguration.java
URL: http://svn.apache.org/viewcvs/jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestXMLPropertyListConfiguration.java?rev=292567&r1=292566&r2=292567&view=diff
==============================================================================
--- jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestXMLPropertyListConfiguration.java (original)
+++ jakarta/commons/proper/configuration/trunk/src/test/org/apache/commons/configuration/plist/TestXMLPropertyListConfiguration.java Thu Sep 29 15:24:16 2005
@@ -17,11 +17,7 @@
 package org.apache.commons.configuration.plist;
 
 import java.io.File;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ArrayList;
-import java.util.Map;
-import java.util.HashMap;
+import java.util.*;
 
 import junit.framework.TestCase;
 import junitx.framework.ObjectAssert;
@@ -29,6 +25,8 @@
 import junitx.framework.ListAssert;
 import org.apache.commons.configuration.FileConfiguration;
 import org.apache.commons.configuration.Configuration;
+import org.apache.commons.configuration.StrictConfigurationComparator;
+import org.apache.commons.configuration.ConfigurationComparator;
 
 /**
  * @author Emmanuel Bourg
@@ -171,7 +169,7 @@
         assertEquals("nested property", "value", config.getString("nested.node1.node2.node3"));
     }
 
-    public void invalidtestSave() throws Exception
+    public void testSave() throws Exception
     {
         File savedFile = new File("target/testsave.plist.xml");
 
@@ -208,10 +206,12 @@
         assertTrue("The saved file doesn't exist", savedFile.exists());
 
         // read the configuration and compare the properties
-        Configuration checkConfig = new XMLPropertyListConfiguration(filename);
-        for (Iterator i = config.getKeys(); i.hasNext();)
+        Configuration checkConfig = new XMLPropertyListConfiguration(new File(filename));
+
+        Iterator it = config.getKeys();
+        while (it.hasNext())
         {
-            String key = (String) i.next();
+            String key = (String) it.next();
             assertTrue("The saved configuration doesn't contain the key '" + key + "'", checkConfig.containsKey(key));
 
             Object value = checkConfig.getProperty(key);
@@ -222,7 +222,27 @@
             }
             else if (value instanceof List)
             {
-                List list1 = (List) value;
+                List list1 = (List) config.getProperty(key);
+                List list2 = (List) value;
+
+                assertEquals("The size of the list for the key '" + key + "' doesn't match", list1.size(), list2.size());
+
+                for (int i = 0; i < list2.size(); i++)
+                {
+                    Object value1 = list1.get(i);
+                    Object value2 = list2.get(i);
+
+                    if (value1 instanceof Configuration)
+                    {
+                        ConfigurationComparator comparator = new StrictConfigurationComparator();
+                        assertTrue("The dictionnary at index " + i + " for the key '" + key + "' doesn't match", comparator.compare((Configuration) value1, (Configuration) value2));
+                    }
+                    else
+                    {
+                        assertEquals("Element at index " + i + " for the key '" + key + "'", value1, value2);
+                    }
+                }
+
                 ListAssert.assertEquals("Value of the '" + key + "' property", (List) config.getProperty(key), list1);
             }
             else



---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org