Skip to content

Commit 33c83f5

Browse files
committed
Merge pull request #30 from rewcraig/master
Fix PINDiskCache byteCount tracking
2 parents 3d03a98 + 4371dcd commit 33c83f5

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

PINCache/PINDiskCache.m

+4
Original file line numberDiff line numberDiff line change
@@ -675,6 +675,10 @@ - (void)setObject:(id <NSCoding>)object forKey:(NSString *)key fileURL:(NSURL **
675675

676676
NSNumber *diskFileSize = [values objectForKey:NSURLTotalFileAllocatedSizeKey];
677677
if (diskFileSize) {
678+
NSNumber *prevDiskFileSize = [self->_sizes objectForKey:key];
679+
if (prevDiskFileSize) {
680+
self.byteCount = self->_byteCount - [prevDiskFileSize unsignedIntegerValue];
681+
}
678682
[self->_sizes setObject:diskFileSize forKey:key];
679683
self.byteCount = self->_byteCount + [diskFileSize unsignedIntegerValue]; // atomic
680684
}

tests/PINCacheTests/PINCacheTests.m

+13
Original file line numberDiff line numberDiff line change
@@ -241,6 +241,19 @@ - (void)testDiskByteCount
241241
XCTAssertTrue(self.cache.diskByteCount > 0, @"disk cache byte count was not greater than zero");
242242
}
243243

244+
- (void)testDiskByteCountWithExistingKey
245+
{
246+
[self.cache setObject:[self image] forKey:@"image"];
247+
NSUInteger initialDiskByteCount = self.cache.diskByteCount;
248+
[self.cache setObject:[self image] forKey:@"image"];
249+
250+
XCTAssertTrue(self.cache.diskByteCount == initialDiskByteCount, @"disk cache byte count should not change by adding object with existing key and size");
251+
252+
[self.cache setObject:[self image] forKey:@"image2"];
253+
254+
XCTAssertTrue(self.cache.diskByteCount > initialDiskByteCount, @"disk cache byte count should increase with new key and object added to disk cache");
255+
}
256+
244257
- (void)testOneThousandAndOneWrites
245258
{
246259
NSUInteger max = 1001;

0 commit comments

Comments
 (0)