فهرست منبع

Add test for multiple cache.

onevcat 10 سال پیش
والد
کامیت
a05f287631
2فایلهای تغییر یافته به همراه45 افزوده شده و 2 حذف شده
  1. 8 2
      KingfisherTests/KingfisherTestHelper.swift
  2. 37 0
      KingfisherTests/UIImageViewExtensionTests.swift

+ 8 - 2
KingfisherTests/KingfisherTestHelper.swift

@@ -42,6 +42,12 @@ func == (left: UIImage, right: UIImage) -> Bool {
 }
 
 func cleanDefaultCache() {
-    KingfisherManager.sharedManager.cache.clearDiskCache()
-    KingfisherManager.sharedManager.cache.clearMemoryCache()
+    clearCaches([KingfisherManager.sharedManager.cache])
+}
+
+func clearCaches(caches: [ImageCache]) {
+    for c in caches {
+        c.clearDiskCache()
+        c.clearMemoryCache()
+    }
 }

+ 37 - 0
KingfisherTests/UIImageViewExtensionTests.swift

@@ -150,4 +150,41 @@ class UIImageViewExtensionTests: XCTestCase {
         waitForExpectationsWithTimeout(0.1, handler: nil)
     }
     
+    func testImageDownalodMultipleCaches() {
+        
+        let cache1 = ImageCache(name: "cache1")
+        let cache2 = ImageCache(name: "cache2")
+        
+        let expectation = expectationWithDescription("wait for downloading image")
+        
+        let URLString = testKeys[0]
+        stubRequest("GET", URLString).andReturn(200).withBody(testImageData)
+        let URL = NSURL(string: URLString)!
+        
+        imageView.kf_setImageWithURL(URL, placeholderImage: nil, optionsInfo: [.TargetCache: cache1], progressBlock: { (receivedSize, totalSize) -> () in
+            
+        }) { (image, error, imageURL) -> () in
+            
+            XCTAssertTrue(cache1.isImageCachedForKey(URLString).cached, "This image should be cached in cache1.")
+            XCTAssertFalse(cache2.isImageCachedForKey(URLString).cached, "This image should not be cached in cache2.")
+            XCTAssertFalse(KingfisherManager.sharedManager.cache.isImageCachedForKey(URLString).cached, "This image should not be cached in default cache.")
+            
+            self.imageView.kf_setImageWithURL(URL, placeholderImage: nil, optionsInfo: [.TargetCache: cache2], progressBlock: { (receivedSize, totalSize) -> () in
+                
+            }, completionHandler: { (image, error, imageURL) -> () in
+                XCTAssertTrue(cache1.isImageCachedForKey(URLString).cached, "This image should be cached in cache1.")
+                XCTAssertTrue(cache2.isImageCachedForKey(URLString).cached, "This image should be cached in cache2.")
+                XCTAssertFalse(KingfisherManager.sharedManager.cache.isImageCachedForKey(URLString).cached, "This image should not be cached in default cache.")
+                
+                clearCaches([cache1, cache2])
+                
+                expectation.fulfill()
+            })
+            
+        }
+        
+        waitForExpectationsWithTimeout(0.1, handler: { (error) -> Void in
+            clearCaches([cache1, cache2])
+        })
+    }
 }