Commit c1453b6d authored by Roy Marmelstein's avatar Roy Marmelstein

Merge pull request #13 from timbjarengren/add-valid-extension

Added functions to handle custom file extensions.
parents 5cd06355 14a80abb
...@@ -31,6 +31,11 @@ public enum ZipError: ErrorType { ...@@ -31,6 +31,11 @@ public enum ZipError: ErrorType {
/// Zip class /// Zip class
public class Zip { public class Zip {
/**
Set of vaild file extensions
*/
internal static var customFileExtensions: Set<String> = []
// MARK: Lifecycle // MARK: Lifecycle
/** /**
...@@ -308,13 +313,45 @@ public class Zip { ...@@ -308,13 +313,45 @@ public class Zip {
- parameter fileExtension: A file extension. - parameter fileExtension: A file extension.
- returns: false if the extension is "zip" or "cbz", otherwise true. - returns: false if the extension is a valid file extension, otherwise true.
*/ */
internal class func fileExtensionIsInvalid(fileExtension: String?) -> Bool { internal class func fileExtensionIsInvalid(fileExtension: String?) -> Bool {
guard let fileExtension = fileExtension else { return true } guard let fileExtension = fileExtension else { return true }
return !["zip", "cbz"].contains(fileExtension) return !isValidFileExtension(fileExtension)
} }
} /**
\ No newline at end of file Add a file extension to the set of custom file extensions
- parameter fileExtension: A file extension.
*/
public class func addCustomFileExtension(fileExtension: String) {
customFileExtensions.insert(fileExtension)
}
/**
Remove a file extension from the set of custom file extensions
- parameter fileExtension: A file extension.
*/
public class func removeCustomFileExtension(fileExtension: String) {
customFileExtensions.remove(fileExtension)
}
/**
Check if a specific file extension is valid
- parameter fileExtension: A file extension.
- returns: true if the extension valid, otherwise false.
*/
public class func isValidFileExtension(fileExtension: String) -> Bool {
let validFileExtensions: Set<String> = customFileExtensions.union(["zip", "cbz"])
return validFileExtensions.contains(fileExtension)
}
}
...@@ -235,7 +235,7 @@ class ZipTests: XCTestCase { ...@@ -235,7 +235,7 @@ class ZipTests: XCTestCase {
} }
} }
func testFileExtensionIsInvalidForValidUrl() { func testFileExtensionIsNotInvalidForValidUrl() {
let fileUrl = NSURL(string: "file.cbz") let fileUrl = NSURL(string: "file.cbz")
let result = Zip.fileExtensionIsInvalid(fileUrl?.pathExtension) let result = Zip.fileExtensionIsInvalid(fileUrl?.pathExtension)
XCTAssertFalse(result) XCTAssertFalse(result)
...@@ -246,4 +246,33 @@ class ZipTests: XCTestCase { ...@@ -246,4 +246,33 @@ class ZipTests: XCTestCase {
let result = Zip.fileExtensionIsInvalid(fileUrl?.pathExtension) let result = Zip.fileExtensionIsInvalid(fileUrl?.pathExtension)
XCTAssertTrue(result) XCTAssertTrue(result)
} }
func testAddedCustomFileExtensionIsValid() {
let fileExtension = "cstm"
Zip.addCustomFileExtension(fileExtension)
let result = Zip.isValidFileExtension(fileExtension)
XCTAssertTrue(result)
Zip.removeCustomFileExtension(fileExtension)
}
func testRemovedCustomFileExtensionIsInvalid() {
let fileExtension = "cstm"
Zip.addCustomFileExtension(fileExtension)
Zip.removeCustomFileExtension(fileExtension)
let result = Zip.isValidFileExtension(fileExtension)
XCTAssertFalse(result)
}
func testDefaultFileExtensionsIsValid() {
XCTAssertTrue(Zip.isValidFileExtension("zip"))
XCTAssertTrue(Zip.isValidFileExtension("cbz"))
}
func testDefaultFileExtensionsIsNotRemoved() {
Zip.removeCustomFileExtension("zip")
Zip.removeCustomFileExtension("cbz")
XCTAssertTrue(Zip.isValidFileExtension("zip"))
XCTAssertTrue(Zip.isValidFileExtension("cbz"))
}
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment