Sfoglia il codice sorgente

Merge pull request #1711 from onevcat/fix/downsampling-cache-scale

Add some tests for downsampling loading
Wei Wang 4 anni fa
parent
commit
0b522296b3

+ 18 - 5
Tests/KingfisherTests/ImageExtensionTests.swift

@@ -298,6 +298,8 @@ class ImageExtensionTests: XCTestCase {
     func testDownsampling() {
         let size = CGSize(width: 15, height: 15)
         XCTAssertEqual(testImage.size, CGSize(width: 64, height: 64))
+        XCTAssertEqual(testImage.kf.scale, 1.0)
+        
         let image = KingfisherWrapper<KFCrossPlatformImage>.downsampledImage(data: testImageData, to: size, scale: 1)
         XCTAssertEqual(image?.size, size)
         XCTAssertEqual(image?.kf.scale, 1.0)
@@ -306,13 +308,24 @@ class ImageExtensionTests: XCTestCase {
     func testDownsamplingWithScale() {
         let size = CGSize(width: 15, height: 15)
         XCTAssertEqual(testImage.size, CGSize(width: 64, height: 64))
-        let image = KingfisherWrapper<KFCrossPlatformImage>.downsampledImage(data: testImageData, to: size, scale: 2)
+        XCTAssertEqual(testImage.kf.scale, 1.0)
+        
+        let image2x = KingfisherWrapper<KFCrossPlatformImage>.downsampledImage(data: testImageData, to: size, scale: 2)
         #if os(macOS)
-        XCTAssertEqual(image?.size, CGSize(width: 30, height: 30))
-        XCTAssertEqual(image?.kf.scale, 1.0)
+        XCTAssertEqual(image2x?.size, CGSize(width: 30, height: 30))
+        XCTAssertEqual(image2x?.kf.scale, 1.0)
         #else
-        XCTAssertEqual(image?.size, size)
-        XCTAssertEqual(image?.kf.scale, 2.0)
+        XCTAssertEqual(image2x?.size, size)
+        XCTAssertEqual(image2x?.kf.scale, 2.0)
+        #endif
+        
+        let image3x = KingfisherWrapper<KFCrossPlatformImage>.downsampledImage(data: testImageData, to: size, scale: 3)
+        #if os(macOS)
+        XCTAssertEqual(image3x?.size, CGSize(width: 45, height: 45))
+        XCTAssertEqual(image3x?.kf.scale, 1.0)
+        #else
+        XCTAssertEqual(image3x?.size, size)
+        XCTAssertEqual(image3x?.kf.scale, 3.0)
         #endif
     }
 

+ 55 - 0
Tests/KingfisherTests/KingfisherManagerTests.swift

@@ -894,6 +894,61 @@ class KingfisherManagerTests: XCTestCase {
 
         waitForExpectations(timeout: 1, handler: nil)
     }
+    
+    func testDownsamplingHandleScale2x() {
+        let exp = expectation(description: #function)
+        let url = testURLs[0]
+        stub(url, data: testImageData)
+        
+        _ = manager.retrieveImage(
+            with: .network(url),
+            options: [.processor(DownsamplingImageProcessor(size: .init(width: 4, height: 4))), .scaleFactor(2)])
+        {
+            result in
+
+            let image = result.value?.image
+            XCTAssertNotNil(image)
+            
+            #if os(macOS)
+            XCTAssertEqual(image?.size, .init(width: 8, height: 8))
+            XCTAssertEqual(image?.kf.scale, 1)
+            #else
+            XCTAssertEqual(image?.size, .init(width: 4, height: 4))
+            XCTAssertEqual(image?.kf.scale, 2)
+            #endif
+            
+            exp.fulfill()
+        }
+
+        waitForExpectations(timeout: 1, handler: nil)
+    }
+    
+    func testDownsamplingHandleScale3x() {
+        let exp = expectation(description: #function)
+        let url = testURLs[0]
+        stub(url, data: testImageData)
+        
+        _ = manager.retrieveImage(
+            with: .network(url),
+            options: [.processor(DownsamplingImageProcessor(size: .init(width: 4, height: 4))), .scaleFactor(3)])
+        {
+            result in
+
+            let image = result.value?.image
+            XCTAssertNotNil(image)
+            #if os(macOS)
+            XCTAssertEqual(image?.size, .init(width: 12, height: 12))
+            XCTAssertEqual(image?.kf.scale, 1)
+            #else
+            XCTAssertEqual(image?.size, .init(width: 4, height: 4))
+            XCTAssertEqual(image?.kf.scale, 3)
+            #endif
+            
+            exp.fulfill()
+        }
+
+        waitForExpectations(timeout: 1, handler: nil)
+    }
 
     func testCacheCallbackCoordinatorStateChanging() {
         var coordinator = CacheCallbackCoordinator(