1 package org.apache.archiva.checksum;
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
12 * http://www.apache.org/licenses/LICENSE-2.0
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
22 import java.io.ByteArrayInputStream;
23 import java.io.IOException;
24 import java.util.ArrayList;
25 import java.util.List;
26 import org.junit.Test;
33 public class ChecksumTest
34 extends AbstractChecksumTestCase
36 private static final String UNSET_SHA1 = "da39a3ee5e6b4b0d3255bfef95601890afd80709";
39 public void testConstructSha1()
41 Checksum checksum = new Checksum( ChecksumAlgorithm.SHA1 );
42 assertEquals( "Checksum.algorithm", checksum.getAlgorithm().getAlgorithm(), ChecksumAlgorithm.SHA1
47 public void testConstructMd5()
49 Checksum checksum = new Checksum( ChecksumAlgorithm.MD5 );
50 assertEquals( "Checksum.algorithm", checksum.getAlgorithm().getAlgorithm(), ChecksumAlgorithm.MD5
55 public void testUpdate()
57 Checksum checksum = new Checksum( ChecksumAlgorithm.SHA1 );
58 byte buf[] = ( "You know, I'm sick of following my dreams, man. "
59 + "I'm just going to ask where they're going and hook up with 'em later. - Mitch Hedberg" ).getBytes();
60 checksum.update( buf, 0, buf.length );
61 assertEquals( "Checksum", "e396119ae0542e85a74759602fd2f81e5d36d762", checksum.getChecksum() );
65 public void testUpdateMany()
68 Checksum checksumSha1 = new Checksum( ChecksumAlgorithm.SHA1 );
69 Checksum checksumMd5 = new Checksum( ChecksumAlgorithm.MD5 );
70 List<Checksum> checksums = new ArrayList<Checksum>();
71 checksums.add( checksumSha1 );
72 checksums.add( checksumMd5 );
74 byte buf[] = ( "You know, I'm sick of following my dreams, man. "
75 + "I'm just going to ask where they're going and hook up with 'em later. - Mitch Hedberg" ).getBytes();
77 ByteArrayInputStream stream = new ByteArrayInputStream( buf );
78 Checksum.update( checksums, stream );
80 assertEquals( "Checksum SHA1", "e396119ae0542e85a74759602fd2f81e5d36d762", checksumSha1.getChecksum() );
81 assertEquals( "Checksum MD5", "21c2c5ca87ec018adacb2e2fb3432219", checksumMd5.getChecksum() );
85 public void testUpdateWholeUpdatePartial()
87 Checksum checksum = new Checksum( ChecksumAlgorithm.SHA1 );
88 assertEquals( "Checksum unset", UNSET_SHA1, checksum.getChecksum() );
90 String expected = "066c2cbbc8cdaecb8ff97dcb84502462d6f575f3";
91 byte reesepieces[] = "eatagramovabits".getBytes();
92 checksum.update( reesepieces, 0, reesepieces.length );
93 String actual = checksum.getChecksum();
95 assertEquals( "Expected", expected, actual );
97 // Reset the checksum.
99 assertEquals( "Checksum unset", UNSET_SHA1, checksum.getChecksum() );
101 // Now parse it again in 3 pieces.
102 checksum.update( reesepieces, 0, 5 );
103 checksum.update( reesepieces, 5, 5 );
104 checksum.update( reesepieces, 10, reesepieces.length - 10 );
106 assertEquals( "Expected", expected, actual );