]> source.dussan.org Git - archiva.git/blob
f763cd9525f072477e14101cf47fa46718d301f6
[archiva.git] /
1 package org.apache.archiva.checksum;
2
3 /*
4  * Licensed to the Apache Software Foundation (ASF) under one
5  * or more contributor license agreements.  See the NOTICE file
6  * distributed with this work for additional information
7  * regarding copyright ownership.  The ASF licenses this file
8  * to you under the Apache License, Version 2.0 (the
9  * "License"); you may not use this file except in compliance
10  * with the License.  You may obtain a copy of the License at
11  *
12  *   http://www.apache.org/licenses/LICENSE-2.0
13  *
14  * Unless required by applicable law or agreed to in writing,
15  * software distributed under the License is distributed on an
16  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
17  * KIND, either express or implied.  See the License for the
18  * specific language governing permissions and limitations
19  * under the License.
20  */
21
22 import java.io.ByteArrayInputStream;
23 import java.io.IOException;
24 import java.util.ArrayList;
25 import java.util.List;
26 import junit.framework.TestCase;
27 import org.apache.archiva.test.utils.ArchivaBlockJUnit4ClassRunner;
28 import org.junit.Test;
29 import org.junit.runner.RunWith;
30
31 /**
32  * ChecksumTest
33  *
34  * @version $Id$
35  */
36 @RunWith( ArchivaBlockJUnit4ClassRunner.class )
37 public class ChecksumTest
38     extends TestCase
39 {
40     private static final String UNSET_SHA1 = "da39a3ee5e6b4b0d3255bfef95601890afd80709";
41
42     @Test
43     public void testConstructSha1()
44     {
45         Checksum checksum = new Checksum( ChecksumAlgorithm.SHA1 );
46         assertEquals( "Checksum.algorithm", checksum.getAlgorithm().getAlgorithm(), ChecksumAlgorithm.SHA1
47             .getAlgorithm() );
48     }
49
50     @Test
51     public void testConstructMd5()
52     {
53         Checksum checksum = new Checksum( ChecksumAlgorithm.MD5 );
54         assertEquals( "Checksum.algorithm", checksum.getAlgorithm().getAlgorithm(), ChecksumAlgorithm.MD5
55             .getAlgorithm() );
56     }
57
58     @Test
59     public void testUpdate()
60     {
61         Checksum checksum = new Checksum( ChecksumAlgorithm.SHA1 );
62         byte buf[] = ( "You know, I'm sick of following my dreams, man. "
63             + "I'm just going to ask where they're going and hook up with 'em later. - Mitch Hedberg" ).getBytes();
64         checksum.update( buf, 0, buf.length );
65         assertEquals( "Checksum", "e396119ae0542e85a74759602fd2f81e5d36d762", checksum.getChecksum() );
66     }
67
68     @Test
69     public void testUpdateMany()
70         throws IOException
71     {
72         Checksum checksumSha1 = new Checksum( ChecksumAlgorithm.SHA1 );
73         Checksum checksumMd5 = new Checksum( ChecksumAlgorithm.MD5 );
74         List<Checksum> checksums = new ArrayList<Checksum>();
75         checksums.add( checksumSha1 );
76         checksums.add( checksumMd5 );
77
78         byte buf[] = ( "You know, I'm sick of following my dreams, man. "
79             + "I'm just going to ask where they're going and hook up with 'em later. - Mitch Hedberg" ).getBytes();
80
81         ByteArrayInputStream stream = new ByteArrayInputStream( buf );
82         Checksum.update( checksums, stream );
83
84         assertEquals( "Checksum SHA1", "e396119ae0542e85a74759602fd2f81e5d36d762", checksumSha1.getChecksum() );
85         assertEquals( "Checksum MD5", "21c2c5ca87ec018adacb2e2fb3432219", checksumMd5.getChecksum() );
86     }
87
88     @Test
89     public void testUpdateWholeUpdatePartial()
90     {
91         Checksum checksum = new Checksum( ChecksumAlgorithm.SHA1 );
92         assertEquals( "Checksum unset", UNSET_SHA1, checksum.getChecksum() );
93
94         String expected = "066c2cbbc8cdaecb8ff97dcb84502462d6f575f3";
95         byte reesepieces[] = "eatagramovabits".getBytes();
96         checksum.update( reesepieces, 0, reesepieces.length );
97         String actual = checksum.getChecksum();
98
99         assertEquals( "Expected", expected, actual );
100
101         // Reset the checksum.
102         checksum.reset();
103         assertEquals( "Checksum unset", UNSET_SHA1, checksum.getChecksum() );
104
105         // Now parse it again in 3 pieces.
106         checksum.update( reesepieces, 0, 5 );
107         checksum.update( reesepieces, 5, 5 );
108         checksum.update( reesepieces, 10, reesepieces.length - 10 );
109
110         assertEquals( "Expected", expected, actual );
111     }
112 }