ARC-ified; removed ARCHelper.h

This commit is contained in:
Gianluca Bertani
2015-08-27 16:16:26 +02:00
parent c8f2e3843f
commit 433d629232
16 changed files with 538 additions and 652 deletions
+284 -315
View File
@@ -72,43 +72,30 @@
_textView.font= [UIFont fontWithName:@"Helvetica" size:11.0];
}
- (void) dealloc {
[_testThread release];
[super dealloc];
}
- (void) didReceiveMemoryWarning {
[super didReceiveMemoryWarning];
}
- (IBAction) zipUnzip {
if (_testThread)
[_testThread release];
_testThread= [[NSThread alloc] initWithTarget:self selector:@selector(test1) object:nil];
[_testThread start];
}
- (IBAction) zipUnzip2 {
if (_testThread)
[_testThread release];
_testThread= [[NSThread alloc] initWithTarget:self selector:@selector(test2) object:nil];
[_testThread start];
}
- (IBAction) zipCheck1 {
if (_testThread)
[_testThread release];
_testThread= [[NSThread alloc] initWithTarget:self selector:@selector(test3) object:nil];
[_testThread start];
}
- (IBAction) zipCheck2 {
if (_testThread)
[_testThread release];
_testThread= [[NSThread alloc] initWithTarget:self selector:@selector(test4) object:nil];
[_testThread start];
@@ -119,134 +106,131 @@
#pragma mark Test 1: zip & unzip
- (void) test1 {
NSAutoreleasePool *pool= [[NSAutoreleasePool alloc] init];
@autoreleasepool {
NSString *documentsDir= [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *filePath= [documentsDir stringByAppendingPathComponent:@"test.zip"];
NSString *documentsDir= [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *filePath= [documentsDir stringByAppendingPathComponent:@"test.zip"];
@try {
[[NSFileManager defaultManager] removeItemAtPath:filePath error:NULL];
@try {
[[NSFileManager defaultManager] removeItemAtPath:filePath error:NULL];
[self log:@"Test 1: opening zip file for writing..."];
ZipFile *zipFile= [[ZipFile alloc] initWithFileName:filePath mode:ZipFileModeCreate];
[self log:@"Test 1: adding first file..."];
ZipWriteStream *stream1= [zipFile writeFileInZipWithName:@"abc.txt" fileDate:[NSDate dateWithTimeIntervalSinceNow:-86400.0] compressionLevel:ZipCompressionLevelBest];
[self log:@"Test 1: writing to first file's stream..."];
NSString *text= @"abc";
[stream1 writeData:[text dataUsingEncoding:NSUTF8StringEncoding]];
[self log:@"Test 1: closing first file's stream..."];
[stream1 finishedWriting];
[self log:@"Test 1: adding second file..."];
NSString *file2name= @"x/y/z/xyz.txt";
ZipWriteStream *stream2= [zipFile writeFileInZipWithName:file2name compressionLevel:ZipCompressionLevelNone];
[self log:@"Test 1: writing to second file's stream..."];
NSString *text2= @"XYZ";
[stream2 writeData:[text2 dataUsingEncoding:NSUTF8StringEncoding]];
[self log:@"Test 1: closing second file's stream..."];
[stream2 finishedWriting];
[self log:@"Test 1: closing zip file..."];
[zipFile close];
[zipFile release];
[self log:@"Test 1: opening zip file for reading..."];
ZipFile *unzipFile= [[ZipFile alloc] initWithFileName:filePath mode:ZipFileModeUnzip];
[self log:@"Test 1: reading file infos..."];
NSArray *infos= [unzipFile listFileInZipInfos];
for (FileInZipInfo *info in infos)
[self log:@"Test 1: - %@ %@ %d (%d)", info.name, info.date, info.size, info.level];
[self log:@"Test 1: opening first file..."];
[unzipFile goToFirstFileInZip];
ZipReadStream *read1= [unzipFile readCurrentFileInZip];
[self log:@"Test 1: reading from first file's stream..."];
NSMutableData *data1= [[[NSMutableData alloc] initWithLength:256] autorelease];
int bytesRead1= [read1 readDataWithBuffer:data1];
BOOL ok= NO;
if (bytesRead1 == 3) {
NSString *fileText1= [[[NSString alloc] initWithBytes:[data1 bytes] length:bytesRead1 encoding:NSUTF8StringEncoding] autorelease];
if ([fileText1 isEqualToString:@"abc"])
ok= YES;
}
if (ok)
[self log:@"Test 1: content of first file is OK"];
else
[self log:@"Test 1: content of first file is WRONG"];
[self log:@"Test 1: opening zip file for writing..."];
[self log:@"Test 1: closing first file's stream..."];
[read1 finishedReading];
[self log:@"Test 1: opening second file..."];
ZipFile *zipFile= [[ZipFile alloc] initWithFileName:filePath mode:ZipFileModeCreate];
[unzipFile locateFileInZip:file2name];
ZipReadStream *read2= [unzipFile readCurrentFileInZip];
[self log:@"Test 1: adding first file..."];
ZipWriteStream *stream1= [zipFile writeFileInZipWithName:@"abc.txt" fileDate:[NSDate dateWithTimeIntervalSinceNow:-86400.0] compressionLevel:ZipCompressionLevelBest];
[self log:@"Test 1: reading from second file's stream..."];
NSMutableData *data2= [[[NSMutableData alloc] initWithLength:256] autorelease];
int bytesRead2= [read2 readDataWithBuffer:data2];
ok= NO;
if (bytesRead2 == 3) {
NSString *fileText2= [[[NSString alloc] initWithBytes:[data2 bytes] length:bytesRead2 encoding:NSUTF8StringEncoding] autorelease];
if ([fileText2 isEqualToString:@"XYZ"])
ok= YES;
[self log:@"Test 1: writing to first file's stream..."];
NSString *text= @"abc";
[stream1 writeData:[text dataUsingEncoding:NSUTF8StringEncoding]];
[self log:@"Test 1: closing first file's stream..."];
[stream1 finishedWriting];
[self log:@"Test 1: adding second file..."];
NSString *file2name= @"x/y/z/xyz.txt";
ZipWriteStream *stream2= [zipFile writeFileInZipWithName:file2name compressionLevel:ZipCompressionLevelNone];
[self log:@"Test 1: writing to second file's stream..."];
NSString *text2= @"XYZ";
[stream2 writeData:[text2 dataUsingEncoding:NSUTF8StringEncoding]];
[self log:@"Test 1: closing second file's stream..."];
[stream2 finishedWriting];
[self log:@"Test 1: closing zip file..."];
[zipFile close];
[self log:@"Test 1: opening zip file for reading..."];
ZipFile *unzipFile= [[ZipFile alloc] initWithFileName:filePath mode:ZipFileModeUnzip];
[self log:@"Test 1: reading file infos..."];
NSArray *infos= [unzipFile listFileInZipInfos];
for (FileInZipInfo *info in infos)
[self log:@"Test 1: - %@ %@ %d (%d)", info.name, info.date, info.size, info.level];
[self log:@"Test 1: opening first file..."];
[unzipFile goToFirstFileInZip];
ZipReadStream *read1= [unzipFile readCurrentFileInZip];
[self log:@"Test 1: reading from first file's stream..."];
NSMutableData *data1= [[NSMutableData alloc] initWithLength:256];
int bytesRead1= [read1 readDataWithBuffer:data1];
BOOL ok= NO;
if (bytesRead1 == 3) {
NSString *fileText1= [[NSString alloc] initWithBytes:[data1 bytes] length:bytesRead1 encoding:NSUTF8StringEncoding];
if ([fileText1 isEqualToString:@"abc"])
ok= YES;
}
if (ok)
[self log:@"Test 1: content of first file is OK"];
else
[self log:@"Test 1: content of first file is WRONG"];
[self log:@"Test 1: closing first file's stream..."];
[read1 finishedReading];
[self log:@"Test 1: opening second file..."];
[unzipFile locateFileInZip:file2name];
ZipReadStream *read2= [unzipFile readCurrentFileInZip];
[self log:@"Test 1: reading from second file's stream..."];
NSMutableData *data2= [[NSMutableData alloc] initWithLength:256];
int bytesRead2= [read2 readDataWithBuffer:data2];
ok= NO;
if (bytesRead2 == 3) {
NSString *fileText2= [[NSString alloc] initWithBytes:[data2 bytes] length:bytesRead2 encoding:NSUTF8StringEncoding];
if ([fileText2 isEqualToString:@"XYZ"])
ok= YES;
}
if (ok)
[self log:@"Test 1: content of second file is OK"];
else
[self log:@"Test 1: content of second file is WRONG"];
[self log:@"Test 1: closing second file's stream..."];
[read2 finishedReading];
[self log:@"Test 1: closing zip file..."];
[unzipFile close];
[self log:@"Test 1: test terminated succesfully"];
} @catch (ZipException *ze) {
[self log:@"Test 1: caught a ZipException (see logs), terminating..."];
NSLog(@"Test 1: ZipException caught: %d - %@", ze.error, [ze reason]);
} @catch (id e) {
[self log:@"Test 1: caught a generic exception (see logs), terminating..."];
NSLog(@"Test 1: Exception caught: %@ - %@", [[e class] description], [e description]);
} @finally {
[[NSFileManager defaultManager] removeItemAtPath:filePath error:NULL];
}
if (ok)
[self log:@"Test 1: content of second file is OK"];
else
[self log:@"Test 1: content of second file is WRONG"];
[self log:@"Test 1: closing second file's stream..."];
[read2 finishedReading];
[self log:@"Test 1: closing zip file..."];
[unzipFile close];
[unzipFile release];
[self log:@"Test 1: test terminated succesfully"];
} @catch (ZipException *ze) {
[self log:@"Test 1: caught a ZipException (see logs), terminating..."];
NSLog(@"Test 1: ZipException caught: %d - %@", ze.error, [ze reason]);
} @catch (id e) {
[self log:@"Test 1: caught a generic exception (see logs), terminating..."];
NSLog(@"Test 1: Exception caught: %@ - %@", [[e class] description], [e description]);
} @finally {
[[NSFileManager defaultManager] removeItemAtPath:filePath error:NULL];
}
[pool drain];
}
@@ -254,104 +238,99 @@
#pragma mark Test 2: zip & unzip 5 GB
- (void) test2 {
NSAutoreleasePool *pool= [[NSAutoreleasePool alloc] init];
@autoreleasepool {
NSString *documentsDir= [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *filePath= [documentsDir stringByAppendingPathComponent:@"huge_test.zip"];
NSString *documentsDir= [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
NSString *filePath= [documentsDir stringByAppendingPathComponent:@"huge_test.zip"];
@try {
[[NSFileManager defaultManager] removeItemAtPath:filePath error:NULL];
@try {
[[NSFileManager defaultManager] removeItemAtPath:filePath error:NULL];
[self log:@"Test 2: opening zip file for writing..."];
ZipFile *zipFile= [[ZipFile alloc] initWithFileName:filePath mode:ZipFileModeCreate];
[self log:@"Test 2: adding file..."];
ZipWriteStream *stream= [zipFile writeFileInZipWithName:@"huge_file.txt" compressionLevel:ZipCompressionLevelBest];
[self log:@"Test 2: writing to file's stream..."];
NSMutableData *data= [[NSMutableData alloc] initWithLength:HUGE_TEST_BLOCK_LENGTH];
SecRandomCopyBytes(kSecRandomDefault, [data length], [data mutableBytes]);
NSData *checkData= [data subdataWithRange:NSMakeRange(0, 100)];
NSMutableData *buffer= [[NSMutableData alloc] initWithLength:HUGE_TEST_BLOCK_LENGTH]; // For use later
for (int i= 0; i < HUGE_TEST_NUMBER_OF_BLOCKS; i++) {
[stream writeData:data];
[self log:@"Test 2: opening zip file for writing..."];
if (i % 100 == 0)
[self log:@"Test 2: written %d KB...", ([data length] / 1024) * (i +1)];
}
ZipFile *zipFile= [[ZipFile alloc] initWithFileName:filePath mode:ZipFileModeCreate];
[self log:@"Test 2: adding file..."];
ZipWriteStream *stream= [zipFile writeFileInZipWithName:@"huge_file.txt" compressionLevel:ZipCompressionLevelBest];
[self log:@"Test 2: writing to file's stream..."];
NSMutableData *data= [[NSMutableData alloc] initWithLength:HUGE_TEST_BLOCK_LENGTH];
SecRandomCopyBytes(kSecRandomDefault, [data length], [data mutableBytes]);
NSData *checkData= [data subdataWithRange:NSMakeRange(0, 100)];
NSMutableData *buffer= [[NSMutableData alloc] initWithLength:HUGE_TEST_BLOCK_LENGTH]; // For use later
for (int i= 0; i < HUGE_TEST_NUMBER_OF_BLOCKS; i++) {
[stream writeData:data];
[self log:@"Test 2: closing file's stream..."];
[stream finishedWriting];
[self log:@"Test 2: closing zip file..."];
[zipFile close];
[zipFile release];
[self log:@"Test 2: opening zip file for reading..."];
ZipFile *unzipFile= [[ZipFile alloc] initWithFileName:filePath mode:ZipFileModeUnzip];
[self log:@"Test 2: opening file..."];
[unzipFile goToFirstFileInZip];
ZipReadStream *read= [unzipFile readCurrentFileInZip];
[self log:@"Test 2: reading from file's stream..."];
for (int i= 0; i < HUGE_TEST_NUMBER_OF_BLOCKS; i++) {
int bytesRead= [read readDataWithBuffer:buffer];
if (i % 100 == 0)
[self log:@"Test 2: written %d KB...", ([data length] / 1024) * (i +1)];
}
[self log:@"Test 2: closing file's stream..."];
BOOL ok= NO;
if (bytesRead == [data length]) {
NSRange range= [buffer rangeOfData:checkData options:0 range:NSMakeRange(0, [buffer length])];
if (range.location == 0)
ok= YES;
[stream finishedWriting];
[self log:@"Test 2: closing zip file..."];
[zipFile close];
[self log:@"Test 2: opening zip file for reading..."];
ZipFile *unzipFile= [[ZipFile alloc] initWithFileName:filePath mode:ZipFileModeUnzip];
[self log:@"Test 2: opening file..."];
[unzipFile goToFirstFileInZip];
ZipReadStream *read= [unzipFile readCurrentFileInZip];
[self log:@"Test 2: reading from file's stream..."];
for (int i= 0; i < HUGE_TEST_NUMBER_OF_BLOCKS; i++) {
int bytesRead= [read readDataWithBuffer:buffer];
BOOL ok= NO;
if (bytesRead == [data length]) {
NSRange range= [buffer rangeOfData:checkData options:0 range:NSMakeRange(0, [buffer length])];
if (range.location == 0)
ok= YES;
}
if (!ok)
[self log:@"Test 2: content of file is WRONG at position %d KB", ([buffer length] / 1024) * i];
if (i % 100 == 0)
[self log:@"Test 2: read %d KB...", ([buffer length] / 1024) * (i +1)];
}
if (!ok)
[self log:@"Test 2: content of file is WRONG at position %d KB", ([buffer length] / 1024) * i];
[self log:@"Test 2: closing file's stream..."];
if (i % 100 == 0)
[self log:@"Test 2: read %d KB...", ([buffer length] / 1024) * (i +1)];
[read finishedReading];
[self log:@"Test 2: closing zip file..."];
[unzipFile close];
[self log:@"Test 2: test terminated succesfully"];
} @catch (ZipException *ze) {
[self log:@"Test 2: caught a ZipException (see logs), terminating..."];
NSLog(@"Test 2: ZipException caught: %d - %@", ze.error, [ze reason]);
} @catch (id e) {
[self log:@"Test 2: caught a generic exception (see logs), terminating..."];
NSLog(@"Test 2: Exception caught: %@ - %@", [[e class] description], [e description]);
} @finally {
[[NSFileManager defaultManager] removeItemAtPath:filePath error:NULL];
}
[self log:@"Test 2: closing file's stream..."];
[read finishedReading];
[self log:@"Test 2: closing zip file..."];
[unzipFile close];
[unzipFile release];
[self log:@"Test 2: test terminated succesfully"];
[data release];
[buffer release];
} @catch (ZipException *ze) {
[self log:@"Test 2: caught a ZipException (see logs), terminating..."];
NSLog(@"Test 2: ZipException caught: %d - %@", ze.error, [ze reason]);
} @catch (id e) {
[self log:@"Test 2: caught a generic exception (see logs), terminating..."];
NSLog(@"Test 2: Exception caught: %@ - %@", [[e class] description], [e description]);
} @finally {
[[NSFileManager defaultManager] removeItemAtPath:filePath error:NULL];
}
[pool drain];
}
@@ -359,58 +338,53 @@
#pragma mark Test 3: unzip & check Mac zip file
- (void) test3 {
NSAutoreleasePool *pool= [[NSAutoreleasePool alloc] init];
@autoreleasepool {
NSString *filePath= [[NSBundle mainBundle] pathForResource:@"mac_test_file" ofType:@"zip"];
@try {
[self log:@"Test 3: opening zip file for reading..."];
NSString *filePath= [[NSBundle mainBundle] pathForResource:@"mac_test_file" ofType:@"zip"];
ZipFile *unzipFile= [[ZipFile alloc] initWithFileName:filePath mode:ZipFileModeUnzip];
[self log:@"Test 3: opening file..."];
[unzipFile goToFirstFileInZip];
ZipReadStream *read= [unzipFile readCurrentFileInZip];
[self log:@"Test 3: reading from file's stream..."];
NSMutableData *buffer= [[NSMutableData alloc] initWithLength:1024];
@try {
[self log:@"Test 3: opening zip file for reading..."];
ZipFile *unzipFile= [[ZipFile alloc] initWithFileName:filePath mode:ZipFileModeUnzip];
[self log:@"Test 3: opening file..."];
[unzipFile goToFirstFileInZip];
ZipReadStream *read= [unzipFile readCurrentFileInZip];
[self log:@"Test 3: reading from file's stream..."];
NSMutableData *buffer= [[NSMutableData alloc] initWithLength:1024];
int bytesRead= [read readDataWithBuffer:buffer];
NSString *fileText= [[[NSString alloc] initWithBytes:[buffer bytes] length:bytesRead encoding:NSUTF8StringEncoding] autorelease];
if ([fileText isEqualToString:@"Objective-Zip Mac test file\n"])
[self log:@"Test 3: content of Mac file is OK"];
else
[self log:@"Test 3: content of Mac file is WRONG"];
[self log:@"Test 3: closing file's stream..."];
[read finishedReading];
[self log:@"Test 3: closing zip file..."];
[unzipFile close];
[unzipFile release];
[self log:@"Test 3: test terminated succesfully"];
[buffer release];
int bytesRead= [read readDataWithBuffer:buffer];
NSString *fileText= [[NSString alloc] initWithBytes:[buffer bytes] length:bytesRead encoding:NSUTF8StringEncoding];
if ([fileText isEqualToString:@"Objective-Zip Mac test file\n"])
[self log:@"Test 3: content of Mac file is OK"];
else
[self log:@"Test 3: content of Mac file is WRONG"];
[self log:@"Test 3: closing file's stream..."];
[read finishedReading];
[self log:@"Test 3: closing zip file..."];
[unzipFile close];
[self log:@"Test 3: test terminated succesfully"];
} @catch (ZipException *ze) {
[self log:@"Test 3: caught a ZipException (see logs), terminating..."];
NSLog(@"Test 3: ZipException caught: %d - %@", ze.error, [ze reason]);
} @catch (id e) {
[self log:@"Test 3: caught a generic exception (see logs), terminating..."];
NSLog(@"Test 3: Exception caught: %@ - %@", [[e class] description], [e description]);
} @catch (ZipException *ze) {
[self log:@"Test 3: caught a ZipException (see logs), terminating..."];
NSLog(@"Test 3: ZipException caught: %d - %@", ze.error, [ze reason]);
} @catch (id e) {
[self log:@"Test 3: caught a generic exception (see logs), terminating..."];
NSLog(@"Test 3: Exception caught: %@ - %@", [[e class] description], [e description]);
}
}
[pool drain];
}
@@ -418,57 +392,53 @@
#pragma mark Test 4: unzip & check Win zip file
- (void) test4 {
NSAutoreleasePool *pool= [[NSAutoreleasePool alloc] init];
@autoreleasepool {
NSString *filePath= [[NSBundle mainBundle] pathForResource:@"win_test_file" ofType:@"zip"];
@try {
[self log:@"Test 4: opening zip file for reading..."];
NSString *filePath= [[NSBundle mainBundle] pathForResource:@"win_test_file" ofType:@"zip"];
ZipFile *unzipFile= [[ZipFile alloc] initWithFileName:filePath mode:ZipFileModeUnzip];
[self log:@"Test 4: opening file..."];
[unzipFile goToFirstFileInZip];
ZipReadStream *read= [unzipFile readCurrentFileInZip];
[self log:@"Test 4: reading from file's stream..."];
NSMutableData *buffer= [[NSMutableData alloc] initWithLength:1024];
int bytesRead= [read readDataWithBuffer:buffer];
NSString *fileText= [[[NSString alloc] initWithBytes:[buffer bytes] length:bytesRead encoding:NSUTF8StringEncoding] autorelease];
if ([fileText isEqualToString:@"Objective-Zip Windows test file\r\n"])
[self log:@"Test 4: content of Win file is OK"];
else
[self log:@"Test 4: content of Win file is WRONG"];
[self log:@"Test 4: closing file's stream..."];
[read finishedReading];
[self log:@"Test 4: closing zip file..."];
[unzipFile close];
[unzipFile release];
[self log:@"Test 4: test terminated succesfully"];
[buffer release];
} @catch (ZipException *ze) {
[self log:@"Test 4: caught a ZipException (see logs), terminating..."];
NSLog(@"Test 4: ZipException caught: %d - %@", ze.error, [ze reason]);
} @catch (id e) {
[self log:@"Test 4: caught a generic exception (see logs), terminating..."];
NSLog(@"Test 4: Exception caught: %@ - %@", [[e class] description], [e description]);
@try {
[self log:@"Test 4: opening zip file for reading..."];
ZipFile *unzipFile= [[ZipFile alloc] initWithFileName:filePath mode:ZipFileModeUnzip];
[self log:@"Test 4: opening file..."];
[unzipFile goToFirstFileInZip];
ZipReadStream *read= [unzipFile readCurrentFileInZip];
[self log:@"Test 4: reading from file's stream..."];
NSMutableData *buffer= [[NSMutableData alloc] initWithLength:1024];
int bytesRead= [read readDataWithBuffer:buffer];
NSString *fileText= [[NSString alloc] initWithBytes:[buffer bytes] length:bytesRead encoding:NSUTF8StringEncoding];
if ([fileText isEqualToString:@"Objective-Zip Windows test file\r\n"])
[self log:@"Test 4: content of Win file is OK"];
else
[self log:@"Test 4: content of Win file is WRONG"];
[self log:@"Test 4: closing file's stream..."];
[read finishedReading];
[self log:@"Test 4: closing zip file..."];
[unzipFile close];
[self log:@"Test 4: test terminated succesfully"];
} @catch (ZipException *ze) {
[self log:@"Test 4: caught a ZipException (see logs), terminating..."];
NSLog(@"Test 4: ZipException caught: %d - %@", ze.error, [ze reason]);
} @catch (id e) {
[self log:@"Test 4: caught a generic exception (see logs), terminating..."];
NSLog(@"Test 4: Exception caught: %@ - %@", [[e class] description], [e description]);
}
}
[pool drain];
}
@@ -485,7 +455,6 @@
[self performSelectorOnMainThread:@selector(printLog:) withObject:logLine waitUntilDone:YES];
[logLine release];
}
- (void) printLog:(NSString *)logLine {