1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17 package org.apache.commons.compress.utils;
18
19 import static org.junit.jupiter.api.Assertions.assertEquals;
20 import static org.junit.jupiter.api.Assertions.assertNotEquals;
21 import static org.junit.jupiter.api.Assertions.assertThrows;
22
23 import java.io.BufferedInputStream;
24 import java.io.ByteArrayInputStream;
25 import java.io.IOException;
26 import java.util.zip.Adler32;
27 import java.util.zip.CRC32;
28 import java.util.zip.CheckedInputStream;
29
30 import org.junit.jupiter.api.Test;
31
32
33
34
35
36
37 public class ChecksumCalculatingInputStreamTest {
38
39 @Test
40 public void testClassInstantiationWithParameterBeingNullThrowsNullPointerExceptionOne() {
41 assertThrows(NullPointerException.class, () -> new ChecksumCalculatingInputStream(null, null));
42 }
43
44 @Test
45 public void testClassInstantiationWithParameterBeingNullThrowsNullPointerExceptionThree() {
46 assertThrows(NullPointerException.class, () -> new ChecksumCalculatingInputStream(new CRC32(), null));
47 }
48
49 @Test
50 public void testClassInstantiationWithParameterBeingNullThrowsNullPointerExceptionTwo() {
51 assertThrows(NullPointerException.class, () -> new ChecksumCalculatingInputStream(null, new ByteArrayInputStream(new byte[1])));
52 }
53
54 @Test
55 public void testReadTakingByteArray() throws IOException {
56 final Adler32 adler32 = new Adler32();
57 final byte[] byteArray = new byte[6];
58 final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArray);
59 try (ChecksumCalculatingInputStream checksumCalculatingInputStream = new ChecksumCalculatingInputStream(adler32, byteArrayInputStream)) {
60 final int readResult = checksumCalculatingInputStream.read(byteArray);
61 assertEquals(6, readResult);
62 assertEquals(0, byteArrayInputStream.available());
63 assertEquals(393217L, checksumCalculatingInputStream.getValue());
64 }
65 }
66
67 @Test
68 public void testReadTakingByteArraySanityCheck() throws IOException {
69 final Adler32 adler32 = new Adler32();
70 final byte[] byteArray = new byte[6];
71 final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArray);
72 try (CheckedInputStream checksumCalculatingInputStream = new CheckedInputStream(byteArrayInputStream, adler32)) {
73 final int readResult = checksumCalculatingInputStream.read(byteArray);
74 assertEquals(6, readResult);
75 assertEquals(0, byteArrayInputStream.available());
76 assertEquals(393217L, checksumCalculatingInputStream.getChecksum().getValue());
77 }
78 }
79
80 @Test
81 public void testReadTakingNoArguments() throws IOException {
82 final Adler32 adler32 = new Adler32();
83 final byte[] byteArray = new byte[6];
84 final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArray);
85 final ChecksumCalculatingInputStream checksumCalculatingInputStream = new ChecksumCalculatingInputStream(adler32, byteArrayInputStream);
86 try (BufferedInputStream bufferedInputStream = new BufferedInputStream(checksumCalculatingInputStream)) {
87 final int inputStreamReadResult = bufferedInputStream.read(byteArray, 0, 1);
88 final int checkSumCalculationReadResult = checksumCalculatingInputStream.read();
89 assertNotEquals(checkSumCalculationReadResult, inputStreamReadResult);
90 assertEquals(-1, checkSumCalculationReadResult);
91 assertEquals(0, byteArrayInputStream.available());
92 assertEquals(393217L, checksumCalculatingInputStream.getValue());
93 }
94 }
95
96 @Test
97 public void testReadTakingNoArgumentsSanityCheck() throws IOException {
98 final Adler32 adler32 = new Adler32();
99 final byte[] byteArray = new byte[6];
100 final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArray);
101 final CheckedInputStream checksumCalculatingInputStream = new CheckedInputStream(byteArrayInputStream, adler32);
102 try (BufferedInputStream bufferedInputStream = new BufferedInputStream(checksumCalculatingInputStream)) {
103 final int inputStreamReadResult = bufferedInputStream.read(byteArray, 0, 1);
104 final int checkSumCalculationReadResult = checksumCalculatingInputStream.read();
105 assertNotEquals(checkSumCalculationReadResult, inputStreamReadResult);
106 assertEquals(-1, checkSumCalculationReadResult);
107 assertEquals(0, byteArrayInputStream.available());
108 assertEquals(393217L, checksumCalculatingInputStream.getChecksum().getValue());
109 }
110 }
111
112 @Test
113 public void testSkipReturningPositive() throws IOException {
114 final Adler32 adler32 = new Adler32();
115 final byte[] byteArray = new byte[6];
116 final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArray);
117 try (ChecksumCalculatingInputStream checksumCalculatingInputStream = new ChecksumCalculatingInputStream(adler32, byteArrayInputStream)) {
118 final long skipResult = checksumCalculatingInputStream.skip((byte) 0);
119 assertEquals(0, skipResult);
120 assertEquals(1, checksumCalculatingInputStream.getValue());
121 }
122 }
123
124 @Test
125 public void testSkipReturningPositiveSanityCheck() throws IOException {
126 final Adler32 adler32 = new Adler32();
127 final byte[] byteArray = new byte[6];
128 final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(byteArray);
129 try (CheckedInputStream checksumCalculatingInputStream = new CheckedInputStream(byteArrayInputStream, adler32)) {
130 final long skipResult = checksumCalculatingInputStream.skip((byte) 0);
131 assertEquals(0, skipResult);
132 assertEquals(1, checksumCalculatingInputStream.getChecksum().getValue());
133 }
134 }
135
136 @Test
137 public void testSkipReturningZero() throws IOException {
138 final Adler32 adler32 = new Adler32();
139 final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(ByteUtils.EMPTY_BYTE_ARRAY);
140 try (ChecksumCalculatingInputStream checksumCalculatingInputStream = new ChecksumCalculatingInputStream(adler32, byteArrayInputStream)) {
141 final long skipResult = checksumCalculatingInputStream.skip(60L);
142 assertEquals(0L, skipResult);
143 assertEquals(1L, checksumCalculatingInputStream.getValue());
144 }
145 }
146
147 @Test
148 public void testSkipReturningZeroSanityCheck() throws IOException {
149 final Adler32 adler32 = new Adler32();
150 final ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(ByteUtils.EMPTY_BYTE_ARRAY);
151 try (CheckedInputStream checksumCalculatingInputStream = new CheckedInputStream(byteArrayInputStream, adler32)) {
152 final long skipResult = checksumCalculatingInputStream.skip(60L);
153 assertEquals(0L, skipResult);
154 assertEquals(1L, checksumCalculatingInputStream.getChecksum().getValue());
155 }
156 }
157
158 }