|
|
@@ -85,6 +85,46 @@ public class ZipEntryTest extends TestCase { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* test handling of extra fields |
|
|
|
* |
|
|
|
* @since 1.1 |
|
|
|
*/ |
|
|
|
public void testAddAsFirstExtraField() { |
|
|
|
AsiExtraField a = new AsiExtraField(); |
|
|
|
a.setDirectory(true); |
|
|
|
a.setMode(0755); |
|
|
|
UnrecognizedExtraField u = new UnrecognizedExtraField(); |
|
|
|
u.setHeaderId(new ZipShort(1)); |
|
|
|
u.setLocalFileDataData(new byte[0]); |
|
|
|
|
|
|
|
ZipEntry ze = new ZipEntry("test/"); |
|
|
|
ze.setExtraFields(new ZipExtraField[] {a, u}); |
|
|
|
byte[] data1 = ze.getExtra(); |
|
|
|
|
|
|
|
UnrecognizedExtraField u2 = new UnrecognizedExtraField(); |
|
|
|
u2.setHeaderId(new ZipShort(1)); |
|
|
|
u2.setLocalFileDataData(new byte[] {1}); |
|
|
|
|
|
|
|
ze.addAsFirstExtraField(u2); |
|
|
|
byte[] data2 = ze.getExtra(); |
|
|
|
ZipExtraField[] result = ze.getExtraFields(); |
|
|
|
assertEquals("second pass", 2, result.length); |
|
|
|
assertSame(u2, result[0]); |
|
|
|
assertSame(a, result[1]); |
|
|
|
assertEquals("length second pass", data1.length + 1, data2.length); |
|
|
|
|
|
|
|
UnrecognizedExtraField u3 = new UnrecognizedExtraField(); |
|
|
|
u3.setHeaderId(new ZipShort(2)); |
|
|
|
u3.setLocalFileDataData(new byte[] {1}); |
|
|
|
ze.addAsFirstExtraField(u3); |
|
|
|
result = ze.getExtraFields(); |
|
|
|
assertEquals("third pass", 3, result.length); |
|
|
|
assertSame(u3, result[0]); |
|
|
|
assertSame(u2, result[1]); |
|
|
|
assertSame(a, result[2]); |
|
|
|
} |
|
|
|
|
|
|
|
public void testUnixMode() { |
|
|
|
ZipEntry ze = new ZipEntry("foo"); |
|
|
|
assertEquals(0, ze.getPlatform()); |
|
|
|