瀏覽代碼

Add the test case `test15ThatOriginalQueryCacheTypeWork` about original cache key and transformer

DreamPiggy 6 年之前
父節點
當前提交
3d1abaee82
共有 1 個文件被更改,包括 31 次插入0 次删除
  1. 31 0
      Tests/Tests/SDWebImageManagerTests.m

+ 31 - 0
Tests/Tests/SDWebImageManagerTests.m

@@ -327,6 +327,37 @@
     [self waitForExpectationsWithCommonTimeout];
 }
 
+- (void)test15ThatOriginalQueryCacheTypeWork {
+    XCTestExpectation *expectation = [self expectationWithDescription:@"Image original query cache type with transformer works"];
+    NSURL *url = [NSURL URLWithString:@"http://via.placeholder.com/102x102.png"];
+    SDWebImageTestTransformer *transformer = [[SDWebImageTestTransformer alloc] init];
+    transformer.testImage = [[UIImage alloc] initWithContentsOfFile:[self testJPEGPath]];
+    NSString *originalKey = [SDWebImageManager.sharedManager cacheKeyForURL:url];
+    NSString *transformedKey = [SDWebImageManager.sharedManager cacheKeyForURL:url context:@{SDWebImageContextImageTransformer : transformer}];
+    
+    [[SDWebImageManager sharedManager] loadImageWithURL:url options:0 context:@{SDWebImageContextImageTransformer : transformer, SDWebImageContextOriginalStoreCacheType : @(SDImageCacheTypeAll)} progress:nil completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) {
+        // Get the transformed image
+        expect(image).equal(transformer.testImage);
+        // Now, the original image is stored into memory/disk cache
+        UIImage *originalImage = [SDImageCache.sharedImageCache imageFromMemoryCacheForKey:originalKey];
+        expect(originalImage.size).equal(CGSizeMake(102, 102));
+        // Query again with original cache type, which should not trigger any download
+        UIImage *transformedImage = [SDImageCache.sharedImageCache imageFromMemoryCacheForKey:transformedKey];
+        expect(image).equal(transformedImage);
+        [SDImageCache.sharedImageCache removeImageFromDiskForKey:transformedKey];
+        [SDImageCache.sharedImageCache removeImageFromMemoryForKey:transformedKey];
+        [SDWebImageManager.sharedManager loadImageWithURL:url options:SDWebImageFromCacheOnly context:@{SDWebImageContextImageTransformer : transformer, SDWebImageContextOriginalQueryCacheType : @(SDImageCacheTypeAll)} progress:nil completed:^(UIImage * _Nullable image2, NSData * _Nullable data2, NSError * _Nullable error2, SDImageCacheType cacheType2, BOOL finished2, NSURL * _Nullable imageURL2) {
+            // Get the transformed image
+            expect(image2).equal(transformer.testImage);
+            [SDImageCache.sharedImageCache removeImageFromMemoryForKey:originalKey];
+            [SDImageCache.sharedImageCache removeImageFromDiskForKey:originalKey];
+            [expectation fulfill];
+        }];
+    }];
+    
+    [self waitForExpectationsWithCommonTimeout];
+}
+
 - (NSString *)testJPEGPath {
     NSBundle *testBundle = [NSBundle bundleForClass:[self class]];
     return [testBundle pathForResource:@"TestImage" ofType:@"jpg"];