diff options
author | Joel Fischer <joeljfischer@gmail.com> | 2019-07-17 10:01:33 -0400 |
---|---|---|
committer | Joel Fischer <joeljfischer@gmail.com> | 2019-07-17 10:01:33 -0400 |
commit | 2434f91cebaf173436117efb2316ee2299b9aebf (patch) | |
tree | 7ecd1e647c8b51a2004348599b76c6c804af255e | |
parent | 90780cd015f7039ab6f226b5f0d762f970be0198 (diff) | |
download | sdl_ios-2434f91cebaf173436117efb2316ee2299b9aebf.tar.gz |
File manager test updates
* Add description to SDLFile
* Fix FileManager cancelling all files
-rw-r--r-- | SmartDeviceLink/SDLFile.m | 4 | ||||
-rw-r--r-- | SmartDeviceLink/SDLFileManager.m | 12 | ||||
-rw-r--r-- | SmartDeviceLinkTests/DevAPISpecs/SDLFileManagerSpec.m | 96 |
3 files changed, 70 insertions, 42 deletions
diff --git a/SmartDeviceLink/SDLFile.m b/SmartDeviceLink/SDLFile.m index 3e69a943c..1efe7454b 100644 --- a/SmartDeviceLink/SDLFile.m +++ b/SmartDeviceLink/SDLFile.m @@ -166,6 +166,10 @@ NS_ASSUME_NONNULL_BEGIN #pragma mark - NSObject overrides +- (NSString *)description { + return [NSString stringWithFormat:@"SDLFile: %@", self.name]; +} + - (NSUInteger)hash { return self.name.hash ^ self.data.hash; } diff --git a/SmartDeviceLink/SDLFileManager.m b/SmartDeviceLink/SDLFileManager.m index e8a4c6e97..a5b205ff0 100644 --- a/SmartDeviceLink/SDLFileManager.m +++ b/SmartDeviceLink/SDLFileManager.m @@ -305,6 +305,8 @@ SDLFileManagerState *const SDLFileManagerStateStartupError = @"StartupError"; __block float totalBytesUploaded = 0.0; dispatch_group_t uploadFilesTask = dispatch_group_create(); + dispatch_group_enter(uploadFilesTask); + // Wait for all files to be uploaded dispatch_group_notify(uploadFilesTask, [SDLGlobals sharedGlobals].sdlProcessingQueue, ^{ if (completionHandler == nil) { return; } @@ -314,10 +316,9 @@ SDLFileManagerState *const SDLFileManagerStateStartupError = @"StartupError"; return completionHandler(nil); }); - dispatch_group_enter(uploadFilesTask); - for(SDLFile *file in files) { + for(NSUInteger i = 0; i < files.count; i++) { + SDLFile *file = files[i]; dispatch_group_enter(uploadFilesTask); - __weak typeof(self) weakself = self; [self uploadFile:file completionHandler:^(BOOL success, NSUInteger bytesAvailable, NSError * _Nullable error) { if(!success) { @@ -331,9 +332,10 @@ SDLFileManagerState *const SDLFileManagerStateStartupError = @"StartupError"; BOOL continueWithRemainingUploads = progressHandler(file.name, uploadPercentage, error); if (!continueWithRemainingUploads) { // Cancel any remaining files waiting to be uploaded - for(SDLFile *file in files) { + for(NSUInteger j = i + 1; j < files.count; j++) { + SDLFile *cancelFile = files[j]; for (SDLUploadFileOperation *op in weakself.transactionQueue.operations) { - if ([op.fileWrapper.file isEqual:file]) { + if ([op.fileWrapper.file isEqual:cancelFile]) { [op cancel]; break; } diff --git a/SmartDeviceLinkTests/DevAPISpecs/SDLFileManagerSpec.m b/SmartDeviceLinkTests/DevAPISpecs/SDLFileManagerSpec.m index c4ee23f0d..b3b076e30 100644 --- a/SmartDeviceLinkTests/DevAPISpecs/SDLFileManagerSpec.m +++ b/SmartDeviceLinkTests/DevAPISpecs/SDLFileManagerSpec.m @@ -452,7 +452,7 @@ describe(@"uploading / deleting single files with the file manager", ^{ }); }); -fdescribe(@"uploading/deleting multiple files in the file manager", ^{ +describe(@"uploading/deleting multiple files in the file manager", ^{ __block TestMultipleFilesConnectionManager *testConnectionManager; __block SDLFileManager *testFileManager; __block NSUInteger initialSpaceAvailable = 123; @@ -611,7 +611,7 @@ fdescribe(@"uploading/deleting multiple files in the file manager", ^{ SDLUploadFileOperation *sentOperation = testFileManager.pendingTransactions[i]; sentOperation.fileWrapper.completionHandler(NO, failureBytesAvailable, [NSError sdl_fileManager_dataMissingError]); } - + expect(testFileManager.bytesAvailable).to(equal(initialSpaceAvailable)); }); @@ -717,25 +717,24 @@ fdescribe(@"uploading/deleting multiple files in the file manager", ^{ it(@"should not return any errors that are overwrite errors", ^{ NSArray<UIImage *> *images = [FileManagerSpecHelper imagesForCount:5]; - for(int i = 0; i < images.count; i += 1) { + for(int i = 0; i < images.count; i++) { SDLArtwork *artwork = [SDLArtwork artworkWithImage:images[i] asImageFormat:SDLArtworkImageFormatPNG]; [testArtworks addObject:artwork]; } [testFileManager uploadArtworks:testArtworks completionHandler:^(NSArray<NSString *> * _Nonnull artworkNames, NSError * _Nullable error) { - expect(artworkNames).to(haveCount(images.count - 1)); - expect(error).toNot(beNil()); + expect(artworkNames).to(haveCount(images.count)); + expect(error).to(beNil()); }]; expect(testFileManager.pendingTransactions.count).to(equal(5)); - for (int i = 0; i < images.count; i += 1) { - SDLUploadFileOperation *sentOperation = testFileManager.pendingTransactions[i]; + + SDLUploadFileOperation *sentOperation = testFileManager.pendingTransactions.firstObject; + sentOperation.fileWrapper.completionHandler(NO, failureBytesAvailable, [NSError sdl_fileManager_cannotOverwriteError]); - if (i % 2 == 0) { - sentOperation.fileWrapper.completionHandler(NO, failureBytesAvailable, [NSError sdl_fileManager_cannotOverwriteError]); - } else { - sentOperation.fileWrapper.completionHandler(YES, newBytesAvailable, nil); - } + for (int i = 1; i < images.count; i++) { + SDLUploadFileOperation *sentOperation = testFileManager.pendingTransactions[i]; + sentOperation.fileWrapper.completionHandler(YES, newBytesAvailable, nil); } expect(testFileManager.bytesAvailable).to(equal(newBytesAvailable)); @@ -749,8 +748,8 @@ fdescribe(@"uploading/deleting multiple files in the file manager", ^{ } [testFileManager uploadArtworks:testArtworks completionHandler:^(NSArray<NSString *> * _Nonnull artworkNames, NSError * _Nullable error) { - expect(artworkNames).to(haveCount(images.count - 1)); - expect(error).toNot(beNil()); + expect(artworkNames).to(haveCount(images.count)); + expect(error).to(beNil()); }]; expect(testFileManager.pendingTransactions.count).to(equal(5)); @@ -759,7 +758,7 @@ fdescribe(@"uploading/deleting multiple files in the file manager", ^{ sentOperation.fileWrapper.completionHandler(NO, failureBytesAvailable, [NSError sdl_fileManager_cannotOverwriteError]); } - expect(testFileManager.bytesAvailable).to(equal(newBytesAvailable)); + expect(testFileManager.bytesAvailable).to(equal(initialSpaceAvailable)); }); }); }); @@ -783,8 +782,8 @@ fdescribe(@"uploading/deleting multiple files in the file manager", ^{ [testFileManager uploadFiles:testSDLFiles progressHandler:^BOOL(SDLFileName * _Nonnull fileName, float uploadPercentage, NSError * _Nullable error) { expect(fileName).to(equal(testFileName)); - expect(uploadPercentage).to(beCloseTo(100.0)); - expect(error).toNot(beNil()); + expect(uploadPercentage).to(beCloseTo(1.0)); + expect(error).to(beNil()); return YES; } completionHandler:^(NSError * _Nullable error) { expect(error).to(beNil()); @@ -809,8 +808,8 @@ fdescribe(@"uploading/deleting multiple files in the file manager", ^{ [testFileManager uploadFiles:testSDLFiles progressHandler:^BOOL(SDLFileName * _Nonnull fileName, float uploadPercentage, NSError * _Nullable error) { numberOfFilesDone++; expect(fileName).to(equal([NSString stringWithFormat:@"TestSmallFilesMemory%ld", numberOfFilesDone-1])); - expect(uploadPercentage).to(beCloseTo(numberOfFilesDone / 5)); - expect(error).toNot(beNil()); + expect(uploadPercentage).to(beCloseTo((float)numberOfFilesDone / 5.0)); + expect(error).to(beNil()); return YES; } completionHandler:^(NSError * _Nullable error) { expect(error).to(beNil()); @@ -847,8 +846,8 @@ fdescribe(@"uploading/deleting multiple files in the file manager", ^{ [testFileManager uploadArtworks:testArtworks progressHandler:^BOOL(NSString * _Nonnull artworkName, float uploadPercentage, NSError * _Nullable error) { expect(artworkName).to(equal(testArtwork.name)); - expect(uploadPercentage).to(beCloseTo(100.0)); - expect(error).toNot(beNil()); + expect(uploadPercentage).to(beCloseTo(1.0)); + expect(error).to(beNil()); return YES; } completionHandler:^(NSArray<NSString *> * _Nonnull artworkNames, NSError * _Nullable error) { expect(artworkNames).to(haveCount(1)); @@ -875,8 +874,9 @@ fdescribe(@"uploading/deleting multiple files in the file manager", ^{ __block NSUInteger artworksDone = 0; [testFileManager uploadArtworks:testArtworks progressHandler:^BOOL(NSString * _Nonnull artworkName, float uploadPercentage, NSError * _Nullable error) { artworksDone++; - expect(artworkName).to(equal(expectedArtworkNames[artworksDone])); - expect(uploadPercentage).to(beCloseTo(artworksDone / 200)); + expect(artworkName).to(equal(expectedArtworkNames[artworksDone - 1])); + expect(uploadPercentage).to(beCloseTo((float)artworksDone / 200.0)); + expect(error).to(beNil()); return YES; } completionHandler:^(NSArray<NSString *> * _Nonnull artworkNames, NSError * _Nullable error) { expect(artworkNames).to(haveCount(200)); @@ -915,9 +915,15 @@ fdescribe(@"uploading/deleting multiple files in the file manager", ^{ [testFileManager uploadFiles:testSDLFiles progressHandler:^BOOL(SDLFileName * _Nonnull fileName, float uploadPercentage, NSError * _Nullable error) { numberOfFilesDone++; expect(fileName).to(equal([NSString stringWithFormat:@"TestSmallFilesMemory%ld", numberOfFilesDone-1])); - expect(uploadPercentage).to(beCloseTo(numberOfFilesDone / 5)); - expect(error).toNot(beNil()); - return numberOfFilesDone == 1 ? NO : YES; + expect(uploadPercentage).to(beCloseTo((float)numberOfFilesDone / 5.0)); + + if (numberOfFilesDone == 1) { + expect(error).to(beNil()); + return NO; + } else { + expect(error).toNot(beNil()); + return YES; + } } completionHandler:^(NSError * _Nullable error) { expect(error).toNot(beNil()); }]; @@ -934,7 +940,7 @@ fdescribe(@"uploading/deleting multiple files in the file manager", ^{ expect(testFileManager.bytesAvailable).to(equal(newBytesAvailable)); }); - it(@"should cancel the remaining files if cancel is triggered after half of the files are uploaded", ^{ + fit(@"should cancel the remaining files if cancel is triggered after half of the files are uploaded", ^{ for(int i = 0; i < 5; i += 1) { NSString *testFileName = [NSString stringWithFormat:@"TestSmallFilesMemory%d", i]; SDLFile *testSDLFile = [SDLFile fileWithData:[@"someTextData" dataUsingEncoding:NSUTF8StringEncoding] name:testFileName fileExtension:@"bin"]; @@ -946,9 +952,19 @@ fdescribe(@"uploading/deleting multiple files in the file manager", ^{ [testFileManager uploadFiles:testSDLFiles progressHandler:^BOOL(SDLFileName * _Nonnull fileName, float uploadPercentage, NSError * _Nullable error) { numberOfFilesDone++; expect(fileName).to(equal([NSString stringWithFormat:@"TestSmallFilesMemory%ld", numberOfFilesDone-1])); - expect(uploadPercentage).to(beCloseTo(numberOfFilesDone / 5)); - expect(error).toNot(beNil()); - return numberOfFilesDone == 3 ? NO : YES; + expect(uploadPercentage).to(beCloseTo((float)numberOfFilesDone / 5.0)); + + if (numberOfFilesDone <= 3) { + expect(error).to(beNil()); + } else { + expect(error).toNot(beNil()); + } + + if (numberOfFilesDone == 3) { + return NO; + } else { + return YES; + } } completionHandler:^(NSError * _Nullable error) { expect(error).toNot(beNil()); }]; @@ -979,7 +995,7 @@ fdescribe(@"uploading/deleting multiple files in the file manager", ^{ [testFileManager uploadFiles:testSDLFiles progressHandler:^BOOL(SDLFileName * _Nonnull fileName, float uploadPercentage, NSError * _Nullable error) { numberOfFilesDone++; expect(fileName).to(equal([NSString stringWithFormat:@"TestSmallFilesMemory%ld", numberOfFilesDone-1])); - expect(uploadPercentage).to(beCloseTo(numberOfFilesDone / 5)); + expect(uploadPercentage).to(beCloseTo((float)numberOfFilesDone / 5)); expect(error).to(beNil()); return numberOfFilesDone == 5 ? NO : YES; } completionHandler:^(NSError * _Nullable error) { @@ -1022,9 +1038,15 @@ fdescribe(@"uploading/deleting multiple files in the file manager", ^{ [testFileManager uploadFiles:testSDLFiles progressHandler:^BOOL(SDLFileName * _Nonnull fileName, float uploadPercentage, NSError * _Nullable error) { numberOfFilesDone++; expect(fileName).to(equal([NSString stringWithFormat:@"TestSmallFilesMemory%ld", numberOfFilesDone-1])); - expect(uploadPercentage).to(beCloseTo(numberOfFilesDone / 5)); - expect(error).toNot(beNil()); - return numberOfFilesDone == 1 ? NO : YES; + expect(uploadPercentage).to(beCloseTo((float)numberOfFilesDone / 5)); + + if (numberOfFilesDone == 1) { + expect(error).to(beNil()); + } else { + expect(error).toNot(beNil()); + } + + return NO; } completionHandler:^(NSError * _Nullable error) { expect(error).toNot(beNil()); }]; @@ -1045,7 +1067,7 @@ fdescribe(@"uploading/deleting multiple files in the file manager", ^{ for (int i = 5; i < 10; i++) { SDLUploadFileOperation *sentOperation = testFileManager.pendingTransactions[i]; - expect(sentOperation.cancelled).to(beTrue()); + expect(sentOperation.cancelled).to(beFalse()); sentOperation.fileWrapper.completionHandler(YES, newBytesAvailable, nil); } expect(testFileManager.bytesAvailable).to(equal(newBytesAvailable)); @@ -1133,7 +1155,7 @@ fdescribe(@"uploading/deleting multiple files in the file manager", ^{ expect(testFileManager.remoteFileNames).to(haveCount(1)); }); - it(@"should return an error if all files fail to delete", ^{ + fit(@"should return an error if all files fail to delete", ^{ [testFileManager deleteRemoteFilesWithNames:@[@"AA", @"BB", @"CC", @"DD", @"EE", @"FF"] completionHandler:^(NSError * _Nullable error) { expect(error).toNot(beNil()); }]; @@ -1144,7 +1166,7 @@ fdescribe(@"uploading/deleting multiple files in the file manager", ^{ deleteOp.completionHandler(NO, newBytesAvailable, [NSError sdl_fileManager_unableToDelete_ErrorWithUserInfo:@{}]); } - expect(testFileManager.bytesAvailable).to(equal(newBytesAvailable)); + expect(testFileManager.bytesAvailable).to(equal(initialSpaceAvailable)); expect(testFileManager.remoteFileNames).to(haveCount(6)); }); }); |