ggregory    2003/11/02 20:08:26

  Modified:    codec/src/test/org/apache/commons/codec/digest
                        DigestUtilsTest.java
  Log:
  Refactor common code and complete test coverage (100%, see clover report). Javadoc.
  
  Revision  Changes    Path
  1.7       +98 -115   
jakarta-commons/codec/src/test/org/apache/commons/codec/digest/DigestUtilsTest.java
  
  Index: DigestUtilsTest.java
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons/codec/src/test/org/apache/commons/codec/digest/DigestUtilsTest.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- DigestUtilsTest.java      3 Nov 2003 03:58:32 -0000       1.6
  +++ DigestUtilsTest.java      3 Nov 2003 04:08:26 -0000       1.7
  @@ -2,58 +2,46 @@
    * ====================================================================
    * 
    * The Apache Software License, Version 1.1
  - *
  - * Copyright (c) 2001-2003 The Apache Software Foundation.  All rights
  - * reserved.
  - *
  + * 
  + * Copyright (c) 2001-2003 The Apache Software Foundation. All rights reserved.
  + * 
    * Redistribution and use in source and binary forms, with or without
  - * modification, are permitted provided that the following conditions
  - * are met:
  - *
  - * 1. Redistributions of source code must retain the above copyright
  - *    notice, this list of conditions and the following disclaimer. 
  - *
  - * 2. Redistributions in binary form must reproduce the above copyright
  - *    notice, this list of conditions and the following disclaimer in
  - *    the documentation and/or other materials provided with the
  - *    distribution.
  - *
  - * 3. The end-user documentation included with the redistribution,
  - *    if any, must include the following acknowledgement:  
  - *       "This product includes software developed by the 
  - *        Apache Software Foundation (http://www.apache.org/)."
  - *    Alternately, this acknowledgement may appear in the software itself,
  - *    if and wherever such third-party acknowledgements normally appear.
  - *
  - * 4. The names "Apache", "The Jakarta Project", "Commons", and "Apache Software
  - *    Foundation" must not be used to endorse or promote products derived
  - *    from this software without prior written permission. For written 
  - *    permission, please contact [EMAIL PROTECTED]
  - *
  - * 5. Products derived from this software may not be called "Apache",
  - *    "Apache" nor may "Apache" appear in their name without prior 
  - *    written permission of the Apache Software Foundation.
  - *
  - * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
  - * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
  - * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
  - * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
  - * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  - * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
  - * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
  - * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  - * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
  - * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
  - * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  - * SUCH DAMAGE.
  + * modification, are permitted provided that the following conditions are met:
  + *  1. Redistributions of source code must retain the above copyright notice,
  + * this list of conditions and the following disclaimer.
  + *  2. Redistributions in binary form must reproduce the above copyright
  + * notice, this list of conditions and the following disclaimer in the
  + * documentation and/or other materials provided with the distribution.
  + *  3. The end-user documentation included with the redistribution, if any,
  + * must include the following acknowledgement: "This product includes software
  + * developed by the Apache Software Foundation (http://www.apache.org/)."
  + * Alternately, this acknowledgement may appear in the software itself, if and
  + * wherever such third-party acknowledgements normally appear.
  + *  4. The names "Apache", "The Jakarta Project", "Commons", and "Apache
  + * Software Foundation" must not be used to endorse or promote products derived
  + * from this software without prior written permission. For written permission,
  + * please contact [EMAIL PROTECTED]
  + *  5. Products derived from this software may not be called "Apache", "Apache"
  + * nor may "Apache" appear in their name without prior written permission of
  + * the Apache Software Foundation.
  + * 
  + * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES,
  + * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
  + * FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
  + * APACHE SOFTWARE FOUNDATION OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
  + * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
  + * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
  + * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
  + * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
  + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
  + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
    * ====================================================================
  - *
  - * This software consists of voluntary contributions made by many
  - * individuals on behalf of the Apache Software Foundation.  For more
  - * information on the Apache Software Foundation, please see
  - * <http://www.apache.org/>.
  - *
  - */ 
  + * 
  + * This software consists of voluntary contributions made by many individuals
  + * on behalf of the Apache Software Foundation. For more information on the
  + * Apache Software Foundation, please see <http://www.apache.org/> .
  + *  
  + */
   
   package org.apache.commons.codec.digest;
   
  @@ -61,83 +49,78 @@
   
   /**
    * Tests Digest methods.
  - *
  + * 
    * @author Dave Dribin
    * @author David Graham
  + * @author Gary Gregory
    */
   public class DigestUtilsTest extends TestCase {
   
  -     public void testMd5Hex() {
  -             // Examples from RFC 1321
  -             assertEquals("d41d8cd98f00b204e9800998ecf8427e", 
DigestUtils.md5Hex(""));
  -
  -             assertEquals("0cc175b9c0f1b6a831c399e269772661", 
DigestUtils.md5Hex("a"));
  -
  -             assertEquals("900150983cd24fb0d6963f7d28e17f72", 
DigestUtils.md5Hex("abc"));
  -
  -             assertEquals(
  -                     "f96b697d7cb7938d525a2f31aaf161d0",
  -                     DigestUtils.md5Hex("message digest"));
  -
  -             assertEquals(
  -                     "c3fcd3d76192e4007dfb496cca67e13b",
  -                     DigestUtils.md5Hex("abcdefghijklmnopqrstuvwxyz"));
  -
  -             assertEquals(
  -                     "d174ab98d277d9f5a5611c2c9f419d9f",
  -                     DigestUtils.md5Hex(
  -                             "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  -                                     + "abcdefghijklmnopqrstuvwxyz"
  -                                     + "0123456789"));
  -
  -             assertEquals(
  -                     "57edf4a22be3c955ac49da2e2107b67a",
  -                     DigestUtils.md5Hex(
  -                             "1234567890123456789012345678901234567890"
  -                                     + "1234567890123456789012345678901234567890"));
  -     }
  +    public void testInternalNoSuchAlgorithmException() {
  +        try {
  +            DigestUtils.getDigest("Bogus Bogus");
  +            fail("A RuntimeException should have been thrown.");
  +        } catch (RuntimeException e) {
  +            // Expected exception.
  +        }
  +    }
  +
  +    public void testMd5Hex() {
  +        // Examples from RFC 1321
  +        assertEquals("d41d8cd98f00b204e9800998ecf8427e", DigestUtils.md5Hex(""));
  +
  +        assertEquals("0cc175b9c0f1b6a831c399e269772661", DigestUtils.md5Hex("a"));
  +
  +        assertEquals("900150983cd24fb0d6963f7d28e17f72", DigestUtils.md5Hex("abc"));
  +
  +        assertEquals("f96b697d7cb7938d525a2f31aaf161d0", 
DigestUtils.md5Hex("message digest"));
  +
  +        assertEquals("c3fcd3d76192e4007dfb496cca67e13b", 
DigestUtils.md5Hex("abcdefghijklmnopqrstuvwxyz"));
   
  -     /**
  +        assertEquals(
  +            "d174ab98d277d9f5a5611c2c9f419d9f",
  +            DigestUtils.md5Hex("ABCDEFGHIJKLMNOPQRSTUVWXYZ" + 
"abcdefghijklmnopqrstuvwxyz" + "0123456789"));
  +
  +        assertEquals(
  +            "57edf4a22be3c955ac49da2e2107b67a",
  +            DigestUtils.md5Hex("1234567890123456789012345678901234567890" + 
"1234567890123456789012345678901234567890"));
  +    }
  +
  +    /**
         * An MD5 hash converted to hex should always be 32 characters.
         */
  -     public void testMD5HexLength() {
  -             String hashMe = "this is some string that is longer than 32 
characters";
  -             String hash = DigestUtils.md5Hex(hashMe.getBytes());
  -             assertEquals(32, hash.length());
  -
  -             hashMe = "length < 32";
  -             hash = DigestUtils.md5Hex(hashMe.getBytes());
  -             assertEquals(32, hash.length());
  -     }
  +    public void testMD5HexLength() {
  +        String hashMe = "this is some string that is longer than 32 characters";
  +        String hash = DigestUtils.md5Hex(hashMe.getBytes());
  +        assertEquals(32, hash.length());
  +
  +        hashMe = "length < 32";
  +        hash = DigestUtils.md5Hex(hashMe.getBytes());
  +        assertEquals(32, hash.length());
  +    }
   
  -     /**
  +    /**
         * An MD5 hash should always be a 16 element byte[].
         */
  -     public void testMD5Length() {
  -             String hashMe = "this is some string that is longer than 16 
characters";
  -             byte[] hash = DigestUtils.md5(hashMe.getBytes());
  -             assertEquals(16, hash.length);
  -
  -             hashMe = "length < 16";
  -             hash = DigestUtils.md5(hashMe.getBytes());
  -             assertEquals(16, hash.length);
  -     }
  -
  -     public void testShaHex() {
  -             // Examples from FIPS 180-1
  -             assertEquals(
  -                     "a9993e364706816aba3e25717850c26c9cd0d89d",
  -                     DigestUtils.shaHex("abc"));
  +    public void testMD5Length() {
  +        String hashMe = "this is some string that is longer than 16 characters";
  +        byte[] hash = DigestUtils.md5(hashMe.getBytes());
  +        assertEquals(16, hash.length);
  +
  +        hashMe = "length < 16";
  +        hash = DigestUtils.md5(hashMe.getBytes());
  +        assertEquals(16, hash.length);
  +    }
  +
  +    public void testShaHex() {
  +        // Examples from FIPS 180-1
  +        assertEquals("a9993e364706816aba3e25717850c26c9cd0d89d", 
DigestUtils.shaHex("abc"));
  +
  +        assertEquals("a9993e364706816aba3e25717850c26c9cd0d89d", 
DigestUtils.shaHex("abc".getBytes()));
   
           assertEquals(
  -            "a9993e364706816aba3e25717850c26c9cd0d89d",
  -            DigestUtils.shaHex("abc".getBytes()));
  +            "84983e441c3bd26ebaae4aa1f95129e5e54670f1",
  +            DigestUtils.shaHex("abcdbcdecdefdefgefghfghighij" + 
"hijkijkljklmklmnlmnomnopnopq"));
  +    }
   
  -             assertEquals(
  -                     "84983e441c3bd26ebaae4aa1f95129e5e54670f1",
  -                     DigestUtils.shaHex(
  -                             "abcdbcdecdefdefgefghfghighij"
  -                                     + "hijkijkljklmklmnlmnomnopnopq"));
  -     }
  -    
   }
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to