1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.commons.compress.compressors.gzip;
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.assertNull;
24 import static org.junit.jupiter.api.Assertions.assertThrows;
25 import static org.junit.jupiter.api.Assertions.assertTrue;
26
27 import java.io.IOException;
28 import java.nio.charset.Charset;
29 import java.nio.charset.StandardCharsets;
30 import java.util.zip.Deflater;
31
32 import org.junit.jupiter.api.Test;
33 import org.junit.jupiter.params.ParameterizedTest;
34 import org.junit.jupiter.params.provider.CsvSource;
35
36
37
38
39 class GzipParametersTest {
40
41 @Test
42 void testDeflaterStrategy() {
43 final GzipParameters gzipParameters = new GzipParameters();
44 assertEquals(Deflater.DEFAULT_STRATEGY, gzipParameters.getDeflateStrategy());
45 gzipParameters.setDeflateStrategy(Deflater.HUFFMAN_ONLY);
46 assertEquals(Deflater.HUFFMAN_ONLY, gzipParameters.getDeflateStrategy());
47 }
48
49 @Test
50 void testEquals() throws IOException {
51 final GzipParameters gzipParameters1 = new GzipParameters();
52 final GzipParameters gzipParameters2 = new GzipParameters();
53 assertEquals(gzipParameters1, gzipParameters2);
54 gzipParameters1.setExtraField(new ExtraField().addSubField("AA", "XXXX".getBytes(StandardCharsets.ISO_8859_1)));
55 gzipParameters2.setExtraField(new ExtraField().addSubField("AA", "XXXX".getBytes(StandardCharsets.ISO_8859_1)));
56 assertEquals(gzipParameters1, gzipParameters1);
57 assertEquals(gzipParameters1, gzipParameters2);
58 assertEquals(gzipParameters2, gzipParameters1);
59
60 gzipParameters2.setExtraField(new ExtraField().addSubField("BB", "XXXX".getBytes(StandardCharsets.ISO_8859_1)));
61 assertNotEquals(gzipParameters1, gzipParameters2);
62 }
63
64 @Test
65 void testHashCode() throws IOException {
66 final GzipParameters gzipParameters1 = new GzipParameters();
67 final GzipParameters gzipParameters2 = new GzipParameters();
68 assertEquals(gzipParameters1.hashCode(), gzipParameters2.hashCode());
69 gzipParameters1.setExtraField(new ExtraField().addSubField("AA", "XXXX".getBytes(StandardCharsets.ISO_8859_1)));
70 gzipParameters2.setExtraField(new ExtraField().addSubField("AA", "XXXX".getBytes(StandardCharsets.ISO_8859_1)));
71 assertEquals(gzipParameters1.hashCode(), gzipParameters1.hashCode());
72 assertEquals(gzipParameters1.hashCode(), gzipParameters2.hashCode());
73 assertEquals(gzipParameters2.hashCode(), gzipParameters1.hashCode());
74
75 gzipParameters2.setExtraField(new ExtraField().addSubField("BB", "XXXX".getBytes(StandardCharsets.ISO_8859_1)));
76 assertNotEquals(gzipParameters1.hashCode(), gzipParameters2.hashCode());
77 }
78
79 @ParameterizedTest
80
81 @CsvSource({
82 " , hello\0world, false",
83 "ISO-8859-1, hello\0world, false",
84 "UTF-8 , hello\0world, false",
85 "UTF-16BE , helloworld, false"
86 })
87
88 void testIllegalCommentOrFileName(final Charset charset, final String text) {
89 final GzipParameters gzipParameters = new GzipParameters();
90
91 gzipParameters.setFileNameCharset(charset);
92 assertThrows(IllegalArgumentException.class, () -> gzipParameters.setComment(text));
93 assertNull(gzipParameters.getComment());
94 assertThrows(IllegalArgumentException.class, () -> gzipParameters.setFilename(text));
95 assertNull(gzipParameters.getFileName());
96 assertThrows(IllegalArgumentException.class, () -> gzipParameters.setFileName(text));
97 assertNull(gzipParameters.getFileName());
98 assertEquals(gzipParameters, gzipParameters);
99 }
100
101 @ParameterizedTest
102
103 @CsvSource({
104 " , helloworld",
105 " , helloéworld",
106 "ISO-8859-1, helloworld",
107 "ISO-8859-1, helloéworld",
108 "UTF-8 , helloworld",
109 "UTF-8 , helloéworld"
110 })
111
112 void testLegalCommentOrFileName(final Charset charset, final String text) {
113 final GzipParameters gzipParameters = new GzipParameters();
114
115 gzipParameters.setFileNameCharset(charset);
116 gzipParameters.setComment(text);
117 assertEquals(text, gzipParameters.getComment());
118 gzipParameters.setFilename(text);
119 assertEquals(text, gzipParameters.getFileName());
120 gzipParameters.setFileName(text);
121 assertEquals(text, gzipParameters.getFileName());
122 assertEquals(gzipParameters, gzipParameters);
123 }
124
125 @Test
126 void testToString() {
127 final GzipParameters gzipParameters = new GzipParameters();
128 assertTrue(gzipParameters.toString().contains("UNKNOWN"));
129 gzipParameters.setOS(GzipParameters.OS.Z_SYSTEM);
130 assertTrue(gzipParameters.toString().contains("Z_SYSTEM"));
131 assertEquals(gzipParameters, gzipParameters);
132 }
133 }