You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@hc.apache.org by ol...@apache.org on 2005/03/12 23:53:58 UTC

svn commit: r157293 - in jakarta/httpclient/trunk/http-common/src: java/org/apache/http/HeaderElement.java test/org/apache/http/TestHeader.java test/org/apache/http/TestHeaderElement.java test/org/apache/http/TestNameValuePair.java

Author: olegk
Date: Sat Mar 12 14:53:57 2005
New Revision: 157293

URL: http://svn.apache.org/viewcvs?view=rev&rev=157293
Log:
More test coverage

Modified:
    jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HeaderElement.java
    jakarta/httpclient/trunk/http-common/src/test/org/apache/http/TestHeader.java
    jakarta/httpclient/trunk/http-common/src/test/org/apache/http/TestHeaderElement.java
    jakarta/httpclient/trunk/http-common/src/test/org/apache/http/TestNameValuePair.java

Modified: jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HeaderElement.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HeaderElement.java?view=diff&r1=157292&r2=157293
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HeaderElement.java (original)
+++ jakarta/httpclient/trunk/http-common/src/java/org/apache/http/HeaderElement.java Sat Mar 12 14:53:57 2005
@@ -91,9 +91,9 @@
     /**
      * Constructor with name, value and parameters.
      *
-     * @param name my name
-     * @param value my (possibly <tt>null</tt>) value
-     * @param parameters my (possibly <tt>null</tt>) parameters
+     * @param name header element name
+     * @param value header element value. May be <tt>null</tt>
+     * @param parameters header element parameters. May be <tt>null</tt>
      */
     public HeaderElement(
             final String name, 
@@ -105,16 +105,20 @@
         }
         this.name = name;
         this.value = value;
-        this.parameters = parameters;
+        if (parameters != null) {
+            this.parameters = parameters;
+        } else {
+            this.parameters = new NameValuePair[] {};
+        }
     }
 
     /**
      * Constructor with name and value.
      * 
-     * @param name my name
-     * @param value my (possibly <tt>null</tt>) value
+     * @param name header element name
+     * @param value header element value. May be <tt>null</tt>
      */
-    public HeaderElement(String name, String value) {
+    public HeaderElement(final String name, final String value) {
        this(name, value, null);
     }
 
@@ -144,7 +148,7 @@
         } else {
             this.name = "";
             this.value = null;
-            this.parameters = null;
+            this.parameters = new NameValuePair[] {};
         }
     }
 
@@ -258,14 +262,11 @@
             throw new IllegalArgumentException("Name may not be null");
         } 
         NameValuePair found = null;
-        NameValuePair parameters[] = getParameters();
-        if (parameters != null) {
-            for (int i = 0; i < parameters.length; i++) {
-                NameValuePair current = parameters[ i ];
-                if (current.getName().equalsIgnoreCase(name)) {
-                    found = current;
-                    break;
-                }
+        for (int i = 0; i < this.parameters.length; i++) {
+            NameValuePair current = this.parameters[ i ];
+            if (current.getName().equalsIgnoreCase(name)) {
+                found = current;
+                break;
             }
         }
         return found;
@@ -288,10 +289,8 @@
         int hash = LangUtils.HASH_SEED;
         hash = LangUtils.hashCode(hash, this.name);
         hash = LangUtils.hashCode(hash, this.value);
-        if (this.parameters != null) {
-            for (int i = 0; i < this.parameters.length; i++) {
-                hash = LangUtils.hashCode(hash, this.parameters[i]);
-            }
+        for (int i = 0; i < this.parameters.length; i++) {
+            hash = LangUtils.hashCode(hash, this.parameters[i]);
         }
         return hash;
     }

Modified: jakarta/httpclient/trunk/http-common/src/test/org/apache/http/TestHeader.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/test/org/apache/http/TestHeader.java?view=diff&r1=157292&r2=157293
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/test/org/apache/http/TestHeader.java (original)
+++ jakarta/httpclient/trunk/http-common/src/test/org/apache/http/TestHeader.java Sat Mar 12 14:53:57 2005
@@ -53,7 +53,7 @@
         return new TestSuite(TestHeader.class);
     }
 
-    public void testBasicGet() {
+    public void testConstructor() {
         Header header = new Header("name", "value", true);
         assertEquals("name", header.getName()); 
         assertEquals("value", header.getValue()); 
@@ -93,4 +93,20 @@
         Header header1 = new Header("name1", "value1");
         assertEquals("name1: value1", header1.toString());
     }
+    
+    public void testHeaderElements() {
+        Header header = new Header("name", "element1 = value1, element2; param1 = value1, element3");
+        HeaderElement[] elements = header.getElements(); 
+        assertNotNull(elements); 
+        assertEquals(3, elements.length); 
+        assertEquals("element1", elements[0].getName()); 
+        assertEquals("value1", elements[0].getValue()); 
+        assertEquals("element2", elements[1].getName()); 
+        assertEquals(null, elements[1].getValue()); 
+        assertEquals("element3", elements[2].getName()); 
+        assertEquals(null, elements[2].getValue()); 
+        assertEquals(1, elements[1].getParameters().length); 
+
+    }    
+    
 }

Modified: jakarta/httpclient/trunk/http-common/src/test/org/apache/http/TestHeaderElement.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/test/org/apache/http/TestHeaderElement.java?view=diff&r1=157292&r2=157293
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/test/org/apache/http/TestHeaderElement.java (original)
+++ jakarta/httpclient/trunk/http-common/src/test/org/apache/http/TestHeaderElement.java Sat Mar 12 14:53:57 2005
@@ -60,6 +60,44 @@
         return new TestSuite(TestHeaderElement.class);
     }
 
+    public void testConstructor() throws Exception {
+        HeaderElement element = new HeaderElement("name", "value", 
+                new NameValuePair[] {
+                    new NameValuePair("param1", "value1"),
+                    new NameValuePair("param2", "value2")
+                } );
+        assertEquals("name", element.getName());
+        assertEquals("value", element.getValue());
+        assertEquals(2, element.getParameters().length);
+        assertEquals("value1", element.getParameterByName("param1").getValue());
+        assertEquals("value2", element.getParameterByName("param2").getValue());
+    }
+
+    public void testConstructor2() throws Exception {
+        HeaderElement element = new HeaderElement("name", "value");
+        assertEquals("name", element.getName());
+        assertEquals("value", element.getValue());
+        assertEquals(0, element.getParameters().length);
+    }
+
+    public void testCharArrayConstructor() throws Exception {
+        String s = "name = value; param1 = value1";
+        HeaderElement element = new HeaderElement(s.toCharArray()); 
+        assertEquals("name", element.getName());
+        assertEquals("value", element.getValue());
+        assertEquals(1, element.getParameters().length);
+        assertEquals("value1", element.getParameterByName("param1").getValue());
+    }
+    
+    public void testInvalidName() {
+        try {
+            HeaderElement element = new HeaderElement(null, null, null); 
+            fail("IllegalArgumentException should have been thrown");
+        } catch (IllegalArgumentException ex) {
+            //expected
+        }
+    }
+    
     public void testParseHeaderElements() throws Exception {
         // this is derived from the old main method in HeaderElement
         String headerValue = "name1 = value1; name2; name3=\"value3\" , name4=value4; " +
@@ -100,17 +138,92 @@
         assertEquals("Number of elements", 1, elements.length);
     }
 
-
     public void testFringeCase2() throws Exception {
         String headerValue = "name1 = value1, ";
         HeaderElement[] elements = HeaderElement.parseElements(headerValue);
         assertEquals("Number of elements", 1, elements.length);
     }
 
-
     public void testFringeCase3() throws Exception {
         String headerValue = ",, ,, ,";
         HeaderElement[] elements = HeaderElement.parseElements(headerValue);
         assertEquals("Number of elements", 0, elements.length);
     }
+    
+    public void testNullInput() throws Exception {
+        HeaderElement[] elements = HeaderElement.parseElements((char [])null);
+        assertNotNull(elements);
+        assertEquals("Number of elements", 0, elements.length);
+        elements = HeaderElement.parseElements((String)null);
+        assertNotNull(elements);
+        assertEquals("Number of elements", 0, elements.length);
+    }
+
+    public void testParamByName() throws Exception {
+        String s = "name = value; param1 = value1; param2 = value2";
+        HeaderElement element = new HeaderElement(s.toCharArray()); 
+        assertEquals("value1", element.getParameterByName("param1").getValue());
+        assertEquals("value2", element.getParameterByName("param2").getValue());
+        assertNull(element.getParameterByName("param3"));
+        try {
+            element.getParameterByName(null);
+            fail("IllegalArgumentException should have been thrown");
+        } catch (IllegalArgumentException ex) {
+            //expected
+        }
+    }
+
+    public void testHashCode() {
+        HeaderElement element1 = new HeaderElement("name", "value", 
+                new NameValuePair[] {
+                    new NameValuePair("param1", "value1"),
+                    new NameValuePair("param2", "value2")
+                } );
+        HeaderElement element2 = new HeaderElement("name", "value", 
+                new NameValuePair[] {
+                    new NameValuePair("param2", "value2"),
+                    new NameValuePair("param1", "value1")
+                } );
+        HeaderElement element3 = new HeaderElement("name", "value"); 
+        HeaderElement element4 = new HeaderElement("name", "value"); 
+        HeaderElement element5 = new HeaderElement("name", "value", 
+                new NameValuePair[] {
+                    new NameValuePair("param1", "value1"),
+                    new NameValuePair("param2", "value2")
+                } );
+        assertTrue(element1.hashCode() != element2.hashCode());
+        assertTrue(element1.hashCode() != element3.hashCode());
+        assertTrue(element2.hashCode() != element3.hashCode());
+        assertTrue(element3.hashCode() == element4.hashCode());
+        assertTrue(element1.hashCode() == element5.hashCode());
+    }
+    
+    public void testEquals() {
+        HeaderElement element1 = new HeaderElement("name", "value", 
+                new NameValuePair[] {
+                    new NameValuePair("param1", "value1"),
+                    new NameValuePair("param2", "value2")
+                } );
+        HeaderElement element2 = new HeaderElement("name", "value", 
+                new NameValuePair[] {
+                    new NameValuePair("param2", "value2"),
+                    new NameValuePair("param1", "value1")
+                } );
+        HeaderElement element3 = new HeaderElement("name", "value"); 
+        HeaderElement element4 = new HeaderElement("name", "value"); 
+        HeaderElement element5 = new HeaderElement("name", "value", 
+                new NameValuePair[] {
+                    new NameValuePair("param1", "value1"),
+                    new NameValuePair("param2", "value2")
+                } );
+        assertTrue(element1.equals(element1));
+        assertTrue(!element1.equals(element2));
+        assertTrue(!element1.equals(element3));
+        assertTrue(!element2.equals(element3));
+        assertTrue(element3.equals(element4));
+        assertTrue(element1.equals(element5));
+        assertFalse(element1.equals(null));
+        assertFalse(element1.equals("name = value; param1 = value1; param2 = value2"));
+    }
+    
 }

Modified: jakarta/httpclient/trunk/http-common/src/test/org/apache/http/TestNameValuePair.java
URL: http://svn.apache.org/viewcvs/jakarta/httpclient/trunk/http-common/src/test/org/apache/http/TestNameValuePair.java?view=diff&r1=157292&r2=157293
==============================================================================
--- jakarta/httpclient/trunk/http-common/src/test/org/apache/http/TestNameValuePair.java (original)
+++ jakarta/httpclient/trunk/http-common/src/test/org/apache/http/TestNameValuePair.java Sat Mar 12 14:53:57 2005
@@ -53,7 +53,7 @@
         return new TestSuite(TestNameValuePair.class);
     }
 
-    public void testBasicGet() {
+    public void testConstructor() {
         NameValuePair param = new NameValuePair("name", "value");
         assertEquals("name", param.getName()); 
         assertEquals("value", param.getValue());