From e8a357e504ff95b8e8995021941ad00b789f644f Mon Sep 17 00:00:00 2001 From: DreamPiggy Date: Fri, 17 Apr 2020 16:03:36 +0800 Subject: [PATCH] Added test case `testUIViewOperationKeyContextWorks` to ensure this behavior --- Tests/Tests/SDWebCacheCategoriesTests.m | 26 +++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/Tests/Tests/SDWebCacheCategoriesTests.m b/Tests/Tests/SDWebCacheCategoriesTests.m index e91c5ece..96fc7a3e 100644 --- a/Tests/Tests/SDWebCacheCategoriesTests.m +++ b/Tests/Tests/SDWebCacheCategoriesTests.m @@ -350,6 +350,32 @@ [self waitForExpectationsWithCommonTimeout]; } +- (void)testUIViewOperationKeyContextWorks { + XCTestExpectation *expectation = [self expectationWithDescription:@"UIView operation key context should pass through"]; + + UIView *view = [[UIView alloc] init]; + NSURL *originalImageURL = [NSURL URLWithString:kTestJPEGURL]; + SDWebImageManager *customManager = [[SDWebImageManager alloc] initWithCache:SDImageCachesManager.sharedManager loader:SDImageLoadersManager.sharedManager]; + customManager.optionsProcessor = [SDWebImageOptionsProcessor optionsProcessorWithBlock:^SDWebImageOptionsResult * _Nullable(NSURL * _Nullable url, SDWebImageOptions options, SDWebImageContext * _Nullable context) { + // expect manager does not exist, avoid retain cycle + expect(context[SDWebImageContextCustomManager]).beNil(); + // expect operation key to be the image view class + expect(context[SDWebImageContextSetImageOperationKey]).equal(NSStringFromClass(view.class)); + return [[SDWebImageOptionsResult alloc] initWithOptions:options context:context]; + }]; + [view sd_internalSetImageWithURL:originalImageURL + placeholderImage:nil + options:0 + context:@{SDWebImageContextCustomManager: customManager} + setImageBlock:nil + progress:nil + completed:^(UIImage * _Nullable image, NSData * _Nullable data, NSError * _Nullable error, SDImageCacheType cacheType, BOOL finished, NSURL * _Nullable imageURL) { + [expectation fulfill]; + }]; + + [self waitForExpectationsWithCommonTimeout]; +} + #pragma mark - Helper - (UIWindow *)window { if (!_window) {