Skip to content

Commit 3715178

Browse files
committed
Made testExtractZip64_LargeFile more rigorous
1 parent 4f4c280 commit 3715178

3 files changed

Lines changed: 31 additions & 6 deletions

File tree

Tests/ExtractFilesTests.m

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -237,11 +237,13 @@ - (void)testExtractFiles_Aces
237237

238238
- (void)testExtractZip64_LargeFile
239239
{
240-
NSURL *fourGigFileURL = [self emptyTextFileOfLength:4 * pow(2.0, 30.0)];
241-
NSURL *smallFileURL = [self emptyTextFileOfLength:4];
240+
NSArray<NSURL*> *urls = @[
241+
[self emptyTextFileOfLength:4 * pow(2.0, 30.0)],
242+
self.unicodeFileURLs[@"Test File Ⓐ.txt"]
243+
];
242244

243245
NSError *error = nil;
244-
NSURL *url = [self archiveWithFiles:@[fourGigFileURL, smallFileURL]];
246+
NSURL *url = [self archiveWithFiles:urls];
245247
UZKArchive *archive = [[UZKArchive alloc] initWithURL:url error:&error];
246248

247249
XCTAssertNil(error, @"Failed to init archive");
@@ -263,6 +265,20 @@ - (void)testExtractZip64_LargeFile
263265

264266
XCTAssertTrue(success, @"Extract large Zip64 archive failed");
265267
XCTAssertNil(error, @"Error extracting large Zip64 archive");
268+
269+
NSArray *expectedCRCs = @[
270+
@([self crcOfFile:urls[0]]),
271+
@([self crcOfFile:urls[1]])
272+
];
273+
274+
NSArray *actualCRCs = @[
275+
@([self crcOfFile:[extractURL URLByAppendingPathComponent:urls[0].lastPathComponent]]),
276+
@([self crcOfFile:[extractURL URLByAppendingPathComponent:urls[1].lastPathComponent]]),
277+
];
278+
279+
for (NSUInteger i = 0; i < expectedCRCs.count; i++) {
280+
XCTAssertEqualObjects(expectedCRCs[i], actualCRCs[i], @"CRCs didn't match");
281+
}
266282
}
267283

268284
- (void)testExtractZip64_ManyFiles

Tests/UZKArchiveTestCase.h

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
- (BOOL)extractArchive:(NSURL *)url password:(NSString *)password;
3939
- (NSURL *)largeArchive;
4040

41+
- (NSUInteger)crcOfFile:(NSURL *)url;
4142
- (NSUInteger)crcOfTestFile:(NSString *)filename;
4243

4344
@end

Tests/UZKArchiveTestCase.m

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -201,8 +201,11 @@ - (NSURL *)emptyTextFileOfLength:(NSUInteger)fileSize
201201
error:&error];
202202
XCTAssertNil(error, @"Error creating file handle for URL: %@", resultURL);
203203

204+
NSData *emptyByte = [@"\x01" dataUsingEncoding:NSUTF8StringEncoding];
205+
206+
[fileHandle writeData:emptyByte];
204207
[fileHandle seekToFileOffset:fileSize];
205-
[fileHandle writeData:(NSData *__nonnull)[@"\x00" dataUsingEncoding:NSUTF8StringEncoding]];
208+
[fileHandle writeData:emptyByte];
206209
[fileHandle closeFile];
207210

208211
return resultURL;
@@ -308,11 +311,16 @@ - (NSURL *)largeArchive
308311
return largeArchiveURL;
309312
}
310313

314+
- (NSUInteger)crcOfFile:(NSURL *)url
315+
{
316+
NSData *fileContents = [[NSFileManager defaultManager] contentsAtPath:url.path];
317+
return crc32(0, fileContents.bytes, (uInt)fileContents.length);
318+
}
319+
311320
- (NSUInteger)crcOfTestFile:(NSString *)filename
312321
{
313322
NSURL *fileURL = [self urlOfTestFile:filename];
314-
NSData *fileContents = [[NSFileManager defaultManager] contentsAtPath:fileURL.path];
315-
return crc32(0, fileContents.bytes, (uInt)fileContents.length);
323+
return [self crcOfFile:fileURL];
316324
}
317325

318326

0 commit comments

Comments
 (0)