diff --git a/new/ZipArchive/ZipArchive.xcodeproj/project.pbxproj b/new/ZipArchive/ZipArchive.xcodeproj/project.pbxproj index 7bc3123..af999ec 100644 --- a/new/ZipArchive/ZipArchive.xcodeproj/project.pbxproj +++ b/new/ZipArchive/ZipArchive.xcodeproj/project.pbxproj @@ -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 = ""; }; A5D15D181B51A4D000929105 /* Main.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Main.h; sourceTree = ""; }; A5D15D191B51A4D000929105 /* Main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Main.m; sourceTree = ""; }; + A5D15D1C1B51CD4C00929105 /* CollectingDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CollectingDelegate.h; sourceTree = ""; }; + A5D15D1E1B51CD5600929105 /* CollectingDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CollectingDelegate.m; sourceTree = ""; }; + A5D15D231B51CEAC00929105 /* 0.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; name = 0.m4a; path = Multi_Zip_Test/0.m4a; sourceTree = ""; }; + A5D15D241B51CEAC00929105 /* 1.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; name = 1.m4a; path = Multi_Zip_Test/1.m4a; sourceTree = ""; }; + A5D15D251B51CEAC00929105 /* 2.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; name = 2.m4a; path = Multi_Zip_Test/2.m4a; sourceTree = ""; }; + A5D15D261B51CEAC00929105 /* 3.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; name = 3.m4a; path = Multi_Zip_Test/3.m4a; sourceTree = ""; }; + A5D15D271B51CEAC00929105 /* 4.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; name = 4.m4a; path = Multi_Zip_Test/4.m4a; sourceTree = ""; }; + A5D15D281B51CEAC00929105 /* 5.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; name = 5.m4a; path = Multi_Zip_Test/5.m4a; sourceTree = ""; }; + A5D15D291B51CEAC00929105 /* 6.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; name = 6.m4a; path = Multi_Zip_Test/6.m4a; sourceTree = ""; }; + A5D15D2A1B51CEAC00929105 /* 7.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; name = 7.m4a; path = Multi_Zip_Test/7.m4a; sourceTree = ""; }; + A5D15D341B51CED100929105 /* hello.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; name = hello.zip; path = Fixtures/hello.zip; sourceTree = ""; }; + A5D15D351B51CED100929105 /* IncorrectHeaders.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; name = IncorrectHeaders.zip; path = Fixtures/IncorrectHeaders.zip; sourceTree = ""; }; + A5D15D361B51CED100929105 /* PermissionsTestApp.app */ = {isa = PBXFileReference; lastKnownFileType = wrapper.application; name = PermissionsTestApp.app; path = Fixtures/PermissionsTestApp.app; sourceTree = ""; }; + A5D15D371B51CED100929105 /* RelativeSymbolicLink.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; name = RelativeSymbolicLink.zip; path = Fixtures/RelativeSymbolicLink.zip; sourceTree = ""; }; + A5D15D381B51CED100929105 /* SymbolicLink.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; name = SymbolicLink.zip; path = Fixtures/SymbolicLink.zip; sourceTree = ""; }; + A5D15D391B51CED100929105 /* TestArchive.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; name = TestArchive.zip; path = Fixtures/TestArchive.zip; sourceTree = ""; }; + A5D15D3A1B51CED100929105 /* TestPasswordArchive.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; name = TestPasswordArchive.zip; path = Fixtures/TestPasswordArchive.zip; sourceTree = ""; }; + A5D15D3B1B51CED100929105 /* Unicode.zip */ = {isa = PBXFileReference; lastKnownFileType = archive.zip; name = Unicode.zip; path = Fixtures/Unicode.zip; sourceTree = ""; }; /* 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 = ""; }; + 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 = ""; + }; + 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 = ""; + }; /* 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; diff --git a/new/ZipArchive/ZipArchiveTests/CollectingDelegate.h b/new/ZipArchive/ZipArchiveTests/CollectingDelegate.h new file mode 100644 index 0000000..3a3c879 --- /dev/null +++ b/new/ZipArchive/ZipArchiveTests/CollectingDelegate.h @@ -0,0 +1,19 @@ +// +// CollectingDelegate.h +// ZipArchive +// +// Originally Created by Chris on 2012-01-12. +// Copyright (c) 2015 ZipArchive. All rights reserved. +// + +#import + +/** + * Test delegate by collecting its calls + */ + +@interface CollectingDelegate : NSObject + +@property(nonatomic, retain) NSMutableArray *files; + +@end \ No newline at end of file diff --git a/new/ZipArchive/ZipArchiveTests/CollectingDelegate.m b/new/ZipArchive/ZipArchiveTests/CollectingDelegate.m new file mode 100644 index 0000000..99c8979 --- /dev/null +++ b/new/ZipArchive/ZipArchiveTests/CollectingDelegate.m @@ -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 \ No newline at end of file diff --git a/new/ZipArchive/ZipArchiveTests/Fixtures/IncorrectHeaders.zip b/new/ZipArchive/ZipArchiveTests/Fixtures/IncorrectHeaders.zip new file mode 100644 index 0000000..b70f748 Binary files /dev/null and b/new/ZipArchive/ZipArchiveTests/Fixtures/IncorrectHeaders.zip differ diff --git a/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/Info.plist b/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/Info.plist new file mode 100644 index 0000000..0c58dc0 --- /dev/null +++ b/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/Info.plist @@ -0,0 +1,48 @@ + + + + + BuildMachineOSBuild + 13A476u + CFBundleDevelopmentRegion + en + CFBundleExecutable + TestProject + CFBundleIdentifier + com.squaredtiki.TestProject + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + TestProject + CFBundlePackageType + APPL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + DTCompiler + com.apple.compilers.llvm.clang.1_0 + DTPlatformBuild + 5A11314m + DTPlatformVersion + GM + DTSDKBuild + 13A476n + DTSDKName + macosx10.9 + DTXcode + 0500 + DTXcodeBuild + 5A11314m + LSMinimumSystemVersion + 10.9 + NSHumanReadableCopyright + Copyright © 2013 TestBench. All rights reserved. + NSMainNibFile + MainMenu + NSPrincipalClass + NSApplication + + diff --git a/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/MacOS/TestProject b/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/MacOS/TestProject new file mode 100755 index 0000000..595fc1c Binary files /dev/null and b/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/MacOS/TestProject differ diff --git a/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/PkgInfo b/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/PkgInfo new file mode 100644 index 0000000..bd04210 --- /dev/null +++ b/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/PkgInfo @@ -0,0 +1 @@ +APPL???? \ No newline at end of file diff --git a/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/Resources/Assets.car b/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/Resources/Assets.car new file mode 100644 index 0000000..65bd6bf Binary files /dev/null and b/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/Resources/Assets.car differ diff --git a/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/Resources/Base.lproj/MainMenu.nib b/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/Resources/Base.lproj/MainMenu.nib new file mode 100644 index 0000000..d46778e Binary files /dev/null and b/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/Resources/Base.lproj/MainMenu.nib differ diff --git a/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/Resources/en.lproj/Credits.rtf b/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/Resources/en.lproj/Credits.rtf new file mode 100644 index 0000000..46576ef --- /dev/null +++ b/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/Resources/en.lproj/Credits.rtf @@ -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\ +} diff --git a/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/Resources/en.lproj/InfoPlist.strings b/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/Resources/en.lproj/InfoPlist.strings new file mode 100644 index 0000000..5e45963 Binary files /dev/null and b/new/ZipArchive/ZipArchiveTests/Fixtures/PermissionsTestApp.app/Contents/Resources/en.lproj/InfoPlist.strings differ diff --git a/new/ZipArchive/ZipArchiveTests/Fixtures/RelativeSymbolicLink.zip b/new/ZipArchive/ZipArchiveTests/Fixtures/RelativeSymbolicLink.zip new file mode 100644 index 0000000..a6b0b12 Binary files /dev/null and b/new/ZipArchive/ZipArchiveTests/Fixtures/RelativeSymbolicLink.zip differ diff --git a/new/ZipArchive/ZipArchiveTests/Fixtures/SymbolicLink.zip b/new/ZipArchive/ZipArchiveTests/Fixtures/SymbolicLink.zip new file mode 100644 index 0000000..d2296a1 Binary files /dev/null and b/new/ZipArchive/ZipArchiveTests/Fixtures/SymbolicLink.zip differ diff --git a/new/ZipArchive/ZipArchiveTests/Fixtures/TestArchive.zip b/new/ZipArchive/ZipArchiveTests/Fixtures/TestArchive.zip new file mode 100644 index 0000000..55ce84f Binary files /dev/null and b/new/ZipArchive/ZipArchiveTests/Fixtures/TestArchive.zip differ diff --git a/new/ZipArchive/ZipArchiveTests/Fixtures/TestPasswordArchive.zip b/new/ZipArchive/ZipArchiveTests/Fixtures/TestPasswordArchive.zip new file mode 100644 index 0000000..055cc4c Binary files /dev/null and b/new/ZipArchive/ZipArchiveTests/Fixtures/TestPasswordArchive.zip differ diff --git a/new/ZipArchive/ZipArchiveTests/Fixtures/Unicode.zip b/new/ZipArchive/ZipArchiveTests/Fixtures/Unicode.zip new file mode 100644 index 0000000..6a15b8e Binary files /dev/null and b/new/ZipArchive/ZipArchiveTests/Fixtures/Unicode.zip differ diff --git a/new/ZipArchive/ZipArchiveTests/Fixtures/hello.zip b/new/ZipArchive/ZipArchiveTests/Fixtures/hello.zip new file mode 100644 index 0000000..91b07fd Binary files /dev/null and b/new/ZipArchive/ZipArchiveTests/Fixtures/hello.zip differ diff --git a/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/0.m4a b/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/0.m4a new file mode 100755 index 0000000..01e4533 Binary files /dev/null and b/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/0.m4a differ diff --git a/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/1.m4a b/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/1.m4a new file mode 100755 index 0000000..1b594cc Binary files /dev/null and b/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/1.m4a differ diff --git a/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/2.m4a b/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/2.m4a new file mode 100755 index 0000000..da9c3ca Binary files /dev/null and b/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/2.m4a differ diff --git a/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/3.m4a b/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/3.m4a new file mode 100755 index 0000000..078bb67 Binary files /dev/null and b/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/3.m4a differ diff --git a/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/4.m4a b/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/4.m4a new file mode 100755 index 0000000..a5dbf61 Binary files /dev/null and b/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/4.m4a differ diff --git a/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/5.m4a b/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/5.m4a new file mode 100755 index 0000000..8b76e1a Binary files /dev/null and b/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/5.m4a differ diff --git a/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/6.m4a b/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/6.m4a new file mode 100755 index 0000000..ac956c8 Binary files /dev/null and b/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/6.m4a differ diff --git a/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/7.m4a b/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/7.m4a new file mode 100755 index 0000000..2f9d1a9 Binary files /dev/null and b/new/ZipArchive/ZipArchiveTests/Multi_Zip_Test/7.m4a differ diff --git a/new/ZipArchive/ZipArchiveTests/ZipArchiveTests.m b/new/ZipArchive/ZipArchiveTests/ZipArchiveTests.m index ab22a28..024f5e9 100644 --- a/new/ZipArchive/ZipArchiveTests/ZipArchiveTests.m +++ b/new/ZipArchive/ZipArchiveTests/ZipArchiveTests.m @@ -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 +#import "Main.h" +#import "CollectingDelegate.h" #import +#import -@interface ZipArchiveTests : XCTestCase +@interface CancelDelegate : NSObject + +@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 +@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 \ No newline at end of file