Fix the test case about the original cache key calculation rule
This commit is contained in:
parent
1dc70b8430
commit
543b5c95d4
|
@ -247,7 +247,7 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) {
|
|||
/**
|
||||
* Operation that queries the cache asynchronously and call the completion when done.
|
||||
*
|
||||
* @param key The unique key used to store the wanted image. If you need transformer's image, calculate the key with `SDTransformedKeyForKey` or generate the cache key from url with `cacheKeyForURL:context:`.
|
||||
* @param key The unique key used to store the wanted image. If you want transformed or thumbnail image, calculate the key with `SDTransformedKeyForKey`, `SDThumbnailedKeyForKey`, or generate the cache key from url with `cacheKeyForURL:context:`.
|
||||
* @param doneBlock The completion block. Will not get called if the operation is cancelled
|
||||
*
|
||||
* @return a NSOperation instance containing the cache op
|
||||
|
@ -257,7 +257,7 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) {
|
|||
/**
|
||||
* Asynchronously queries the cache with operation and call the completion when done.
|
||||
*
|
||||
* @param key The unique key used to store the wanted image. If you need transformer's image, calculate the key with `SDTransformedKeyForKey` or generate the cache key from url with `cacheKeyForURL:context:`.
|
||||
* @param key The unique key used to store the wanted image. If you want transformed or thumbnail image, calculate the key with `SDTransformedKeyForKey`, `SDThumbnailedKeyForKey`, or generate the cache key from url with `cacheKeyForURL:context:`.
|
||||
* @param options A mask to specify options to use for this cache query
|
||||
* @param doneBlock The completion block. Will not get called if the operation is cancelled
|
||||
*
|
||||
|
@ -268,7 +268,7 @@ typedef NS_OPTIONS(NSUInteger, SDImageCacheOptions) {
|
|||
/**
|
||||
* Asynchronously queries the cache with operation and call the completion when done.
|
||||
*
|
||||
* @param key The unique key used to store the wanted image. If you need transformer's image, calculate the key with `SDTransformedKeyForKey` or generate the cache key from url with `cacheKeyForURL:context:`.
|
||||
* @param key The unique key used to store the wanted image. If you want transformed or thumbnail image, calculate the key with `SDTransformedKeyForKey`, `SDThumbnailedKeyForKey`, or generate the cache key from url with `cacheKeyForURL:context:`.
|
||||
* @param options A mask to specify options to use for this cache query
|
||||
* @param context A context contains different options to perform specify changes or processes, see `SDWebImageContextOption`. This hold the extra objects which `options` enum can not hold.
|
||||
* @param doneBlock The completion block. Will not get called if the operation is cancelled
|
||||
|
|
|
@ -24,6 +24,7 @@ FOUNDATION_EXPORT NSString * _Nullable SDTransformedKeyForKey(NSString * _Nullab
|
|||
@param thumbnailPixelSize The thumbnail pixel size
|
||||
@param preserveAspectRatio The preserve aspect ratio option
|
||||
@return The thumbnailed cache key
|
||||
@note If you have both transformer and thumbnail applied for image, call `SDThumbnailedKeyForKey` firstly and then with `SDTransformedKeyForKey`.`
|
||||
*/
|
||||
FOUNDATION_EXPORT NSString * _Nullable SDThumbnailedKeyForKey(NSString * _Nullable key, CGSize thumbnailPixelSize, BOOL preserveAspectRatio);
|
||||
|
||||
|
|
|
@ -262,13 +262,14 @@ SDWebImageManager *manager = [SDWebImageManager sharedManager];
|
|||
- (void)cancelAll;
|
||||
|
||||
/**
|
||||
* Return the cache key for a given URL
|
||||
* Return the cache key for a given URL, does not considerate transformer or thumbnail.
|
||||
* @note This method does not have context option, only use the url and manager level cacheKeyFilter to generate the cache key.
|
||||
*/
|
||||
- (nullable NSString *)cacheKeyForURL:(nullable NSURL *)url;
|
||||
|
||||
/**
|
||||
* Return the cache key for a given URL and context option.
|
||||
* Some option like `.thumbnailPixelSize` and `imageTransformer` will effect the generated cache key, using this if you have those context associated.
|
||||
* @note The context option like `.thumbnailPixelSize` and `.imageTransformer` will effect the generated cache key, using this if you have those context associated.
|
||||
*/
|
||||
- (nullable NSString *)cacheKeyForURL:(nullable NSURL *)url context:(nullable SDWebImageContext *)context;
|
||||
|
||||
|
|
|
@ -95,7 +95,23 @@ static id<SDImageLoader> _defaultImageLoader;
|
|||
}
|
||||
|
||||
- (nullable NSString *)cacheKeyForURL:(nullable NSURL *)url {
|
||||
return [self cacheKeyForURL:url context:nil];
|
||||
return [self cacheKeyForURL:url cacheKeyFilter:self.cacheKeyFilter];
|
||||
}
|
||||
|
||||
- (nullable NSString *)cacheKeyForURL:(nullable NSURL *)url cacheKeyFilter:(nullable id<SDWebImageCacheKeyFilter>)cacheKeyFilter {
|
||||
if (!url) {
|
||||
return @"";
|
||||
}
|
||||
|
||||
NSString *key;
|
||||
// Cache Key Filter
|
||||
if (cacheKeyFilter) {
|
||||
key = [cacheKeyFilter cacheKeyForURL:url];
|
||||
} else {
|
||||
key = url.absoluteString;
|
||||
}
|
||||
|
||||
return key;
|
||||
}
|
||||
|
||||
- (nullable NSString *)cacheKeyForURL:(nullable NSURL *)url context:(nullable SDWebImageContext *)context {
|
||||
|
@ -355,7 +371,9 @@ static id<SDImageLoader> _defaultImageLoader;
|
|||
if (context[SDWebImageContextOriginalStoreCacheType]) {
|
||||
originalStoreCacheType = [context[SDWebImageContextOriginalStoreCacheType] integerValue];
|
||||
}
|
||||
NSString *key = [self cacheKeyForURL:url context:context];
|
||||
// origin cache key
|
||||
id<SDWebImageCacheKeyFilter> cacheKeyFilter = context[SDWebImageContextCacheKeyFilter] ?: self.cacheKeyFilter;
|
||||
NSString *key = [self cacheKeyForURL:url cacheKeyFilter:cacheKeyFilter];
|
||||
id<SDImageTransformer> transformer = context[SDWebImageContextImageTransformer];
|
||||
id<SDWebImageCacheSerializer> cacheSerializer = context[SDWebImageContextCacheSerializer];
|
||||
|
||||
|
@ -405,6 +423,7 @@ static id<SDImageLoader> _defaultImageLoader;
|
|||
if (context[SDWebImageContextStoreCacheType]) {
|
||||
storeCacheType = [context[SDWebImageContextStoreCacheType] integerValue];
|
||||
}
|
||||
// transformed cache key
|
||||
NSString *key = [self cacheKeyForURL:url context:context];
|
||||
id<SDImageTransformer> transformer = context[SDWebImageContextImageTransformer];
|
||||
id<SDWebImageCacheSerializer> cacheSerializer = context[SDWebImageContextCacheSerializer];
|
||||
|
|
|
@ -229,7 +229,7 @@
|
|||
SDWebImageContext *context = @{SDWebImageContextOriginalStoreCacheType : @(SDImageCacheTypeDisk), SDWebImageContextStoreCacheType : @(SDImageCacheTypeMemory)};
|
||||
NSURL *url = [NSURL URLWithString:kTestJPEGURL];
|
||||
NSString *originalKey = [manager cacheKeyForURL:url];
|
||||
NSString *transformedKey = SDTransformedKeyForKey(originalKey, transformer.transformerKey);
|
||||
NSString *transformedKey = [manager cacheKeyForURL:url context:context];
|
||||
|
||||
[manager loadImageWithURL:url options:SDWebImageTransformAnimatedImage context:context progress:nil completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) {
|
||||
expect(image).equal(transformer.testImage);
|
||||
|
|
Loading…
Reference in New Issue