...
|
...
|
@@ -14,9 +14,10 @@ |
|
|
|
|
|
#import "SDImageCache.h"
|
|
|
|
|
|
NSString *kImageTestKey = @"TestImageKey";
|
|
|
|
|
|
@interface SDImageCacheTests : XCTestCase
|
|
|
|
|
|
@property (strong, nonatomic) SDImageCache *sharedImageCache;
|
|
|
@end
|
|
|
|
|
|
@implementation SDImageCacheTests
|
...
|
...
|
@@ -25,6 +26,8 @@ |
|
|
{
|
|
|
[super setUp];
|
|
|
// Put setup code here. This method is called before the invocation of each test method in the class.
|
|
|
self.sharedImageCache = [SDImageCache sharedImageCache];
|
|
|
[self clearAllCaches];
|
|
|
}
|
|
|
|
|
|
- (void)tearDown
|
...
|
...
|
@@ -34,9 +37,165 @@ |
|
|
}
|
|
|
|
|
|
- (void)testSharedImageCache {
|
|
|
SDImageCache *sharedImageCache = [SDImageCache sharedImageCache];
|
|
|
|
|
|
expect(sharedImageCache).toNot.beNil();
|
|
|
expect(self.sharedImageCache).toNot.beNil();
|
|
|
}
|
|
|
|
|
|
@end |
|
|
- (void)testSingleton{
|
|
|
expect(self.sharedImageCache).to.equal([SDImageCache sharedImageCache]);
|
|
|
}
|
|
|
|
|
|
- (void)testClearDiskCache{
|
|
|
[self.sharedImageCache storeImage:[self imageForTesting] forKey:kImageTestKey];
|
|
|
[self.sharedImageCache clearDiskOnCompletion:^{
|
|
|
expect([self.sharedImageCache diskImageExistsWithKey:kImageTestKey]).to.equal(NO);
|
|
|
expect([self.sharedImageCache imageFromMemoryCacheForKey:kImageTestKey]).to.equal([self imageForTesting]);
|
|
|
}];
|
|
|
}
|
|
|
|
|
|
- (void)testClearMemoryCache{
|
|
|
[self.sharedImageCache storeImage:[self imageForTesting] forKey:kImageTestKey];
|
|
|
[self.sharedImageCache clearMemory];
|
|
|
expect([self.sharedImageCache imageFromMemoryCacheForKey:kImageTestKey]).to.beNil;
|
|
|
// Seems not able to access the files correctly (maybe only from test?)
|
|
|
//expect([self.sharedImageCache diskImageExistsWithKey:kImageTestKey]).to.equal(YES);
|
|
|
[self.sharedImageCache diskImageExistsWithKey:kImageTestKey completion:^(BOOL isInCache) {
|
|
|
expect(isInCache).to.equal(YES);
|
|
|
}];
|
|
|
}
|
|
|
|
|
|
// Testing storeImage:forKey:
|
|
|
- (void)testInsertionOfImage {
|
|
|
UIImage *image = [self imageForTesting];
|
|
|
[self.sharedImageCache storeImage:image forKey:kImageTestKey];
|
|
|
expect([self.sharedImageCache imageFromMemoryCacheForKey:kImageTestKey]).to.equal(image);
|
|
|
expect([self.sharedImageCache imageFromDiskCacheForKey:kImageTestKey]).to.equal(image);
|
|
|
}
|
|
|
|
|
|
// Testing storeImage:forKey:toDisk:YES
|
|
|
- (void)testInsertionOfImageForcingDiskStorage{
|
|
|
UIImage *image = [self imageForTesting];
|
|
|
[self.sharedImageCache storeImage:image forKey:kImageTestKey toDisk:YES];
|
|
|
expect([self.sharedImageCache imageFromMemoryCacheForKey:kImageTestKey]).to.equal(image);
|
|
|
// Seems not able to access the files correctly (maybe only from test?)
|
|
|
//expect([self.sharedImageCache diskImageExistsWithKey:kImageTestKey]).to.equal(YES);
|
|
|
[self.sharedImageCache diskImageExistsWithKey:kImageTestKey completion:^(BOOL isInCache) {
|
|
|
expect(isInCache).to.equal(YES);
|
|
|
}];
|
|
|
}
|
|
|
|
|
|
// Testing storeImage:forKey:toDisk:NO
|
|
|
- (void)testInsertionOfImageOnlyInMemory {
|
|
|
UIImage *image = [self imageForTesting];
|
|
|
[self.sharedImageCache storeImage:image forKey:@"TestImage" toDisk:NO];
|
|
|
[self.sharedImageCache diskImageExistsWithKey:@"TestImage" completion:^(BOOL isInCache) {
|
|
|
expect(isInCache).to.equal(YES);
|
|
|
}];
|
|
|
[self.sharedImageCache clearMemory];
|
|
|
[self.sharedImageCache diskImageExistsWithKey:@"TestImage" completion:^(BOOL isInCache) {
|
|
|
expect(isInCache).to.equal(NO);
|
|
|
}];
|
|
|
}
|
|
|
|
|
|
- (void)testRetrievalImageThroughNSOperation{
|
|
|
//- (NSOperation *)queryDiskCacheForKey:(NSString *)key done:(SDWebImageQueryCompletedBlock)doneBlock;
|
|
|
UIImage *imageForTesting = [self imageForTesting];
|
|
|
[self.sharedImageCache storeImage:imageForTesting forKey:kImageTestKey];
|
|
|
NSOperation *operation = [self.sharedImageCache queryDiskCacheForKey:kImageTestKey done:^(UIImage *image, SDImageCacheType cacheType) {
|
|
|
expect(image).to.equal(imageForTesting);
|
|
|
}];
|
|
|
expect(operation).toNot.beNil;
|
|
|
}
|
|
|
|
|
|
- (void)testRemoveImageForKey{
|
|
|
[self.sharedImageCache storeImage:[self imageForTesting] forKey:kImageTestKey];
|
|
|
[self.sharedImageCache removeImageForKey:kImageTestKey];
|
|
|
expect([self.sharedImageCache imageFromMemoryCacheForKey:kImageTestKey]).to.beNil;
|
|
|
expect([self.sharedImageCache imageFromDiskCacheForKey:kImageTestKey]).to.beNil;
|
|
|
}
|
|
|
|
|
|
- (void)testRemoveImageForKeyWithCompletion{
|
|
|
[self.sharedImageCache storeImage:[self imageForTesting] forKey:kImageTestKey];
|
|
|
[self.sharedImageCache removeImageForKey:kImageTestKey withCompletion:^{
|
|
|
expect([self.sharedImageCache imageFromDiskCacheForKey:kImageTestKey]).to.beNil;
|
|
|
expect([self.sharedImageCache imageFromMemoryCacheForKey:kImageTestKey]).to.beNil;
|
|
|
}];
|
|
|
}
|
|
|
|
|
|
- (void)testRemoveImageForKeyNotFromDisk{
|
|
|
[self.sharedImageCache storeImage:[self imageForTesting] forKey:kImageTestKey];
|
|
|
[self.sharedImageCache removeImageForKey:kImageTestKey fromDisk:NO];
|
|
|
expect([self.sharedImageCache imageFromDiskCacheForKey:kImageTestKey]).toNot.beNil;
|
|
|
expect([self.sharedImageCache imageFromMemoryCacheForKey:kImageTestKey]).to.beNil;
|
|
|
}
|
|
|
|
|
|
- (void)testRemoveImageForKeyFromDisk{
|
|
|
[self.sharedImageCache storeImage:[self imageForTesting] forKey:kImageTestKey];
|
|
|
[self.sharedImageCache removeImageForKey:kImageTestKey fromDisk:NO];
|
|
|
expect([self.sharedImageCache imageFromDiskCacheForKey:kImageTestKey]).to.beNil;
|
|
|
expect([self.sharedImageCache imageFromMemoryCacheForKey:kImageTestKey]).to.beNil;
|
|
|
}
|
|
|
|
|
|
- (void)testRemoveImageforKeyNotFromDiskWithCompletion{
|
|
|
[self.sharedImageCache storeImage:[self imageForTesting] forKey:kImageTestKey];
|
|
|
[self.sharedImageCache removeImageForKey:kImageTestKey fromDisk:NO withCompletion:^{
|
|
|
expect([self.sharedImageCache imageFromDiskCacheForKey:kImageTestKey]).toNot.beNil;
|
|
|
expect([self.sharedImageCache imageFromMemoryCacheForKey:kImageTestKey]).to.beNil;
|
|
|
}];
|
|
|
}
|
|
|
|
|
|
- (void)testRemoveImageforKeyFromDiskWithCompletion{
|
|
|
[self.sharedImageCache storeImage:[self imageForTesting] forKey:kImageTestKey];
|
|
|
[self.sharedImageCache removeImageForKey:kImageTestKey fromDisk:YES withCompletion:^{
|
|
|
expect([self.sharedImageCache imageFromDiskCacheForKey:kImageTestKey]).to.beNil;
|
|
|
expect([self.sharedImageCache imageFromMemoryCacheForKey:kImageTestKey]).to.beNil;
|
|
|
}];
|
|
|
}
|
|
|
|
|
|
// TODO -- Testing insertion with recalculate
|
|
|
- (void)testInsertionOfImageOnlyInDisk {
|
|
|
}
|
|
|
|
|
|
- (void)testInitialCacheSize{
|
|
|
expect([self.sharedImageCache getSize]).to.equal(0);
|
|
|
}
|
|
|
|
|
|
- (void)testInitialDiskCount{
|
|
|
[self.sharedImageCache storeImage:[self imageForTesting] forKey:kImageTestKey];
|
|
|
expect([self.sharedImageCache getDiskCount]).to.equal(1);
|
|
|
}
|
|
|
|
|
|
- (void)testDiskCountAfterInsertion{
|
|
|
[self.sharedImageCache storeImage:[self imageForTesting] forKey:kImageTestKey];
|
|
|
expect([self.sharedImageCache getDiskCount]).to.equal(1);
|
|
|
}
|
|
|
|
|
|
- (void)testDefaultCachePathForAnyKey{
|
|
|
NSString *path = [self.sharedImageCache defaultCachePathForKey:kImageTestKey];
|
|
|
expect(path).toNot.beNil;
|
|
|
}
|
|
|
|
|
|
- (void)testCachePathForNonExistingKey{
|
|
|
NSString *path = [self.sharedImageCache cachePathForKey:kImageTestKey inPath:[self.sharedImageCache defaultCachePathForKey:kImageTestKey]];
|
|
|
expect(path).to.beNil;
|
|
|
}
|
|
|
|
|
|
- (void)testCachePathForExistingKey{
|
|
|
[self.sharedImageCache storeImage:[self imageForTesting] forKey:kImageTestKey];
|
|
|
NSString *path = [self.sharedImageCache cachePathForKey:kImageTestKey inPath:[self.sharedImageCache defaultCachePathForKey:kImageTestKey]];
|
|
|
expect(path).notTo.beNil;
|
|
|
}
|
|
|
|
|
|
#pragma mark Helper methods
|
|
|
|
|
|
- (void)clearAllCaches{
|
|
|
[self.sharedImageCache clearDisk];
|
|
|
[self.sharedImageCache clearMemory];
|
|
|
}
|
|
|
|
|
|
- (UIImage *)imageForTesting{
|
|
|
NSBundle *testBundle=[NSBundle bundleForClass:[self class]];
|
|
|
NSString *testBundlePath=[testBundle pathForResource:@"TestImage" ofType:@"jpg"];
|
|
|
return [UIImage imageWithContentsOfFile:testBundlePath];
|
|
|
}
|
|
|
|
|
|
@end |
|
|
\ No newline at end of file |
...
|
...
|
|