mirror of
https://github.com/TextureGroup/Texture.git
synced 2026-04-07 19:17:39 +00:00
* Exposes a new option in ASImageDownloaderProtocol to retry image downloads At the moment the ASBasicImageDownloader does not automatically retry image downloads if the remote host is unreachable. On the contrary the ASPINRemoteImageDownloader automatically retries. Retrying is something that ultimately clients need to be able to control, for example to fail fast to an alternative image rather than keep retrying for more than one minute while not displaying any image. This change exposes a new option in the ASImageDownloaderProtocol to retry image downloads. It also uses this new option in both ASNetworkImageNode and also ASMultiplexImageNode, setting it to YES to preserve the current behaviour. * Fixes a failing test in ASMultiplexImageNodeTests * Fixes ScreenNode.m ScreenNode.m is implementing ASImageDownloaderProtocol and needs to be fixed to reflect changes in the latter.
50 lines
2.1 KiB
Plaintext
50 lines
2.1 KiB
Plaintext
//
|
|
// ASBasicImageDownloaderTests.mm
|
|
// Texture
|
|
//
|
|
// Copyright (c) Facebook, Inc. and its affiliates. All rights reserved.
|
|
// Changes after 4/13/2017 are: Copyright (c) Pinterest, Inc. All rights reserved.
|
|
// Licensed under Apache 2.0: http://www.apache.org/licenses/LICENSE-2.0
|
|
//
|
|
|
|
#import <XCTest/XCTest.h>
|
|
|
|
#import <AsyncDisplayKit/ASBasicImageDownloader.h>
|
|
|
|
@interface ASBasicImageDownloaderTests : XCTestCase
|
|
|
|
@end
|
|
|
|
@implementation ASBasicImageDownloaderTests
|
|
|
|
- (void)testAsynchronouslyDownloadTheSameURLTwice
|
|
{
|
|
XCTestExpectation *firstExpectation = [self expectationWithDescription:@"First ASBasicImageDownloader completion handler should be called within 3 seconds"];
|
|
XCTestExpectation *secondExpectation = [self expectationWithDescription:@"Second ASBasicImageDownloader completion handler should be called within 3 seconds"];
|
|
|
|
ASBasicImageDownloader *downloader = [ASBasicImageDownloader sharedImageDownloader];
|
|
NSURL *URL = [[NSBundle bundleForClass:[self class]] URLForResource:@"logo-square"
|
|
withExtension:@"png"
|
|
subdirectory:@"TestResources"];
|
|
|
|
[downloader downloadImageWithURL:URL
|
|
shouldRetry:YES
|
|
callbackQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
|
|
downloadProgress:nil
|
|
completion:^(id<ASImageContainerProtocol> _Nullable image, NSError * _Nullable error, id _Nullable downloadIdentifier, id _Nullable userInfo) {
|
|
[firstExpectation fulfill];
|
|
}];
|
|
|
|
[downloader downloadImageWithURL:URL
|
|
shouldRetry:YES
|
|
callbackQueue:dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0)
|
|
downloadProgress:nil
|
|
completion:^(id<ASImageContainerProtocol> _Nullable image, NSError * _Nullable error, id _Nullable downloadIdentifier, id _Nullable userInfo) {
|
|
[secondExpectation fulfill];
|
|
}];
|
|
|
|
[self waitForExpectationsWithTimeout:30 handler:nil];
|
|
}
|
|
|
|
@end
|