From 0e12288bfb9ae04b8dbf71730d62a7e3201c04ff Mon Sep 17 00:00:00 2001 From: _ivanC Date: Fri, 8 May 2020 18:13:51 +0800 Subject: [PATCH 1/2] Fix -[ASNetworkImageNode setURL:resetToDefault:] forget to reset animatedImage --- Source/ASNetworkImageNode.mm | 1 + 1 file changed, 1 insertion(+) diff --git a/Source/ASNetworkImageNode.mm b/Source/ASNetworkImageNode.mm index daf3a47c1..085fc063c 100644 --- a/Source/ASNetworkImageNode.mm +++ b/Source/ASNetworkImageNode.mm @@ -216,6 +216,7 @@ - (void)setURL:(NSURL *)URL resetToDefault:(BOOL)reset if (reset || hadURL) { [self _setCurrentImageQuality:(hadURL ? 0.0 : 1.0)]; [self _locked__setImage:_defaultImage]; + [self _locked_setAnimatedImage:nil]; } } From c0c5825e2525075bfd1ebb9a8a0a25a1360d7e8e Mon Sep 17 00:00:00 2001 From: _ivanC Date: Tue, 16 Jun 2020 18:19:35 +0800 Subject: [PATCH 2/2] add ASNetworkImageNodeTest for reset with animatedImage --- Tests/ASNetworkImageNodeTests.mm | 73 ++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/Tests/ASNetworkImageNodeTests.mm b/Tests/ASNetworkImageNodeTests.mm index d0853c1c1..a707cd163 100644 --- a/Tests/ASNetworkImageNodeTests.mm +++ b/Tests/ASNetworkImageNodeTests.mm @@ -20,6 +20,9 @@ @interface ASTestImageDownloader : NSObject @interface ASTestImageCache : NSObject @end +@interface ASTestAnimatedImage : NSObject +@end + @implementation ASNetworkImageNodeTests { ASNetworkImageNode *node; id downloader; @@ -73,6 +76,18 @@ - (void)testThatProgressBlockIsSetAndClearedCorrectlyOnChangeURL [downloader verifyWithDelay:5]; } +- (void)testThatAnimatedImageClearedCorrectlyOnChangeURL +{ + [node layer]; + [node enterInterfaceState:ASInterfaceStateInHierarchy]; + + // Set URL while visible, should set progress block + node.animatedImage = [ASTestAnimatedImage new]; + [node setURL:[NSURL URLWithString:@"http://imageA"] resetToDefault:YES]; + + XCTAssertEqualObjects(nil, node.animatedImage); +} + - (void)testThatSettingAnImageWillStayForEnteringAndExitingPreloadState { UIImage *image = [[UIImage alloc] init]; @@ -133,3 +148,61 @@ - (void)setProgressImageBlock:(ASImageDownloaderProgressImage)progressBlock call // nop } @end + +@implementation ASTestAnimatedImage +@synthesize playbackReadyCallback; + +- (UIImage *)coverImage +{ + return [UIImage new]; +} + +- (BOOL)coverImageReady +{ + return YES; +} + +- (CFTimeInterval)totalDuration +{ + return 1; +} + +- (NSUInteger)frameInterval +{ + return 0.2; +} + +- (size_t)loopCount +{ + return 0; +} + +- (size_t)frameCount +{ + return 5; +} + +- (BOOL)playbackReady +{ + return YES; +} + +- (NSError *)error +{ + return nil; +} + +- (CGImageRef)imageAtIndex:(NSUInteger)index +{ + return [[UIImage new] CGImage]; +} + +- (CFTimeInterval)durationAtIndex:(NSUInteger)index +{ + return 0.2; +} + +- (void)clearAnimatedImageCache +{} + +@end