Просмотр исходного кода

Add tests for options info parsing

onevcat 10 лет назад
Родитель
Сommit
17e76f4c7b

+ 4 - 0
Kingfisher.xcodeproj/project.pbxproj

@@ -40,6 +40,7 @@
 		D13F49FE1BEDBB4A00CE335D /* CollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4BAFBA3C1AD671E400FB0300 /* CollectionViewCell.swift */; };
 		D13F49FF1BEDBB4A00CE335D /* ViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1ED2D121AD2CFA600CFC3EB /* ViewController.swift */; };
 		D151E72B1AD3C48D004FD4AE /* UIImage+Extension.swift in Sources */ = {isa = PBXBuildFile; fileRef = D151E72A1AD3C48D004FD4AE /* UIImage+Extension.swift */; };
+		D17363CB1C3AABF80042F42E /* KingfisherOptionsInfoTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D17363CA1C3AABF80042F42E /* KingfisherOptionsInfoTests.swift */; };
 		D1A7B6CA1BDBC9C60083A684 /* ImageExtensionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1A7B6C91BDBC9C60083A684 /* ImageExtensionTests.swift */; };
 		D1A7B6CC1BDBEC090083A684 /* dancing-banana.gif in Resources */ = {isa = PBXBuildFile; fileRef = D1A7B6CB1BDBEC090083A684 /* dancing-banana.gif */; };
 		D1B1B9901BC7EB7100DE20D8 /* ThreadHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1B1B98F1BC7EB7100DE20D8 /* ThreadHelper.swift */; };
@@ -151,6 +152,7 @@
 		D13F49D81BEDA67C00CE335D /* Kingfisher-tvOS.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Kingfisher-tvOS.h"; sourceTree = "<group>"; };
 		D13F49DA1BEDA67C00CE335D /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
 		D151E72A1AD3C48D004FD4AE /* UIImage+Extension.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UIImage+Extension.swift"; sourceTree = "<group>"; };
+		D17363CA1C3AABF80042F42E /* KingfisherOptionsInfoTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = KingfisherOptionsInfoTests.swift; sourceTree = "<group>"; };
 		D1A7B6C91BDBC9C60083A684 /* ImageExtensionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ImageExtensionTests.swift; sourceTree = "<group>"; };
 		D1A7B6CB1BDBEC090083A684 /* dancing-banana.gif */ = {isa = PBXFileReference; lastKnownFileType = image.gif; path = "dancing-banana.gif"; sourceTree = "<group>"; };
 		D1B1B98F1BC7EB7100DE20D8 /* ThreadHelper.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ThreadHelper.swift; sourceTree = "<group>"; };
@@ -335,6 +337,7 @@
 				4BBA04C31AD7986100A5CF82 /* KingfisherTestHelper.swift */,
 				4B5083371BD88C3E00AEA807 /* KingfisherManagerTests.swift */,
 				D1A7B6C91BDBC9C60083A684 /* ImageExtensionTests.swift */,
+				D17363CA1C3AABF80042F42E /* KingfisherOptionsInfoTests.swift */,
 			);
 			path = KingfisherTests;
 			sourceTree = "<group>";
@@ -678,6 +681,7 @@
 			isa = PBXSourcesBuildPhase;
 			buildActionMask = 2147483647;
 			files = (
+				D17363CB1C3AABF80042F42E /* KingfisherOptionsInfoTests.swift in Sources */,
 				4B82DDFC1AD7701900074995 /* ImageCacheTests.swift in Sources */,
 				4BBA04C21AD795C500A5CF82 /* ImageDownloaderTests.swift in Sources */,
 				4B6D4F651AE0A46D0084D15B /* UIImageViewExtensionTests.swift in Sources */,

+ 78 - 0
KingfisherTests/KingfisherOptionsInfoTests.swift

@@ -0,0 +1,78 @@
+//
+//  KingfisherOptionsInfoTests.swift
+//  Kingfisher
+//
+//  Created by Wei Wang on 16/1/4.
+//  Copyright © 2016年 Wei Wang. All rights reserved.
+//
+
+import XCTest
+@testable import Kingfisher
+
+class KingfisherOptionsInfoTests: XCTestCase {
+    
+    override func setUp() {
+        super.setUp()
+        // Put setup code here. This method is called before the invocation of each test method in the class.
+    }
+    
+    override func tearDown() {
+        // Put teardown code here. This method is called after the invocation of each test method in the class.
+        super.tearDown()
+    }
+    
+    func testEmptyOptionsShouldParseCorrectly() {
+        let options = KingfisherEmptyOptionsInfo
+        XCTAssertNil(options.targetCache)
+        XCTAssertNil(options.downloader)
+
+        switch options.transition {
+        case .None: break
+        default: XCTFail("The transition for empty option should be .None. But \(options.transition)")
+        }
+        
+        XCTAssertEqual(options.downloadPriority, NSURLSessionTaskPriorityDefault)
+        XCTAssertFalse(options.forceRefresh)
+        XCTAssertFalse(options.cacheMemoryOnly)
+        XCTAssertFalse(options.backgroundDecode)
+        XCTAssertEqual(dispatch_queue_get_label(options.callbackDispatchQueue), dispatch_queue_get_label(dispatch_get_main_queue()))
+        XCTAssertEqual(options.scaleFactor, 1.0)
+    }
+    
+    func testSetOptionsShouldParseCorrectly() {
+        let cache = ImageCache(name: "com.onevcat.Kingfisher.KingfisherOptionsInfoTests")
+        let downloader = ImageDownloader(name: "com.onevcat.Kingfisher.KingfisherOptionsInfoTests")
+        let transition = ImageTransition.Fade(0.5)
+        let queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
+        
+        let options: KingfisherOptionsInfo = [
+            .TargetCache(cache),
+            .Downloader(downloader),
+            .Transition(transition),
+            .DownloadPriority(0.8),
+            .ForceRefresh,
+            .CacheMemoryOnly,
+            .BackgroundDecode,
+            .CallbackDispatchQueue(queue),
+            .ScaleFactor(2.0)
+        ]
+        
+        XCTAssertTrue(options.targetCache === cache)
+        XCTAssertTrue(options.downloader === downloader)
+
+        switch options.transition {
+        case .Fade(let duration): XCTAssertEqual(duration, 0.5)
+        default: XCTFail()
+        }
+        
+        XCTAssertEqual(options.downloadPriority, 0.8)
+        XCTAssertTrue(options.forceRefresh)
+        XCTAssertTrue(options.cacheMemoryOnly)
+        XCTAssertTrue(options.backgroundDecode)
+        
+        XCTAssertEqual(dispatch_queue_get_label(options.callbackDispatchQueue), dispatch_queue_get_label(queue))
+        XCTAssertEqual(options.scaleFactor, 2.0)
+        
+    }
+    
+}