[Practicalxml-commits] SF.net SVN: practicalxml:[56] trunk/src
                
                Brought to you by:
                
                    kdgregory
                    
                
            
            
        
        
        
    | 
      
      
      From: Auto-Generated S. C. M. <pra...@li...> - 2008-12-17 03:36:46
      
     | 
| Revision: 56
          http://practicalxml.svn.sourceforge.net/practicalxml/?rev=56&view=rev
Author:   kdgregory
Date:     2008-12-17 03:36:43 +0000 (Wed, 17 Dec 2008)
Log Message:
-----------
add package xpath.function
add  Uppercase, Lowercase
Added Paths:
-----------
    trunk/src/main/java/net/sf/practicalxml/xpath/function/
    trunk/src/main/java/net/sf/practicalxml/xpath/function/Constants.java
    trunk/src/main/java/net/sf/practicalxml/xpath/function/Lowercase.java
    trunk/src/main/java/net/sf/practicalxml/xpath/function/Uppercase.java
    trunk/src/main/java/net/sf/practicalxml/xpath/function/package.html
    trunk/src/test/java/net/sf/practicalxml/xpath/function/
    trunk/src/test/java/net/sf/practicalxml/xpath/function/TestLowercase.java
    trunk/src/test/java/net/sf/practicalxml/xpath/function/TestUppercase.java
Added: trunk/src/main/java/net/sf/practicalxml/xpath/function/Constants.java
===================================================================
--- trunk/src/main/java/net/sf/practicalxml/xpath/function/Constants.java	                        (rev 0)
+++ trunk/src/main/java/net/sf/practicalxml/xpath/function/Constants.java	2008-12-17 03:36:43 UTC (rev 56)
@@ -0,0 +1,12 @@
+package net.sf.practicalxml.xpath.function;
+
+/**
+ *  Constants for use in this package.
+ */
+public class Constants
+{
+    /**
+     *  All functions in this package use this as their namespace URI.
+     */
+    public final static String  COMMON_NS_URI = "http://practicalxml.sourceforge.net/";
+}
Property changes on: trunk/src/main/java/net/sf/practicalxml/xpath/function/Constants.java
___________________________________________________________________
Added: svn:executable
   + *
Added: trunk/src/main/java/net/sf/practicalxml/xpath/function/Lowercase.java
===================================================================
--- trunk/src/main/java/net/sf/practicalxml/xpath/function/Lowercase.java	                        (rev 0)
+++ trunk/src/main/java/net/sf/practicalxml/xpath/function/Lowercase.java	2008-12-17 03:36:43 UTC (rev 56)
@@ -0,0 +1,44 @@
+package net.sf.practicalxml.xpath.function;
+
+import org.w3c.dom.Node;
+
+import net.sf.practicalxml.xpath.AbstractFunction;
+
+
+/**
+ *  Converts the string value of its argument — which must be
+ *  either a literal string or a node/nodeset — to uppercase,
+ *  using <code>java.lang.String.toUppercase()</code>.
+ */
+public class Lowercase
+extends AbstractFunction<String>
+{
+    public Lowercase()
+    {
+        super(Constants.COMMON_NS_URI, "lowercase", 1);
+    }
+
+    @Override
+    protected String processArg(int index, Node value, String helper)
+        throws Exception
+    {
+        return (value != null)
+             ? processArg(index, value.getTextContent(), helper)
+             : "";
+    }
+
+    @Override
+    protected String processArg(int index, String value, String helper)
+        throws Exception
+    {
+        return value.toLowerCase();
+    }
+
+
+    @Override
+    protected String processNullArg(int index, String helper)
+    throws Exception
+    {
+        return "";
+    }
+}
Property changes on: trunk/src/main/java/net/sf/practicalxml/xpath/function/Lowercase.java
___________________________________________________________________
Added: svn:executable
   + *
Added: trunk/src/main/java/net/sf/practicalxml/xpath/function/Uppercase.java
===================================================================
--- trunk/src/main/java/net/sf/practicalxml/xpath/function/Uppercase.java	                        (rev 0)
+++ trunk/src/main/java/net/sf/practicalxml/xpath/function/Uppercase.java	2008-12-17 03:36:43 UTC (rev 56)
@@ -0,0 +1,44 @@
+package net.sf.practicalxml.xpath.function;
+
+import org.w3c.dom.Node;
+
+import net.sf.practicalxml.xpath.AbstractFunction;
+
+
+/**
+ *  Converts the string value of its argument — which must be
+ *  either a literal string or a node/nodeset — to uppercase,
+ *  using <code>java.lang.String.toUppercase()</code>.
+ */
+public class Uppercase
+extends AbstractFunction<String>
+{
+    public Uppercase()
+    {
+        super(Constants.COMMON_NS_URI, "uppercase", 1);
+    }
+
+    @Override
+    protected String processArg(int index, Node value, String helper)
+        throws Exception
+    {
+        return (value != null)
+             ? processArg(index, value.getTextContent(), helper)
+             : "";
+    }
+
+    @Override
+    protected String processArg(int index, String value, String helper)
+        throws Exception
+    {
+        return value.toUpperCase();
+    }
+
+
+    @Override
+    protected String processNullArg(int index, String helper)
+    throws Exception
+    {
+        return "";
+    }
+}
Property changes on: trunk/src/main/java/net/sf/practicalxml/xpath/function/Uppercase.java
___________________________________________________________________
Added: svn:executable
   + *
Added: trunk/src/main/java/net/sf/practicalxml/xpath/function/package.html
===================================================================
--- trunk/src/main/java/net/sf/practicalxml/xpath/function/package.html	                        (rev 0)
+++ trunk/src/main/java/net/sf/practicalxml/xpath/function/package.html	2008-12-17 03:36:43 UTC (rev 56)
@@ -0,0 +1,7 @@
+<html>
+<body>
+	This package contains reusable XPath functions, implemented using {@link
+	net.sf.practicalxml.xpath.AbstractFunction}. All such functions belong
+	to the namepspace "http://practicalxml.sourceforge.net/".
+</body>
+</html>
\ No newline at end of file
Property changes on: trunk/src/main/java/net/sf/practicalxml/xpath/function/package.html
___________________________________________________________________
Added: svn:executable
   + *
Added: trunk/src/test/java/net/sf/practicalxml/xpath/function/TestLowercase.java
===================================================================
--- trunk/src/test/java/net/sf/practicalxml/xpath/function/TestLowercase.java	                        (rev 0)
+++ trunk/src/test/java/net/sf/practicalxml/xpath/function/TestLowercase.java	2008-12-17 03:36:43 UTC (rev 56)
@@ -0,0 +1,80 @@
+package net.sf.practicalxml.xpath.function;
+
+import java.util.Arrays;
+import java.util.Collections;
+
+import javax.xml.xpath.XPathFunctionException;
+
+import org.w3c.dom.Element;
+
+import net.sf.practicalxml.AbstractTestCase;
+import net.sf.practicalxml.DomUtil;
+
+
+public class TestLowercase
+extends AbstractTestCase
+{
+    public void testConstruction() throws Exception
+    {
+        Lowercase fn = new Lowercase();
+        assertEquals(Constants.COMMON_NS_URI, fn.getNamespaceUri());
+        assertEquals("lowercase", fn.getName());
+        assertEquals(1, fn.getMinArgCount());
+        assertEquals(1, fn.getMaxArgCount());
+    }
+
+    public void testLiteralString() throws Exception
+    {
+        assertEquals(
+                "test",
+                new Lowercase().evaluate(Arrays.asList("Test")));
+    }
+
+
+    public void testNodeList() throws Exception
+    {
+        Element root = DomUtil.newDocument("foo");
+        Element child1 = DomUtil.appendChild(root, "bar");
+        Element child2 = DomUtil.appendChild(root, "baz");
+        DomUtil.setText(root, "Test");
+        DomUtil.setText(child1, "Test2");
+        DomUtil.setText(child2, "Test3");
+
+        assertEquals(
+                "test2",
+                new Lowercase().evaluate(Arrays.asList(root.getChildNodes())));
+    }
+
+
+    public void testEmptyNodeList() throws Exception
+    {
+        Element root = DomUtil.newDocument("foo");
+
+        assertEquals(
+                "",
+                new Lowercase().evaluate(Arrays.asList(root.getChildNodes())));
+    }
+
+
+    public void testNull() throws Exception
+    {
+        assertEquals(
+                "",
+                new Lowercase().evaluate(Arrays.asList((String)null)));
+    }
+
+
+    public void testEmptyArglist() throws Exception
+    {
+        try
+        {
+            new Lowercase().evaluate(Collections.<String>emptyList());
+            fail("didn't throw on empty list");
+        }
+        catch (XPathFunctionException e)
+        {
+            // success
+        }
+    }
+
+}
Property changes on: trunk/src/test/java/net/sf/practicalxml/xpath/function/TestLowercase.java
___________________________________________________________________
Added: svn:executable
   + *
Added: trunk/src/test/java/net/sf/practicalxml/xpath/function/TestUppercase.java
===================================================================
--- trunk/src/test/java/net/sf/practicalxml/xpath/function/TestUppercase.java	                        (rev 0)
+++ trunk/src/test/java/net/sf/practicalxml/xpath/function/TestUppercase.java	2008-12-17 03:36:43 UTC (rev 56)
@@ -0,0 +1,80 @@
+package net.sf.practicalxml.xpath.function;
+
+import java.util.Arrays;
+import java.util.Collections;
+
+import javax.xml.xpath.XPathFunctionException;
+
+import org.w3c.dom.Element;
+
+import net.sf.practicalxml.AbstractTestCase;
+import net.sf.practicalxml.DomUtil;
+
+
+public class TestUppercase
+extends AbstractTestCase
+{
+    public void testConstruction() throws Exception
+    {
+        Uppercase fn = new Uppercase();
+        assertEquals(Constants.COMMON_NS_URI, fn.getNamespaceUri());
+        assertEquals("uppercase", fn.getName());
+        assertEquals(1, fn.getMinArgCount());
+        assertEquals(1, fn.getMaxArgCount());
+    }
+
+    public void testLiteralString() throws Exception
+    {
+        assertEquals(
+                "TEST",
+                new Uppercase().evaluate(Arrays.asList("Test")));
+    }
+
+
+    public void testNodeList() throws Exception
+    {
+        Element root = DomUtil.newDocument("foo");
+        Element child1 = DomUtil.appendChild(root, "bar");
+        Element child2 = DomUtil.appendChild(root, "baz");
+        DomUtil.setText(root, "Test");
+        DomUtil.setText(child1, "Test2");
+        DomUtil.setText(child2, "Test3");
+
+        assertEquals(
+                "TEST2",
+                new Uppercase().evaluate(Arrays.asList(root.getChildNodes())));
+    }
+
+
+    public void testEmptyNodeList() throws Exception
+    {
+        Element root = DomUtil.newDocument("foo");
+
+        assertEquals(
+                "",
+                new Lowercase().evaluate(Arrays.asList(root.getChildNodes())));
+    }
+
+
+    public void testNull() throws Exception
+    {
+        assertEquals(
+                "",
+                new Uppercase().evaluate(Arrays.asList((String)null)));
+    }
+
+
+    public void testEmptyArglist() throws Exception
+    {
+        try
+        {
+            new Uppercase().evaluate(Collections.<String>emptyList());
+            fail("didn't throw on empty list");
+        }
+        catch (XPathFunctionException e)
+        {
+            // success
+        }
+    }
+
+}
Property changes on: trunk/src/test/java/net/sf/practicalxml/xpath/function/TestUppercase.java
___________________________________________________________________
Added: svn:executable
   + *
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
 |