Add fixtures, tests and partially finished test class to new project

This commit is contained in:
Douglas Bumby
2015-07-11 23:56:45 +01:00
parent ded74bc073
commit 0b01b24824
26 changed files with 343 additions and 18 deletions
@@ -25,8 +25,27 @@
A5D15D141B51A44C00929105 /* unzip.h in Headers */ = {isa = PBXBuildFile; fileRef = A5D15D0B1B51A44C00929105 /* unzip.h */; };
A5D15D151B51A44C00929105 /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = A5D15D0C1B51A44C00929105 /* zip.c */; };
A5D15D161B51A44C00929105 /* zip.h in Headers */ = {isa = PBXBuildFile; fileRef = A5D15D0D1B51A44C00929105 /* zip.h */; };
A5D15D1A1B51A4D000929105 /* Main.h in Headers */ = {isa = PBXBuildFile; fileRef = A5D15D181B51A4D000929105 /* Main.h */; settings = {ATTRIBUTES = (Public, ); }; };
A5D15D1B1B51A4D000929105 /* Main.m in Sources */ = {isa = PBXBuildFile; fileRef = A5D15D191B51A4D000929105 /* Main.m */; };
A5D15D201B51CDB900929105 /* CollectingDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A5D15D1E1B51CD5600929105 /* CollectingDelegate.m */; };
A5D15D2B1B51CEAC00929105 /* 0.m4a in Resources */ = {isa = PBXBuildFile; fileRef = A5D15D231B51CEAC00929105 /* 0.m4a */; };
A5D15D2C1B51CEAC00929105 /* 1.m4a in Resources */ = {isa = PBXBuildFile; fileRef = A5D15D241B51CEAC00929105 /* 1.m4a */; };
A5D15D2D1B51CEAC00929105 /* 2.m4a in Resources */ = {isa = PBXBuildFile; fileRef = A5D15D251B51CEAC00929105 /* 2.m4a */; };
A5D15D2E1B51CEAC00929105 /* 3.m4a in Resources */ = {isa = PBXBuildFile; fileRef = A5D15D261B51CEAC00929105 /* 3.m4a */; };
A5D15D2F1B51CEAC00929105 /* 4.m4a in Resources */ = {isa = PBXBuildFile; fileRef = A5D15D271B51CEAC00929105 /* 4.m4a */; };
A5D15D301B51CEAC00929105 /* 5.m4a in Resources */ = {isa = PBXBuildFile; fileRef = A5D15D281B51CEAC00929105 /* 5.m4a */; };
A5D15D311B51CEAC00929105 /* 6.m4a in Resources */ = {isa = PBXBuildFile; fileRef = A5D15D291B51CEAC00929105 /* 6.m4a */; };
A5D15D321B51CEAC00929105 /* 7.m4a in Resources */ = {isa = PBXBuildFile; fileRef = A5D15D2A1B51CEAC00929105 /* 7.m4a */; };
A5D15D3C1B51CED100929105 /* hello.zip in Resources */ = {isa = PBXBuildFile; fileRef = A5D15D341B51CED100929105 /* hello.zip */; };
A5D15D3D1B51CED100929105 /* IncorrectHeaders.zip in Resources */ = {isa = PBXBuildFile; fileRef = A5D15D351B51CED100929105 /* IncorrectHeaders.zip */; };
A5D15D3E1B51CED100929105 /* PermissionsTestApp.app in Resources */ = {isa = PBXBuildFile; fileRef = A5D15D361B51CED100929105 /* PermissionsTestApp.app */; };
A5D15D3F1B51CED100929105 /* RelativeSymbolicLink.zip in Resources */ = {isa = PBXBuildFile; fileRef = A5D15D371B51CED100929105 /* RelativeSymbolicLink.zip */; };
A5D15D401B51CED100929105 /* SymbolicLink.zip in Resources */ = {isa = PBXBuildFile; fileRef = A5D15D381B51CED100929105 /* SymbolicLink.zip */; };
A5D15D411B51CED100929105 /* TestArchive.zip in Resources */ = {isa = PBXBuildFile; fileRef = A5D15D391B51CED100929105 /* TestArchive.zip */; };
A5D15D421B51CED100929105 /* TestPasswordArchive.zip in Resources */ = {isa = PBXBuildFile; fileRef = A5D15D3A1B51CED100929105 /* TestPasswordArchive.zip */; };
A5D15D431B51CED100929105 /* Unicode.zip in Resources */ = {isa = PBXBuildFile; fileRef = A5D15D3B1B51CED100929105 /* Unicode.zip */; };
A5D15D441B51CF2900929105 /* Main.m in Sources */ = {isa = PBXBuildFile; fileRef = A5D15D191B51A4D000929105 /* Main.m */; };
A5D15D451B51D64200929105 /* Main.m in Headers */ = {isa = PBXBuildFile; fileRef = A5D15D191B51A4D000929105 /* Main.m */; };
A5D15D461B51D68600929105 /* CollectingDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = A5D15D1E1B51CD5600929105 /* CollectingDelegate.m */; };
/* End PBXBuildFile section */
/* Begin PBXContainerItemProxy section */
@@ -67,6 +86,24 @@
A5D15D0D1B51A44C00929105 /* zip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = zip.h; path = minizip/zip.h; sourceTree = "<group>"; };
A5D15D181B51A4D000929105 /* Main.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Main.h; sourceTree = "<group>"; };
A5D15D191B51A4D000929105 /* Main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Main.m; sourceTree = "<group>"; };
A5D15D1C1B51CD4C00929105 /* CollectingDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectingDelegate.h; sourceTree = "<group>"; };
A5D15D1E1B51CD5600929105 /* CollectingDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectingDelegate.m; sourceTree = "<group>"; };
A5D15D231B51CEAC00929105 /* 0.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; name = 0.m4a; path = Multi_Zip_Test/0.m4a; sourceTree = "<group>"; };
A5D15D241B51CEAC00929105 /* 1.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; name = 1.m4a; path = Multi_Zip_Test/1.m4a; sourceTree = "<group>"; };
A5D15D251B51CEAC00929105 /* 2.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; name = 2.m4a; path = Multi_Zip_Test/2.m4a; sourceTree = "<group>"; };
A5D15D261B51CEAC00929105 /* 3.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; name = 3.m4a; path = Multi_Zip_Test/3.m4a; sourceTree = "<group>"; };
A5D15D271B51CEAC00929105 /* 4.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; name = 4.m4a; path = Multi_Zip_Test/4.m4a; sourceTree = "<group>"; };
A5D15D281B51CEAC00929105 /* 5.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; name = 5.m4a; path = Multi_Zip_Test/5.m4a; sourceTree = "<group>"; };
A5D15D291B51CEAC00929105 /* 6.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; name = 6.m4a; path = Multi_Zip_Test/6.m4a; sourceTree = "<group>"; };
A5D15D2A1B51CEAC00929105 /* 7.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; name = 7.m4a; path = Multi_Zip_Test/7.m4a; sourceTree = "<group>"; };
A5D15D341B51CED100929105 /* hello.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; name = hello.zip; path = Fixtures/hello.zip; sourceTree = "<group>"; };
A5D15D351B51CED100929105 /* IncorrectHeaders.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; name = IncorrectHeaders.zip; path = Fixtures/IncorrectHeaders.zip; sourceTree = "<group>"; };
A5D15D361B51CED100929105 /* PermissionsTestApp.app */ = {isa = PBXFileReference; lastKnownFileType = wrapper.application; name = PermissionsTestApp.app; path = Fixtures/PermissionsTestApp.app; sourceTree = "<group>"; };
A5D15D371B51CED100929105 /* RelativeSymbolicLink.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; name = RelativeSymbolicLink.zip; path = Fixtures/RelativeSymbolicLink.zip; sourceTree = "<group>"; };
A5D15D381B51CED100929105 /* SymbolicLink.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; name = SymbolicLink.zip; path = Fixtures/SymbolicLink.zip; sourceTree = "<group>"; };
A5D15D391B51CED100929105 /* TestArchive.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; name = TestArchive.zip; path = Fixtures/TestArchive.zip; sourceTree = "<group>"; };
A5D15D3A1B51CED100929105 /* TestPasswordArchive.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; name = TestPasswordArchive.zip; path = Fixtures/TestPasswordArchive.zip; sourceTree = "<group>"; };
A5D15D3B1B51CED100929105 /* Unicode.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; name = Unicode.zip; path = Fixtures/Unicode.zip; sourceTree = "<group>"; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
@@ -139,6 +176,10 @@
isa = PBXGroup;
children = (
A5D15CCF1B51A38C00929105 /* ZipArchiveTests.m */,
A5D15D331B51CEBD00929105 /* Fixtures */,
A5D15D221B51CEA300929105 /* Multi_Zip_Test */,
A5D15D1C1B51CD4C00929105 /* CollectingDelegate.h */,
A5D15D1E1B51CD5600929105 /* CollectingDelegate.m */,
A5D15CCD1B51A38C00929105 /* Supporting Files */,
);
path = ZipArchiveTests;
@@ -192,6 +233,36 @@
name = minizip;
sourceTree = "<group>";
};
A5D15D221B51CEA300929105 /* Multi_Zip_Test */ = {
isa = PBXGroup;
children = (
A5D15D231B51CEAC00929105 /* 0.m4a */,
A5D15D241B51CEAC00929105 /* 1.m4a */,
A5D15D251B51CEAC00929105 /* 2.m4a */,
A5D15D261B51CEAC00929105 /* 3.m4a */,
A5D15D271B51CEAC00929105 /* 4.m4a */,
A5D15D281B51CEAC00929105 /* 5.m4a */,
A5D15D291B51CEAC00929105 /* 6.m4a */,
A5D15D2A1B51CEAC00929105 /* 7.m4a */,
);
name = Multi_Zip_Test;
sourceTree = "<group>";
};
A5D15D331B51CEBD00929105 /* Fixtures */ = {
isa = PBXGroup;
children = (
A5D15D341B51CED100929105 /* hello.zip */,
A5D15D351B51CED100929105 /* IncorrectHeaders.zip */,
A5D15D361B51CED100929105 /* PermissionsTestApp.app */,
A5D15D371B51CED100929105 /* RelativeSymbolicLink.zip */,
A5D15D381B51CED100929105 /* SymbolicLink.zip */,
A5D15D391B51CED100929105 /* TestArchive.zip */,
A5D15D3A1B51CED100929105 /* TestPasswordArchive.zip */,
A5D15D3B1B51CED100929105 /* Unicode.zip */,
);
name = Fixtures;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXHeadersBuildPhase section */
@@ -200,8 +271,8 @@
buildActionMask = 2147483647;
files = (
A5D15CC31B51A38C00929105 /* ZipArchive.h in Headers */,
A5D15D451B51D64200929105 /* Main.m in Headers */,
A5D15D161B51A44C00929105 /* zip.h in Headers */,
A5D15D1A1B51A4D000929105 /* Main.h in Headers */,
A5D15D101B51A44C00929105 /* ioapi.h in Headers */,
A5D15D141B51A44C00929105 /* unzip.h in Headers */,
A5D15D0E1B51A44C00929105 /* crypt.h in Headers */,
@@ -317,6 +388,22 @@
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
A5D15D311B51CEAC00929105 /* 6.m4a in Resources */,
A5D15D3F1B51CED100929105 /* RelativeSymbolicLink.zip in Resources */,
A5D15D401B51CED100929105 /* SymbolicLink.zip in Resources */,
A5D15D431B51CED100929105 /* Unicode.zip in Resources */,
A5D15D3C1B51CED100929105 /* hello.zip in Resources */,
A5D15D301B51CEAC00929105 /* 5.m4a in Resources */,
A5D15D421B51CED100929105 /* TestPasswordArchive.zip in Resources */,
A5D15D2E1B51CEAC00929105 /* 3.m4a in Resources */,
A5D15D3D1B51CED100929105 /* IncorrectHeaders.zip in Resources */,
A5D15D2F1B51CEAC00929105 /* 4.m4a in Resources */,
A5D15D411B51CED100929105 /* TestArchive.zip in Resources */,
A5D15D321B51CEAC00929105 /* 7.m4a in Resources */,
A5D15D2D1B51CEAC00929105 /* 2.m4a in Resources */,
A5D15D2C1B51CEAC00929105 /* 1.m4a in Resources */,
A5D15D3E1B51CED100929105 /* PermissionsTestApp.app in Resources */,
A5D15D2B1B51CEAC00929105 /* 0.m4a in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
@@ -341,6 +428,7 @@
A5D15D131B51A44C00929105 /* unzip.c in Sources */,
A5D15D151B51A44C00929105 /* zip.c in Sources */,
A5D15D111B51A44C00929105 /* mztools.c in Sources */,
A5D15D201B51CDB900929105 /* CollectingDelegate.m in Sources */,
A5D15D0F1B51A44C00929105 /* ioapi.c in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -349,6 +437,8 @@
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
A5D15D441B51CF2900929105 /* Main.m in Sources */,
A5D15D461B51D68600929105 /* CollectingDelegate.m in Sources */,
A5D15CD01B51A38C00929105 /* ZipArchiveTests.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
@@ -0,0 +1,19 @@
//
// CollectingDelegate.h
// ZipArchive
//
// Originally Created by Chris on 2012-01-12.
// Copyright (c) 2015 ZipArchive. All rights reserved.
//
#import <Foundation/Foundation.h>
/**
* Test delegate by collecting its calls
*/
@interface CollectingDelegate : NSObject <ZipArchiveDelegate>
@property(nonatomic, retain) NSMutableArray *files;
@end
@@ -0,0 +1,27 @@
//
// CollectingDelegate.m
// ZipArchive
//
// Originally Created by Chris on 2012-01-12.
// Copyright (c) 2015 ZipArchive. All rights reserved.
//
#import "CollectingDelegate.h"
@implementation CollectingDelegate
@synthesize files = _files;
- (instancetype)init {
self = [super init];
if (self) {
self.files = [NSMutableArray array];
}
return self;
}
- (void)zipArchiveDidUnzipArchiveFile:(NSString *)zipFile entryPath:(NSString *)entryPath destinationPath:(NSString *)destinationPath {
[self.files addObject:entryPath];
}
@end
@@ -0,0 +1,48 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>BuildMachineOSBuild</key>
<string>13A476u</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>CFBundleExecutable</key>
<string>TestProject</string>
<key>CFBundleIdentifier</key>
<string>com.squaredtiki.TestProject</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleName</key>
<string>TestProject</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.0</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1</string>
<key>DTCompiler</key>
<string>com.apple.compilers.llvm.clang.1_0</string>
<key>DTPlatformBuild</key>
<string>5A11314m</string>
<key>DTPlatformVersion</key>
<string>GM</string>
<key>DTSDKBuild</key>
<string>13A476n</string>
<key>DTSDKName</key>
<string>macosx10.9</string>
<key>DTXcode</key>
<string>0500</string>
<key>DTXcodeBuild</key>
<string>5A11314m</string>
<key>LSMinimumSystemVersion</key>
<string>10.9</string>
<key>NSHumanReadableCopyright</key>
<string>Copyright © 2013 TestBench. All rights reserved.</string>
<key>NSMainNibFile</key>
<string>MainMenu</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
</dict>
</plist>
@@ -0,0 +1,29 @@
{\rtf0\ansi{\fonttbl\f0\fswiss Helvetica;}
{\colortbl;\red255\green255\blue255;}
\paperw9840\paperh8400
\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\ql\qnatural
\f0\b\fs24 \cf0 Engineering:
\b0 \
Some people\
\
\b Human Interface Design:
\b0 \
Some other people\
\
\b Testing:
\b0 \
Hopefully not nobody\
\
\b Documentation:
\b0 \
Whoever\
\
\b With special thanks to:
\b0 \
Mom\
}
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
+127 -16
View File
@@ -2,39 +2,150 @@
// ZipArchiveTests.m
// ZipArchiveTests
//
// Created by Douglas Bumby on 2015-07-11.
// Copyright (c) 2015 Cosmic Labs. All rights reserved.
// Created by Sam Soffes on 2010-03-11.
// Copyright (c) 2015 ZipArchive. All rights reserved.
//
#import <UIKit/UIKit.h>
#import "Main.h"
#import "CollectingDelegate.h"
#import <XCTest/XCTest.h>
#import <CommonCrypto/CommonDigest.h>
@interface ZipArchiveTests : XCTestCase
@interface CancelDelegate : NSObject <ZipArchiveDelegate>
@property (nonatomic, assign) int numberOfFilesUnzipped;
@property (nonatomic, assign) int numberOfFilesToUnzip;
@property (nonatomic, assign) BOOL didUnzipArchive;
@property (nonatomic, assign) int loaded;
@property (nonatomic, assign) int total;
@end
@implementation ZipArchiveTests
@implementation CancelDelegate
- (void)zipArchiveDidUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath fileInformation:(unz_file_info)fileInformation {
_numberOfFilesUnzipped = fileIndex + 1;
}
- (BOOL)zipArchiveShouldUnzipFileAtIndex:(NSInteger)fileIndex totalFiles:(NSInteger)totalFiles archivePath:(NSString *)archivePath fileInformation:(unz_file_info)fileInformation {
return _numberOfFilesUnzipped < _numberOfFilesToUnzip;
}
- (void)zipArchiveDidUnzipArchiveAtPath:(NSString *)path zipInformation:(unz_global_info)zipInformation unzippedPath:(NSString *)unzippedPath {
_didUnzipArchive = YES;
}
- (void)zipArchiveProgressEvent:(unsigned long long)loaded total:(unsigned long long)total {
_loaded = (int)loaded;
_total = (int)total;
}
@end
@interface ZipArchiveTests : XCTestCase <ZipArchiveDelegate>
@end
@implementation ZipArchiveTests {
NSMutableArray *progressEvents;
}
- (void)setUp {
[super setUp];
// Put setup code here. This method is called before the invocation of each test method in the class.
progressEvents = [NSMutableArray array];
}
- (void)tearDown {
// Put teardown code here. This method is called after the invocation of each test method in the class.
[super tearDown];
[[NSFileManager defaultManager] removeItemAtPath:[self _cachesPath:nil] error:nil];
}
- (void)testExample {
// This is an example of a functional test case.
XCTAssert(YES, @"Pass");
- (void)testZipping {
// Use extracted files from [-testUnzipping]
NSString *inputPath = [self _cachesPath:@"Regular"];
NSArray *inputPaths = @[[inputPath stringByAppendingPathComponent:@"Readme.markdown"],
[inputPath stringByAppendingPathComponent:@"LICENSE"]];
NSString *outputPath = [self _cachesPath:@"Zipped"];
NSString *archivePath = [outputPath stringByAppendingPathComponent:@"CreatedArchive.zip"];
[Main createZipFileAtPath:archivePath withFilesAtPaths:inputPaths];
// TODO: - Make sure the files are actually unzipped. They are, but the test could be better.
XCTAssertTrue([[NSFileManager defaultManager] fileExistsAtPath:archivePath], @"Archive Created.");
}
- (void)testPerformanceExample {
// This is an example of a performance test case.
[self measureBlock:^{
// Put the code you want to measure the time of here.
}];
- (void)testDirectoryZipping {
NSString *inputPath = [self _cachesPath:@"Unicode"];
NSString *outputPath = [self _cachesPath:@"FolderZipped"];
NSString *archivePath = [outputPath stringByAppendingPathComponent:@"ArchiveWithFolders.zip"];
[Main createZipFileAtPath:archivePath withContentsOfDirectory:inputPath];
XCTAssertTrue([[NSFileManager defaultManager] fileExistsAtPath:archivePath], @"Folder Archive created");
}
@end
- (void)testMultipleZipping {
NSArray *inputPaths = @[[[NSBundle mainBundle] pathForResource:@"0" ofType:@"m4a"],
[[NSBundle mainBundle] pathForResource:@"1" ofType:@"m4a"],
[[NSBundle mainBundle] pathForResource:@"2" ofType:@"m4a"],
[[NSBundle mainBundle] pathForResource:@"3" ofType:@"m4a"],
[[NSBundle mainBundle] pathForResource:@"4" ofType:@"m4a"],
[[NSBundle mainBundle] pathForResource:@"5" ofType:@"m4a"],
[[NSBundle mainBundle] pathForResource:@"6" ofType:@"m4a"],
[[NSBundle mainBundle] pathForResource:@"7" ofType:@"m4a"]];
NSString *outputPath = [self _cachesPath:@"Zipped"];
for (int test = 0; test < 1000; test++) {
NSString *archivePath = [outputPath stringByAppendingPathComponent:[NSString stringWithFormat:@"queue_test_%d.zip", test]];
[Main createZipFileAtPath:archivePath withFilesAtPaths:inputPaths];
long long threshold = 510000;
long long fileSize = [[[NSFileManager defaultManager] attributesOfItemAtPath:archivePath error:nil][NSFileSize] longLongValue];
XCTAssertTrue(fileSize > threshold, @"Zipping failed at %lld", fileSize);
}
}
- (void)testUnzipping {
NSString *zipPath = [[NSBundle bundleForClass:[self class]] pathForResource:@"TestArchive" ofType:@"zip"];
NSString *outputPath = [self _cachesPath:@"Regular"];
[Main unzipFileAtPath:zipPath toDestination:outputPath delegate:self];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *testPath = [outputPath stringByAppendingPathComponent:@"Readme.markdown"];
XCTAssertTrue([fileManager fileExistsAtPath:testPath], @"README Unzipped.");
testPath = [outputPath stringByAppendingPathComponent:@"LICENSE"];
XCTAssertTrue([fileManager fileExistsAtPath:testPath], @"LICENSE Unzipped.");
}
#pragma mark - Private
- (NSString *)_cachesPath:(NSString *)directory {
NSString *path = [[NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES) lastObject]
stringByAppendingPathComponent:@"com.SamSoffes.ZipArchive.tests"];
if (directory) {
path = [path stringByAppendingPathComponent:directory];
}
NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:path]) {
[fileManager createDirectoryAtPath:path withIntermediateDirectories:YES attributes:nil error:nil];
}
return path;
}
- (void)testSmallFileUnzipping {
NSString *zipPath = [[NSBundle mainBundle] pathForResource:@"hello" ofType:@"zip"];
NSString *outputPath = [self _cachesPath:@"Regular"];
[Main unzipFileAtPath:zipPath toDestination:outputPath delegate:self];
NSFileManager *fileManager = [NSFileManager defaultManager];
NSString *testPath = [outputPath stringByAppendingPathComponent:@"REadme.markdown"];
XCTAssertTrue([fileManager fileExistsAtPath:testPath], @"README Unzipped");
testPath = [outputPath stringByAppendingPathComponent:@"LICENSE"];
XCTAssertTrue([fileManager fileExistsAtPath:testPath], @"LICENSE Unzipped");
}
@end