ZipTests.swift 6.95 KB
Newer Older
Roy Marmelstein's avatar
Roy Marmelstein committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
//
//  ZipTests.swift
//  ZipTests
//
//  Created by Roy Marmelstein on 13/12/2015.
//  Copyright © 2015 Roy Marmelstein. All rights reserved.
//

import XCTest
@testable import Zip

class ZipTests: XCTestCase {
    
    override func setUp() {
        super.setUp()
    }
    
    override func tearDown() {
        super.tearDown()
    }
    
22 23
    func testQuickUnzip() {
        do {
Roy Marmelstein's avatar
Roy Marmelstein committed
24
            let filePath = NSBundle(forClass: ZipTests.self).URLForResource("bb8", withExtension: "zip")!
25
            let destinationURL = try Zip.quickUnzipFile(filePath)
26 27 28 29 30
            let fileManager = NSFileManager.defaultManager()
            XCTAssertTrue(fileManager.fileExistsAtPath(destinationURL.path!))
        }
        catch {
            XCTFail()
Roy Marmelstein's avatar
Roy Marmelstein committed
31
        }
Roy Marmelstein's avatar
Roy Marmelstein committed
32 33 34 35 36
    }
    
    func testQuickUnzipNonExistingPath() {
        do {
            let filePathURL = NSBundle(forClass: ZipTests.self).resourcePath
Roy Marmelstein's avatar
Roy Marmelstein committed
37
            let filePath = NSURL(string:"\(filePathURL!)/bb9.zip")
38
            let destinationURL = try Zip.quickUnzipFile(filePath!)
Roy Marmelstein's avatar
Roy Marmelstein committed
39 40 41 42 43 44 45
            let fileManager = NSFileManager.defaultManager()
            XCTAssertFalse(fileManager.fileExistsAtPath(destinationURL.path!))
        }
        catch {
            XCTAssert(true)
        }
    }
46

Roy Marmelstein's avatar
Roy Marmelstein committed
47 48
    func testQuickUnzipNonZipPath() {
        do {
Roy Marmelstein's avatar
Roy Marmelstein committed
49
            let filePath = NSBundle(forClass: ZipTests.self).URLForResource("3crBXeO", withExtension: "gif")!
50
            let destinationURL = try Zip.quickUnzipFile(filePath)
Roy Marmelstein's avatar
Roy Marmelstein committed
51 52 53 54 55 56
            let fileManager = NSFileManager.defaultManager()
            XCTAssertFalse(fileManager.fileExistsAtPath(destinationURL.path!))
        }
        catch {
            XCTAssert(true)
        }
Roy Marmelstein's avatar
Roy Marmelstein committed
57 58
    }
    
Roy Marmelstein's avatar
Roy Marmelstein committed
59 60
    func testQuickUnzipProgress() {
        do {
Roy Marmelstein's avatar
Roy Marmelstein committed
61
            let filePath = NSBundle(forClass: ZipTests.self).URLForResource("bb8", withExtension: "zip")!
62
            try Zip.quickUnzipFile(filePath, progress: { (progress) -> () in
Roy Marmelstein's avatar
Roy Marmelstein committed
63 64 65 66 67 68 69
                XCTAssert(true)
            })
        }
        catch {
            XCTFail()
        }
    }
70
    
Roy Marmelstein's avatar
Roy Marmelstein committed
71
    func testQuickUnzipOnlineURL() {
72
        do {
Roy Marmelstein's avatar
Roy Marmelstein committed
73
            let filePath = NSURL(string: "http://www.google.com/google.zip")!
74
            let destinationURL = try Zip.quickUnzipFile(filePath)
75 76 77 78 79 80 81
            let fileManager = NSFileManager.defaultManager()
            XCTAssertFalse(fileManager.fileExistsAtPath(destinationURL.path!))
        }
        catch {
            XCTAssert(true)
        }
    }
Roy Marmelstein's avatar
Roy Marmelstein committed
82 83 84 85 86
    
    func testUnzip() {
        do {
            let filePath = NSBundle(forClass: ZipTests.self).URLForResource("bb8", withExtension: "zip")!
            let documentsFolder = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as NSURL
87
            try Zip.unzipFile(filePath, destination: documentsFolder, overwrite: true, password: "password", progress: { (progress) -> () in
Roy Marmelstein's avatar
Roy Marmelstein committed
88 89 90 91 92 93 94 95 96
                print(progress)
            })
            let fileManager = NSFileManager.defaultManager()
            XCTAssertTrue(fileManager.fileExistsAtPath(documentsFolder.path!))
        }
        catch {
            XCTFail()
        }
    }
97
    
98 99 100 101
    func testQuickZip() {
        do {
            let imageURL1 = NSBundle(forClass: ZipTests.self).URLForResource("3crBXeO", withExtension: "gif")!
            let imageURL2 = NSBundle(forClass: ZipTests.self).URLForResource("kYkLkPf", withExtension: "gif")!
102
            let destinationURL = try Zip.quickZipFiles([imageURL1, imageURL2], fileName: "archive")
103 104 105 106 107 108 109
            let fileManager = NSFileManager.defaultManager()
            XCTAssertTrue(fileManager.fileExistsAtPath(destinationURL.path!))
        }
        catch {
            XCTFail()
        }
    }
Roy Marmelstein's avatar
Roy Marmelstein committed
110
    
Roy Marmelstein's avatar
Roy Marmelstein committed
111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133
    func testQuickZipFolder() {
        do {
            let fileManager = NSFileManager.defaultManager()
            let imageURL1 = NSBundle(forClass: ZipTests.self).URLForResource("3crBXeO", withExtension: "gif")!
            let imageURL2 = NSBundle(forClass: ZipTests.self).URLForResource("kYkLkPf", withExtension: "gif")!
            let folderURL = NSBundle(forClass: ZipTests.self).bundleURL.URLByAppendingPathComponent("Directory")
            let targetImageURL1 = folderURL.URLByAppendingPathComponent("3crBXeO.gif")
            let targetImageURL2 = folderURL.URLByAppendingPathComponent("kYkLkPf.gif")
            if fileManager.fileExistsAtPath(folderURL.path!) {
                try fileManager.removeItemAtURL(folderURL)
            }
            try fileManager.createDirectoryAtURL(folderURL, withIntermediateDirectories: false, attributes: nil)
            try fileManager.copyItemAtURL(imageURL1, toURL: targetImageURL1)
            try fileManager.copyItemAtURL(imageURL2, toURL: targetImageURL2)
            let destinationURL = try Zip.quickZipFiles([folderURL], fileName: "directory")
            XCTAssertTrue(fileManager.fileExistsAtPath(destinationURL.path!))
        }
        catch {
            XCTFail()
        }
    }

    
Roy Marmelstein's avatar
Roy Marmelstein committed
134 135 136 137 138 139
    func testZip() {
        do {
            let imageURL1 = NSBundle(forClass: ZipTests.self).URLForResource("3crBXeO", withExtension: "gif")!
            let imageURL2 = NSBundle(forClass: ZipTests.self).URLForResource("kYkLkPf", withExtension: "gif")!
            let documentsFolder = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0] as NSURL
            let zipFilePath = documentsFolder.URLByAppendingPathComponent("archive.zip")
140
            try Zip.zipFiles([imageURL1, imageURL2], zipFilePath: zipFilePath, password: nil, progress: { (progress) -> () in
Roy Marmelstein's avatar
Roy Marmelstein committed
141 142 143 144 145 146 147 148 149
                print(progress)
            })
            let fileManager = NSFileManager.defaultManager()
            XCTAssertTrue(fileManager.fileExistsAtPath(zipFilePath.path!))
        }
        catch {
            XCTFail()
        }
    }
150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166
    
    func testQuickUnzipSubDir() {
        do {
            let bookURL = NSBundle(forClass: ZipTests.self).URLForResource("bb8", withExtension: "zip")!
            let unzipDestination = try Zip.quickUnzipFile(bookURL)
            let fileManager = NSFileManager.defaultManager()
            
            let subDir = unzipDestination.URLByAppendingPathComponent("subDir")
            let imageURL = subDir.URLByAppendingPathComponent("r2W9yu9").URLByAppendingPathExtension("gif")
            
            XCTAssertTrue(fileManager.fileExistsAtPath(unzipDestination.path!))
            XCTAssertTrue(fileManager.fileExistsAtPath(subDir.path!))
            XCTAssertTrue(fileManager.fileExistsAtPath(imageURL.path!))
        } catch {
            XCTFail()
        }
    }
Roy Marmelstein's avatar
Roy Marmelstein committed
167

József Vesza's avatar
József Vesza committed
168 169 170 171 172 173 174 175 176 177 178
    func testFileExtensionIsInvalidForValidUrl() {
        let fileUrl = NSBundle(forClass: ZipTests.self).URLForResource("bb8", withExtension: "cbz")
        let result = Zip.fileExtensionIsInvalid(fileUrl?.pathExtension)
        XCTAssertTrue(result)
    }
    
    func testFileExtensionIsInvalidForInvalidUrl() {
        let fileUrl = NSBundle(forClass: ZipTests.self).URLForResource("bb8", withExtension: "xyz")
        let result = Zip.fileExtensionIsInvalid(fileUrl?.pathExtension)
        XCTAssertFalse(result)
    }
Roy Marmelstein's avatar
Roy Marmelstein committed
179
}