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