1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.commons.compress.archivers.zip;
21
22 import java.util.Arrays;
23
24 import junit.framework.TestCase;
25
26 public class GeneralPurposeBitTest extends TestCase {
27
28 public void testDefaults() {
29 assertFalse(new GeneralPurposeBit().usesDataDescriptor());
30 assertFalse(new GeneralPurposeBit().usesUTF8ForNames());
31 assertFalse(new GeneralPurposeBit().usesEncryption());
32 assertFalse(new GeneralPurposeBit().usesStrongEncryption());
33 byte[] b = new byte[2];
34 assertTrue(Arrays.equals(b, new GeneralPurposeBit().encode()));
35 }
36
37 public void testParseEdgeCases() {
38 assertFalse(GeneralPurposeBit.parse(new byte[2], 0)
39 .usesDataDescriptor());
40 assertFalse(GeneralPurposeBit.parse(new byte[2], 0)
41 .usesUTF8ForNames());
42 assertFalse(GeneralPurposeBit.parse(new byte[2], 0)
43 .usesEncryption());
44 assertFalse(GeneralPurposeBit.parse(new byte[2], 0)
45 .usesStrongEncryption());
46 assertTrue(GeneralPurposeBit.parse(new byte[] {(byte) 255, (byte) 255},
47 0)
48 .usesDataDescriptor());
49 assertTrue(GeneralPurposeBit.parse(new byte[] {(byte) 255, (byte) 255},
50 0)
51 .usesUTF8ForNames());
52 assertTrue(GeneralPurposeBit.parse(new byte[] {(byte) 255, (byte) 255},
53 0)
54 .usesEncryption());
55 assertTrue(GeneralPurposeBit.parse(new byte[] {(byte) 255, (byte) 255},
56 0)
57 .usesStrongEncryption());
58 }
59
60 public void testDataDescriptor() {
61 byte[] flags = new byte[] {(byte) 8, (byte) 0};
62 assertTrue(GeneralPurposeBit.parse(flags, 0).usesDataDescriptor());
63 GeneralPurposeBit b = new GeneralPurposeBit();
64 b.useDataDescriptor(true);
65 assertTrue(Arrays.equals(flags, b.encode()));
66 }
67
68 public void testLanguageEncodingFlag() {
69 byte[] flags = new byte[] {(byte) 0, (byte) 8};
70 assertTrue(GeneralPurposeBit.parse(flags, 0).usesUTF8ForNames());
71 GeneralPurposeBit b = new GeneralPurposeBit();
72 b.useUTF8ForNames(true);
73 assertTrue(Arrays.equals(flags, b.encode()));
74 }
75
76 public void testEncryption() {
77 byte[] flags = new byte[] {(byte) 1, (byte) 0};
78 assertTrue(GeneralPurposeBit.parse(flags, 0).usesEncryption());
79 GeneralPurposeBit b = new GeneralPurposeBit();
80 b.useEncryption(true);
81 assertTrue(Arrays.equals(flags, b.encode()));
82 }
83
84 public void testStringEncryption() {
85 byte[] flags = new byte[] {(byte) 65, (byte) 0};
86 assertTrue(GeneralPurposeBit.parse(flags, 0).usesStrongEncryption());
87 GeneralPurposeBit b = new GeneralPurposeBit();
88 b.useStrongEncryption(true);
89 assertTrue(b.usesEncryption());
90 assertTrue(Arrays.equals(flags, b.encode()));
91
92 flags = new byte[] {(byte) 64, (byte) 0};
93 assertFalse(GeneralPurposeBit.parse(flags, 0).usesStrongEncryption());
94 }
95
96 }