summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAustin Kirk <askirk@umich.edu>2018-07-20 11:22:09 -0400
committerAustin Kirk <askirk@umich.edu>2018-07-20 11:22:09 -0400
commit74f7fed2a4e93f877f8eda4c8e7107616283dbb6 (patch)
tree52be3ce5c384e8379abd14d19c443495b54e9265
parent09a1efa67168341b9fa3a20663272d9a3744d77e (diff)
downloadsdl_android-74f7fed2a4e93f877f8eda4c8e7107616283dbb6.tar.gz
Add javadocs and modify tests to use Mockito
- Added javadocs to all public methods in FileManager - Refactored tests to use Mockito apis, shrinking overhead and imports
-rw-r--r--sdl_android/build.gradle1
-rw-r--r--sdl_android/src/androidTest/java/com/smartdevicelink/api/FileManagerTests.java635
-rw-r--r--sdl_android/src/main/java/com/smartdevicelink/api/FileManager.java55
3 files changed, 344 insertions, 347 deletions
diff --git a/sdl_android/build.gradle b/sdl_android/build.gradle
index fc29f66ff..d8cdb8baf 100644
--- a/sdl_android/build.gradle
+++ b/sdl_android/build.gradle
@@ -40,6 +40,7 @@ dependencies {
})
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:2.9.0'
+ androidTestImplementation 'org.mockito:mockito-android:2.9.0'
api 'com.android.support:support-annotations:27.1.1'
}
diff --git a/sdl_android/src/androidTest/java/com/smartdevicelink/api/FileManagerTests.java b/sdl_android/src/androidTest/java/com/smartdevicelink/api/FileManagerTests.java
index 6ca39ae37..f6344a44c 100644
--- a/sdl_android/src/androidTest/java/com/smartdevicelink/api/FileManagerTests.java
+++ b/sdl_android/src/androidTest/java/com/smartdevicelink/api/FileManagerTests.java
@@ -4,41 +4,27 @@ import android.content.Context;
import android.net.Uri;
import android.test.AndroidTestCase;
-import com.smartdevicelink.protocol.enums.FunctionID;
-import com.smartdevicelink.protocol.enums.SessionType;
import com.smartdevicelink.proxy.RPCRequest;
-import com.smartdevicelink.proxy.interfaces.IAudioStreamListener;
import com.smartdevicelink.proxy.interfaces.ISdl;
-import com.smartdevicelink.proxy.interfaces.ISdlServiceListener;
-import com.smartdevicelink.proxy.interfaces.IVideoStreamListener;
-import com.smartdevicelink.proxy.interfaces.OnSystemCapabilityListener;
import com.smartdevicelink.proxy.rpc.ListFiles;
import com.smartdevicelink.proxy.rpc.ListFilesResponse;
import com.smartdevicelink.proxy.rpc.PutFile;
import com.smartdevicelink.proxy.rpc.PutFileResponse;
-import com.smartdevicelink.proxy.rpc.SdlMsgVersion;
-import com.smartdevicelink.proxy.rpc.TemplateColorScheme;
-import com.smartdevicelink.proxy.rpc.enums.AppHMIType;
import com.smartdevicelink.proxy.rpc.enums.FileType;
-import com.smartdevicelink.proxy.rpc.enums.Language;
import com.smartdevicelink.proxy.rpc.enums.Result;
-import com.smartdevicelink.proxy.rpc.enums.SystemCapabilityType;
import com.smartdevicelink.proxy.rpc.listeners.OnMultipleRequestListener;
-import com.smartdevicelink.proxy.rpc.listeners.OnRPCNotificationListener;
-import com.smartdevicelink.streaming.audio.AudioStreamingCodec;
-import com.smartdevicelink.streaming.audio.AudioStreamingParams;
-import com.smartdevicelink.streaming.video.VideoStreamingParameters;
import com.smartdevicelink.test.Test;
-import com.smartdevicelink.transport.BaseTransportConfig;
-import com.smartdevicelink.transport.TCPTransportConfig;
-import java.net.URI;
+import org.mockito.invocation.InvocationOnMock;
+import org.mockito.stubbing.Answer;
+
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
-import java.util.Vector;
-import static com.smartdevicelink.api.SdlManagerTests.transport;
+import static org.mockito.ArgumentMatchers.any;
+import static org.mockito.Mockito.doAnswer;
+import static org.mockito.Mockito.mock;
/**
* This is a unit test class for the SmartDeviceLink library manager class :
@@ -50,70 +36,27 @@ public class FileManagerTests extends AndroidTestCase {
private Context mTestContext;
private SdlFile validFile;
- protected class BaseISdl implements ISdl{
- @Override
- public void start() {
-
- }
-
- @Override
- public void stop() {
-
- }
-
- @Override
- public boolean isConnected() {
- return false;
- }
-
- @Override
- public void addServiceListener(SessionType serviceType, ISdlServiceListener sdlServiceListener) {
-
- }
-
- @Override
- public void removeServiceListener(SessionType serviceType, ISdlServiceListener sdlServiceListener) {
-
- }
-
- @Override
- public void startVideoService(VideoStreamingParameters parameters, boolean encrypted) {
-
- }
-
- @Override
- public void stopVideoService() {
-
- }
-
- @Override
- public IVideoStreamListener startVideoStream(boolean isEncrypted, VideoStreamingParameters parameters) {
- return null;
- }
-
- @Override
- public void startAudioService(boolean encrypted, AudioStreamingCodec codec, AudioStreamingParams params) {
-
- }
-
- @Override
- public void startAudioService(boolean encrypted) {
-
- }
-
- @Override
- public void stopAudioService() {
+ // SETUP / HELPERS
- }
+ @Override
+ public void setUp() throws Exception{
+ super.setUp();
+ mTestContext = this.getContext();
+ validFile = new SdlFile();
+ validFile.setName(Test.GENERAL_STRING);
+ validFile.setFileData(Test.GENERAL_BYTE_ARRAY);
+ }
- @Override
- public IAudioStreamListener startAudioStream(boolean isEncrypted, AudioStreamingCodec codec, AudioStreamingParams params) {
- return null;
- }
+ @Override
+ public void tearDown() throws Exception {
+ super.tearDown();
+ }
+ private Answer<Void> onListFilesSuccess = new Answer<Void>() {
@Override
- public void sendRPCRequest(RPCRequest message) {
- // Allow for successful initialization by default
+ public Void answer(InvocationOnMock invocation) {
+ Object[] args = invocation.getArguments();
+ RPCRequest message = (RPCRequest) args[0];
if(message instanceof ListFiles){
int correlationId = message.getCorrelationID();
ListFilesResponse listFilesResponse = new ListFilesResponse();
@@ -122,168 +65,185 @@ public class FileManagerTests extends AndroidTestCase {
listFilesResponse.setSuccess(true);
message.getOnRPCResponseListener().onResponse(correlationId, listFilesResponse);
}
+ return null;
}
+ };
+ private Answer<Void> onListFilesFailure = new Answer<Void>() {
@Override
- public void sendRequests(List<? extends RPCRequest> rpcs, OnMultipleRequestListener listener) {
-
- }
-
- @Override
- public void addOnRPCNotificationListener(FunctionID notificationId, OnRPCNotificationListener listener) {
-
- }
-
- @Override
- public boolean removeOnRPCNotificationListener(FunctionID notificationId, OnRPCNotificationListener listener) {
- return false;
- }
-
- @Override
- public Object getCapability(SystemCapabilityType systemCapabilityType) {
+ public Void answer(InvocationOnMock invocation) {
+ Object[] args = invocation.getArguments();
+ RPCRequest message = (RPCRequest) args[0];
+ if(message instanceof ListFiles){
+ int correlationId = message.getCorrelationID();
+ ListFilesResponse listFilesResponse = new ListFilesResponse();
+ listFilesResponse.setSuccess(false);
+ message.getOnRPCResponseListener().onResponse(correlationId, listFilesResponse);
+ }
return null;
}
+ };
+ private Answer<Void> onPutFileSuccess = new Answer<Void>() {
@Override
- public void getCapability(SystemCapabilityType systemCapabilityType, OnSystemCapabilityListener scListener) {
-
+ public Void answer(InvocationOnMock invocation) {
+ Object[] args = invocation.getArguments();
+ RPCRequest message = (RPCRequest) args[0];
+ if(message instanceof PutFile){
+ int correlationId = message.getCorrelationID();
+ PutFileResponse putFileResponse = new PutFileResponse();
+ putFileResponse.setSuccess(true);
+ message.getOnRPCResponseListener().onResponse(correlationId, putFileResponse);
+ }
+ return null;
}
+ };
+ private Answer<Void> onPutFileFailure = new Answer<Void>() {
@Override
- public boolean isCapabilitySupported(SystemCapabilityType systemCapabilityType) {
- return false;
+ public Void answer(InvocationOnMock invocation) {
+ Object[] args = invocation.getArguments();
+ RPCRequest message = (RPCRequest) args[0];
+ if(message instanceof PutFile){
+ int correlationId = message.getCorrelationID();
+ PutFileResponse putFileResponse = new PutFileResponse();
+ putFileResponse.setSuccess(false);
+ message.getOnRPCResponseListener().onResponse(correlationId, putFileResponse);
+ }
+ return null;
}
+ };
+ private Answer<Void> onSendRequestsSuccess = new Answer<Void>() {
@Override
- public SdlMsgVersion getSdlMsgVersion() {
+ public Void answer(InvocationOnMock invocation) {
+ Object[] args = invocation.getArguments();
+ List<RPCRequest> rpcs = (List<RPCRequest>) args[0];
+ OnMultipleRequestListener listener = (OnMultipleRequestListener) args[1];
+ if(rpcs.get(0) instanceof PutFile){
+ for(RPCRequest message : rpcs){
+ int correlationId = message.getCorrelationID();
+ listener.addCorrelationId(correlationId);
+ PutFileResponse putFileResponse = new PutFileResponse();
+ putFileResponse.setSuccess(true);
+ listener.onResponse(correlationId, putFileResponse);
+ }
+ }
return null;
}
};
- @Override
- public void setUp() throws Exception{
- super.setUp();
- mTestContext = this.getContext();
- validFile = new SdlFile();
- validFile.setName(Test.GENERAL_STRING);
- validFile.setFileData(Test.GENERAL_BYTE_ARRAY);
- }
-
- @Override
- public void tearDown() throws Exception {
- super.tearDown();
- }
-
- // SETUP / HELPERS
-
-
// TESTS
public void testInitializationSuccess(){
- FileManager fileManager = new FileManager(new BaseISdl(), mTestContext);
- while(fileManager.getState() == BaseSubManager.SETTING_UP);
- assertEquals(fileManager.getState(), BaseSubManager.READY);
- assertEquals(fileManager.getRemoteFileNames(), Test.GENERAL_STRING_LIST);
+ ISdl internalInterface = mock(ISdl.class);
+
+ doAnswer(onListFilesSuccess).when(internalInterface).sendRPCRequest(any(ListFiles.class));
+
+ final FileManager fileManager = new FileManager(internalInterface, mTestContext);
+ fileManager.start(new CompletionListener() {
+ @Override
+ public void onComplete(boolean success) {
+ assertTrue(success);
+ assertEquals(fileManager.getState(), BaseSubManager.READY);
+ assertEquals(fileManager.getRemoteFileNames(), Test.GENERAL_STRING_LIST);
+ }
+ });
}
public void testInitializationFailure(){
- class TestISdl extends BaseISdl{
+ ISdl internalInterface = mock(ISdl.class);
+
+ doAnswer(onListFilesFailure).when(internalInterface).sendRPCRequest(any(ListFiles.class));
+
+ final FileManager fileManager = new FileManager(internalInterface, mTestContext);
+ fileManager.start(new CompletionListener() {
@Override
- public void sendRPCRequest(RPCRequest message) {
- if(message instanceof ListFiles){
- int correlationId = message.getCorrelationID();
- ListFilesResponse listFilesResponse = new ListFilesResponse();
- listFilesResponse.setSuccess(false);
- message.getOnRPCResponseListener().onResponse(correlationId, listFilesResponse);
- }
+ public void onComplete(boolean success) {
+ assertFalse(success);
+ assertEquals(fileManager.getState(), BaseSubManager.ERROR);
}
- }
-
- FileManager fileManager = new FileManager(new TestISdl(), mTestContext);
- while(fileManager.getState() == BaseSubManager.SETTING_UP);
- assertEquals(fileManager.getState(), BaseSubManager.ERROR);
+ });
}
public void testFileUploadSuccess(){
- class TestISdl extends BaseISdl{
- @Override
- public void sendRPCRequest(RPCRequest message) {
- super.sendRPCRequest(message);
- if(message instanceof PutFile){
- int correlationId = message.getCorrelationID();
- PutFileResponse putFileResponse = new PutFileResponse();
- putFileResponse.setSuccess(true);
- message.getOnRPCResponseListener().onResponse(correlationId, putFileResponse);
- }
- }
- }
+ ISdl internalInterface = mock(ISdl.class);
- FileManager fileManager = new FileManager(new TestISdl(), mTestContext);
- while(fileManager.getState() == BaseSubManager.SETTING_UP);
+ doAnswer(onListFilesSuccess).when(internalInterface).sendRPCRequest(any(ListFiles.class));
+ doAnswer(onPutFileSuccess).when(internalInterface).sendRPCRequest(any(PutFile.class));
- fileManager.uploadFile(validFile, new CompletionListener() {
+ final FileManager fileManager = new FileManager(internalInterface, mTestContext);
+ fileManager.start(new CompletionListener() {
@Override
public void onComplete(boolean success) {
assertTrue(success);
+ fileManager.uploadFile(validFile, new CompletionListener() {
+ @Override
+ public void onComplete(boolean success) {
+ assertTrue(success);
+ assertTrue(fileManager.getRemoteFileNames().contains(validFile.getName()));
+ }
+ });
}
});
-
- assertTrue(fileManager.getRemoteFileNames().contains(validFile.getName()));
}
public void testFileUploadFailure(){
- class TestISdl extends BaseISdl{
- @Override
- public void sendRPCRequest(RPCRequest message) {
- super.sendRPCRequest(message);
- if(message instanceof PutFile){
- int correlationId = message.getCorrelationID();
- PutFileResponse putFileResponse = new PutFileResponse();
- putFileResponse.setSuccess(false);
- message.getOnRPCResponseListener().onResponse(correlationId, putFileResponse);
- }
- }
- }
+ ISdl internalInterface = mock(ISdl.class);
- FileManager fileManager = new FileManager(new BaseISdl(), mTestContext);
- while(fileManager.getState() == BaseSubManager.SETTING_UP);
+ doAnswer(onListFilesSuccess).when(internalInterface).sendRPCRequest(any(ListFiles.class));
+ doAnswer(onPutFileFailure).when(internalInterface).sendRPCRequest(any(PutFile.class));
- fileManager.uploadFile(validFile, new CompletionListener() {
+ final FileManager fileManager = new FileManager(internalInterface, mTestContext);
+ fileManager.start(new CompletionListener() {
@Override
public void onComplete(boolean success) {
- assertTrue(!success);
+ assertTrue(success);
+ fileManager.uploadFile(validFile, new CompletionListener() {
+ @Override
+ public void onComplete(boolean success) {
+ assertFalse(success);
+ assertFalse(fileManager.getRemoteFileNames().contains(validFile.getName()));
+ }
+ });
}
});
-
- assertTrue(!fileManager.getRemoteFileNames().contains(validFile.getName()));
}
public void testInvalidSdlFileInput(){
- FileManager fileManager = new FileManager(new BaseISdl(), mTestContext);
- while(fileManager.getState() == BaseSubManager.SETTING_UP);
-
- SdlFile sdlFile = new SdlFile();
- // Don't set name
- sdlFile.setFileData(Test.GENERAL_BYTE_ARRAY);
- checkForUploadFailure(fileManager, sdlFile);
-
- sdlFile = new SdlFile();
- sdlFile.setName(Test.GENERAL_STRING);
- // Don't set data
- checkForUploadFailure(fileManager, sdlFile);
-
- sdlFile = new SdlFile();
- sdlFile.setName(Test.GENERAL_STRING);
- // Give an invalid resource ID
- sdlFile.setResourceId(Test.GENERAL_INT);
- checkForUploadFailure(fileManager, sdlFile);
-
- sdlFile = new SdlFile();
- sdlFile.setName(Test.GENERAL_STRING);
- // Set invalid Uri
- Uri testUri = Uri.parse("http://www.google.com");
- sdlFile.setUri(testUri);
- checkForUploadFailure(fileManager, sdlFile);
+ ISdl internalInterface = mock(ISdl.class);
+
+ doAnswer(onListFilesSuccess).when(internalInterface).sendRPCRequest(any(ListFiles.class));
+
+ final FileManager fileManager = new FileManager(internalInterface, mTestContext);
+ fileManager.start(new CompletionListener() {
+ @Override
+ public void onComplete(boolean success) {
+ assertTrue(success);
+ SdlFile sdlFile = new SdlFile();
+ // Don't set name
+ sdlFile.setFileData(Test.GENERAL_BYTE_ARRAY);
+ checkForUploadFailure(fileManager, sdlFile);
+
+ sdlFile = new SdlFile();
+ sdlFile.setName(Test.GENERAL_STRING);
+ // Don't set data
+ checkForUploadFailure(fileManager, sdlFile);
+
+ sdlFile = new SdlFile();
+ sdlFile.setName(Test.GENERAL_STRING);
+ // Give an invalid resource ID
+ sdlFile.setResourceId(Test.GENERAL_INT);
+ checkForUploadFailure(fileManager, sdlFile);
+
+ sdlFile = new SdlFile();
+ sdlFile.setName(Test.GENERAL_STRING);
+ // Set invalid Uri
+ Uri testUri = Uri.parse("http://www.google.com");
+ sdlFile.setUri(testUri);
+ checkForUploadFailure(fileManager, sdlFile);
+ }
+ });
}
private void checkForUploadFailure(FileManager fileManager, SdlFile sdlFile){
@@ -320,67 +280,65 @@ public class FileManagerTests extends AndroidTestCase {
}
public void testMultipleFileUploadSuccess(){
- class TestISdl extends BaseISdl{
- @Override
- public void sendRequests(List<? extends RPCRequest> rpcs, OnMultipleRequestListener listener) {
- super.sendRequests(rpcs, listener);
- if(rpcs.get(0) instanceof PutFile){
- for(RPCRequest message : rpcs){
- int correlationId = message.getCorrelationID();
- listener.addCorrelationId(correlationId);
- PutFileResponse putFileResponse = new PutFileResponse();
- putFileResponse.setSuccess(true);
- listener.onResponse(correlationId, putFileResponse);
- }
- }
- }
- }
+ ISdl internalInterface = mock(ISdl.class);
- FileManager fileManager = new FileManager(new TestISdl(), mTestContext);
- while(fileManager.getState() == BaseSubManager.SETTING_UP);
-
- int fileNum = 1;
- List<SdlFile> filesToUpload = new ArrayList<>();
- SdlFile sdlFile = new SdlFile();
- sdlFile.setName("file" + fileNum++);
- Uri uri = Uri.parse("android.resource://" + mTestContext.getPackageName() + "/drawable/ic_sdl");
- sdlFile.setUri(uri);
- filesToUpload.add(sdlFile);
-
- sdlFile = new SdlFile();
- sdlFile.setName("file" + fileNum++);
- sdlFile.setResourceId(com.smartdevicelink.test.R.drawable.ic_sdl);
- filesToUpload.add(sdlFile);
-
- sdlFile = new SdlFile();
- sdlFile.setName("file" + fileNum++);
- sdlFile.setFileData(Test.GENERAL_BYTE_ARRAY);
- sdlFile.setPersistent(true);
- sdlFile.setType(FileType.BINARY);
- filesToUpload.add(sdlFile);
-
- fileManager.uploadFiles(filesToUpload,
- new MultipleFileCompletionListener() {
- @Override
- public void onComplete(Map<String, String> errors) {
- assertNull(errors);
- }
- });
+ doAnswer(onListFilesSuccess).when(internalInterface).sendRPCRequest(any(ListFiles.class));
+ doAnswer(onSendRequestsSuccess).when(internalInterface).sendRequests(any(List.class), any(OnMultipleRequestListener.class));
- List < String > uploadedFileNames = fileManager.getRemoteFileNames();
- for(SdlFile file : filesToUpload){
- assertTrue(uploadedFileNames.contains(file.getName()));
- }
+ final FileManager fileManager = new FileManager(internalInterface, mTestContext);
+ fileManager.start(new CompletionListener() {
+ @Override
+ public void onComplete(boolean success) {
+ assertTrue(success);
+ int fileNum = 1;
+ final List<SdlFile> filesToUpload = new ArrayList<>();
+ SdlFile sdlFile = new SdlFile();
+ sdlFile.setName("file" + fileNum++);
+ Uri uri = Uri.parse("android.resource://" + mTestContext.getPackageName() + "/drawable/ic_sdl");
+ sdlFile.setUri(uri);
+ filesToUpload.add(sdlFile);
+
+ sdlFile = new SdlFile();
+ sdlFile.setName("file" + fileNum++);
+ sdlFile.setResourceId(com.smartdevicelink.test.R.drawable.ic_sdl);
+ filesToUpload.add(sdlFile);
+
+ sdlFile = new SdlFile();
+ sdlFile.setName("file" + fileNum++);
+ sdlFile.setFileData(Test.GENERAL_BYTE_ARRAY);
+ sdlFile.setPersistent(true);
+ sdlFile.setType(FileType.BINARY);
+ filesToUpload.add(sdlFile);
+
+ fileManager.uploadFiles(filesToUpload,
+ new MultipleFileCompletionListener() {
+ @Override
+ public void onComplete(Map<String, String> errors) {
+ assertNull(errors);
+ List < String > uploadedFileNames = fileManager.getRemoteFileNames();
+ for(SdlFile file : filesToUpload){
+ assertTrue(uploadedFileNames.contains(file.getName()));
+ }
+ }
+ });
+ }
+ });
}
public void testMultipleFileUploadPartialFailure(){
final String failureReason = "No space available";
- class TestISdl extends BaseISdl{
- private int responseNum = 0;
+ ISdl internalInterface = mock(ISdl.class);
+ doAnswer(onListFilesSuccess).when(internalInterface).sendRPCRequest(any(ListFiles.class));
+
+ Answer<Void> onSendRequestsFailure = new Answer<Void>() {
+ private int responseNum = 0;
@Override
- public void sendRequests(List<? extends RPCRequest> rpcs, OnMultipleRequestListener listener) {
+ public Void answer(InvocationOnMock invocation) {
+ Object[] args = invocation.getArguments();
+ List<RPCRequest> rpcs = (List<RPCRequest>) args[0];
+ OnMultipleRequestListener listener = (OnMultipleRequestListener) args[1];
if(rpcs.get(0) instanceof PutFile){
for(RPCRequest message : rpcs){
int correlationId = message.getCorrelationID();
@@ -394,107 +352,104 @@ public class FileManagerTests extends AndroidTestCase {
}
}
}
+ return null;
}
- }
+ };
+ doAnswer(onSendRequestsFailure).when(internalInterface).sendRequests(any(List.class), any(OnMultipleRequestListener.class));
- FileManager fileManager = new FileManager(new TestISdl(), mTestContext);
- while(fileManager.getState() == BaseSubManager.SETTING_UP);
-
- final String baseFileName = "file";
- int fileNum = 0;
- final List<SdlFile> filesToUpload = new ArrayList<>();
- SdlFile sdlFile = new SdlFile();
- sdlFile.setName(baseFileName + fileNum++);
- Uri uri = Uri.parse("android.resource://" + mTestContext.getPackageName() + "/drawable/ic_sdl");
- sdlFile.setUri(uri);
- filesToUpload.add(sdlFile);
-
- sdlFile = new SdlFile();
- sdlFile.setName(baseFileName + fileNum++);
- sdlFile.setResourceId(com.smartdevicelink.test.R.drawable.ic_sdl);
- filesToUpload.add(sdlFile);
-
- sdlFile = new SdlFile();
- sdlFile.setName(baseFileName + fileNum++);
- sdlFile.setFileData(Test.GENERAL_BYTE_ARRAY);
- sdlFile.setPersistent(true);
- sdlFile.setType(FileType.BINARY);
- filesToUpload.add(sdlFile);
-
- fileManager.uploadFiles(filesToUpload,
- new MultipleFileCompletionListener() {
- @Override
- public void onComplete(Map<String, String> errors) {
- assertNotNull(errors);
- for(int i = 0; i < filesToUpload.size(); i++){
- if(i % 2 == 0){
- assertTrue(errors.containsKey(filesToUpload.get(i).getName()));
- assertEquals(FileManager.buildErrorString(Result.OUT_OF_MEMORY,
- failureReason), errors.get(filesToUpload.get(i).getName()));
- }else{
- assertFalse(errors.containsKey(filesToUpload.get(i).getName()));
+ final FileManager fileManager = new FileManager(internalInterface, mTestContext);
+ fileManager.start(new CompletionListener() {
+ @Override
+ public void onComplete(boolean success) {
+ assertTrue(success);
+ final String baseFileName = "file";
+ int fileNum = 0;
+ final List<SdlFile> filesToUpload = new ArrayList<>();
+ SdlFile sdlFile = new SdlFile();
+ sdlFile.setName(baseFileName + fileNum++);
+ Uri uri = Uri.parse("android.resource://" + mTestContext.getPackageName() + "/drawable/ic_sdl");
+ sdlFile.setUri(uri);
+ filesToUpload.add(sdlFile);
+
+ sdlFile = new SdlFile();
+ sdlFile.setName(baseFileName + fileNum++);
+ sdlFile.setResourceId(com.smartdevicelink.test.R.drawable.ic_sdl);
+ filesToUpload.add(sdlFile);
+
+ sdlFile = new SdlFile();
+ sdlFile.setName(baseFileName + fileNum++);
+ sdlFile.setFileData(Test.GENERAL_BYTE_ARRAY);
+ sdlFile.setPersistent(true);
+ sdlFile.setType(FileType.BINARY);
+ filesToUpload.add(sdlFile);
+
+ fileManager.uploadFiles(filesToUpload,
+ new MultipleFileCompletionListener() {
+ @Override
+ public void onComplete(Map<String, String> errors) {
+ assertNotNull(errors);
+ for(int i = 0; i < filesToUpload.size(); i++){
+ if(i % 2 == 0){
+ assertTrue(errors.containsKey(filesToUpload.get(i).getName()));
+ assertEquals(FileManager.buildErrorString(Result.OUT_OF_MEMORY,
+ failureReason), errors.get(filesToUpload.get(i).getName()));
+ }else{
+ assertFalse(errors.containsKey(filesToUpload.get(i).getName()));
+ }
+ }
+ List <String> uploadedFileNames = fileManager.getRemoteFileNames();
+ for(int i = 0; i < filesToUpload.size(); i++){
+ if(i % 2 == 0){
+ assertFalse(uploadedFileNames.contains(filesToUpload.get(i).getName()));
+ }else{
+ assertTrue(uploadedFileNames.contains(filesToUpload.get(i).getName()));
+ }
+ }
}
- }
- }
- });
-
- List <String> uploadedFileNames = fileManager.getRemoteFileNames();
- for(int i = 0; i < filesToUpload.size(); i++){
- if(i % 2 == 0){
- assertFalse(uploadedFileNames.contains(filesToUpload.get(i).getName()));
- }else{
- assertTrue(uploadedFileNames.contains(filesToUpload.get(i).getName()));
+ });
}
- }
+ });
}
public void testMultipleArtworkUploadSuccess(){
- class TestISdl extends BaseISdl{
- @Override
- public void sendRequests(List<? extends RPCRequest> rpcs, OnMultipleRequestListener listener) {
- super.sendRequests(rpcs, listener);
- if(rpcs.get(0) instanceof PutFile){
- for(RPCRequest message : rpcs){
- int correlationId = message.getCorrelationID();
- listener.addCorrelationId(correlationId);
- PutFileResponse putFileResponse = new PutFileResponse();
- putFileResponse.setSuccess(true);
- listener.onResponse(correlationId, putFileResponse);
- }
- }
- }
- }
+ ISdl internalInterface = mock(ISdl.class);
- FileManager fileManager = new FileManager(new TestISdl(), mTestContext);
- while(fileManager.getState() == BaseSubManager.SETTING_UP);
+ doAnswer(onListFilesSuccess).when(internalInterface).sendRPCRequest(any(ListFiles.class));
+ doAnswer(onSendRequestsSuccess).when(internalInterface).sendRequests(any(List.class), any(OnMultipleRequestListener.class));
- int fileNum = 1;
- List<SdlArtwork> artworkToUpload = new ArrayList<>();
- SdlArtwork sdlArtwork = new SdlArtwork();
- sdlArtwork.setName("art" + fileNum++);
- Uri uri = Uri.parse("android.resource://" + mTestContext.getPackageName() + "/drawable/ic_sdl");
- sdlArtwork.setUri(uri);
- sdlArtwork.setType(FileType.GRAPHIC_PNG);
- artworkToUpload.add(sdlArtwork);
-
- sdlArtwork = new SdlArtwork();
- sdlArtwork.setName("art" + fileNum++);
- uri = Uri.parse("android.resource://" + mTestContext.getPackageName() + "/drawable/sdl_tray_icon");
- sdlArtwork.setUri(uri);
- sdlArtwork.setType(FileType.GRAPHIC_PNG);
- artworkToUpload.add(sdlArtwork);
-
- fileManager.uploadFiles(artworkToUpload,
- new MultipleFileCompletionListener() {
- @Override
- public void onComplete(Map<String, String> errors) {
- assertNull(errors);
- }
- });
-
- List < String > uploadedFileNames = fileManager.getRemoteFileNames();
- for(SdlArtwork artwork : artworkToUpload){
- assertTrue(uploadedFileNames.contains(artwork.getName()));
- }
+ final FileManager fileManager = new FileManager(internalInterface, mTestContext);
+ fileManager.start(new CompletionListener() {
+ @Override
+ public void onComplete(boolean success) {
+ assertTrue(success);
+ int fileNum = 1;
+ final List<SdlArtwork> artworkToUpload = new ArrayList<>();
+ SdlArtwork sdlArtwork = new SdlArtwork();
+ sdlArtwork.setName("art" + fileNum++);
+ Uri uri = Uri.parse("android.resource://" + mTestContext.getPackageName() + "/drawable/ic_sdl");
+ sdlArtwork.setUri(uri);
+ sdlArtwork.setType(FileType.GRAPHIC_PNG);
+ artworkToUpload.add(sdlArtwork);
+
+ sdlArtwork = new SdlArtwork();
+ sdlArtwork.setName("art" + fileNum++);
+ uri = Uri.parse("android.resource://" + mTestContext.getPackageName() + "/drawable/sdl_tray_icon");
+ sdlArtwork.setUri(uri);
+ sdlArtwork.setType(FileType.GRAPHIC_PNG);
+ artworkToUpload.add(sdlArtwork);
+
+ fileManager.uploadFiles(artworkToUpload,
+ new MultipleFileCompletionListener() {
+ @Override
+ public void onComplete(Map<String, String> errors) {
+ assertNull(errors);
+ List < String > uploadedFileNames = fileManager.getRemoteFileNames();
+ for(SdlArtwork artwork : artworkToUpload){
+ assertTrue(uploadedFileNames.contains(artwork.getName()));
+ }
+ }
+ });
+ }
+ });
}
} \ No newline at end of file
diff --git a/sdl_android/src/main/java/com/smartdevicelink/api/FileManager.java b/sdl_android/src/main/java/com/smartdevicelink/api/FileManager.java
index ecbf31ce6..1b512e4e9 100644
--- a/sdl_android/src/main/java/com/smartdevicelink/api/FileManager.java
+++ b/sdl_android/src/main/java/com/smartdevicelink/api/FileManager.java
@@ -3,7 +3,6 @@ package com.smartdevicelink.api;
import android.content.Context;
import android.content.res.Resources;
import android.net.Uri;
-import android.support.annotation.NonNull;
import android.util.Log;
import android.util.SparseArray;
@@ -11,14 +10,11 @@ import com.smartdevicelink.proxy.RPCRequest;
import com.smartdevicelink.proxy.RPCResponse;
import com.smartdevicelink.proxy.interfaces.ISdl;
import com.smartdevicelink.proxy.rpc.DeleteFile;
-import com.smartdevicelink.proxy.rpc.DeleteFileResponse;
-import com.smartdevicelink.proxy.rpc.Image;
import com.smartdevicelink.proxy.rpc.ListFiles;
import com.smartdevicelink.proxy.rpc.ListFilesResponse;
import com.smartdevicelink.proxy.rpc.PutFile;
import com.smartdevicelink.proxy.rpc.enums.Result;
import com.smartdevicelink.proxy.rpc.listeners.OnMultipleRequestListener;
-import com.smartdevicelink.proxy.rpc.listeners.OnPutFileUpdateListener;
import com.smartdevicelink.proxy.rpc.listeners.OnRPCResponseListener;
import java.io.ByteArrayOutputStream;
@@ -63,6 +59,10 @@ public class FileManager extends BaseSubManager {
// GETTERS
+ /**
+ * Returns a list of file names currently residing on core
+ * @return List<String> of remote file names
+ */
public List<String> getRemoteFileNames() {
if (getState() != BaseSubManager.READY){
// error and dont return list
@@ -96,6 +96,11 @@ public class FileManager extends BaseSubManager {
// DELETION
+ /**
+ * Attempts to delete the desired file from core, calls listener with indication of success/failure
+ * @param fileName name of file to be deleted
+ * @param listener callback that is called on response from core
+ */
public void deleteRemoteFileWithName(final String fileName, final CompletionListener listener){
if(fileName == null){
return;
@@ -114,6 +119,11 @@ public class FileManager extends BaseSubManager {
internalInterface.sendRPCRequest(deleteFile);
}
+ /**
+ * Attempts to delete a list of files from core, calls listener with indication of success/failure
+ * @param fileNames list of file names to be deleted
+ * @param listener callback that is called once core responds to all deletion requests
+ */
public void deleteRemoteFilesWithNames(List<String> fileNames, final MultipleFileCompletionListener listener){
if(fileNames == null || fileNames.isEmpty()){
return;
@@ -237,6 +247,11 @@ public class FileManager extends BaseSubManager {
});
}
+ /**
+ * Attempts to upload a SdlFile to core
+ * @param file SdlFile with file name and one of A) fileData, B) Uri, or C) resourceID set
+ * @param listener called when core responds to the attempt to upload the file
+ */
public void uploadFile(final SdlFile file, final CompletionListener listener){
PutFile putFile = createPutFile(file);
@@ -259,6 +274,11 @@ public class FileManager extends BaseSubManager {
internalInterface.sendRPCRequest(putFile);
}
+ /**
+ * Attempts to upload a list of SdlFiles to core
+ * @param files list of SdlFiles with file name and one of A) fileData, B) Uri, or C) resourceID set
+ * @param listener callback that is called once core responds to all upload requests
+ */
public void uploadFiles(List<? extends SdlFile> files, final MultipleFileCompletionListener listener){
if(files == null || files.isEmpty()){
return;
@@ -270,24 +290,40 @@ public class FileManager extends BaseSubManager {
sendMultipleFileOperations(putFileRequests, listener);
}
+ /**
+ * Attempts to upload a SdlArtwork to core
+ * @param file SdlArtwork with file name and one of A) fileData, B) Uri, or C) resourceID set
+ * @param listener called when core responds to the attempt to upload the file
+ */
public void uploadArtwork(final SdlArtwork file, final CompletionListener listener){
uploadFile(file, listener);
}
+ /**
+ * Attempts to upload a list of SdlArtworks to core
+ * @param files list of SdlArtworks with file name and one of A) fileData, B) Uri, or C) resourceID set
+ * @param listener callback that is called once core responds to all upload requests
+ */
public void uploadArtworks(List<SdlArtwork> files, final MultipleFileCompletionListener listener){
uploadFiles(files, listener);
}
// HELPERS
+ /**
+ * Builds an error string for a given Result and info string
+ * @param resultCode Result
+ * @param info String returned from OnRPCRequestListener.onError()
+ * @return Error string
+ */
static public String buildErrorString(Result resultCode, String info){
return resultCode.toString() + " : " + info;
}
/**
* Helper method to take resource files and turn them into byte arrays
- * @param resource Resource file id.
- * @return Resulting byte array.
+ * @param resource Resource file id
+ * @return Resulting byte array
*/
private byte[] contentsOfResource(int resource) {
InputStream is = null;
@@ -311,7 +347,7 @@ public class FileManager extends BaseSubManager {
/**
* Helper method to take Uri and turn it into byte array
* @param uri Uri for desired file
- * @return Resulting byte array.
+ * @return Resulting byte array
*/
private byte[] contentsOfUri(Uri uri){
InputStream is = null;
@@ -332,6 +368,11 @@ public class FileManager extends BaseSubManager {
}
}
+ /**
+ * Helper method to take InputStream and turn it into byte array
+ * @param is valid InputStream
+ * @return Resulting byte array
+ */
private byte[] contentsOfInputStream(InputStream is){
if(is == null){
return null;