package com.mercandalli.android.apps.files.file.local.provider;
import android.content.Context;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.test.espresso.Espresso;
import android.support.test.espresso.idling.CountingIdlingResource;
import android.util.Log;
import java.util.List;
/**
* Block espresso with {@link CountingIdlingResource} during load.
*/
/* package */
class FileLocalProviderManagerTest extends FileLocalProviderManager {
private static final String TAG = "FileLocalProvManTest";
private final FileLocalProviderManager mFileLocalProviderManager;
private final CountingIdlingResource mCountingIdlingResource;
/**
* The manager constructor.
*
* @param contextApp The {@link Context} of this application.
*/
public FileLocalProviderManagerTest(Context contextApp) {
mFileLocalProviderManager = new FileLocalProviderManagerImpl(contextApp);
mCountingIdlingResource = new CountingIdlingResource(TAG + "#load", true);
Espresso.registerIdlingResources(mCountingIdlingResource);
mFileLocalProviderManager.registerFileProviderListener(new FileProviderListener() {
@Override
public void onFileProviderReloadStarted() {
super.onFileProviderReloadStarted();
}
@Override
protected void onFileProviderAllBasicLoaded(@NonNull final List<String> filePaths) {
decrement();
super.onFileProviderAllBasicLoaded(filePaths);
}
@Override
public void onFileProviderAudioLoaded(@NonNull final List<String> fileAudioPaths) {
super.onFileProviderAudioLoaded(fileAudioPaths);
}
@Override
protected void onFileProviderImageLoaded(@NonNull final List<String> fileImagePaths) {
super.onFileProviderImageLoaded(fileImagePaths);
}
@Override
protected void onFileProviderFailed(@LoadingError int error) {
decrement();
super.onFileProviderFailed(error);
}
private void decrement() {
mCountingIdlingResource.decrement();
Log.d(TAG, "decrement");
}
});
}
@Override
public void load() {
if (mCountingIdlingResource.isIdleNow()) {
mCountingIdlingResource.increment();
Log.d(TAG, "increment load");
}
mFileLocalProviderManager.load();
}
@Override
public void load(@Nullable FileProviderListener fileProviderListener) {
if (mCountingIdlingResource.isIdleNow()) {
mCountingIdlingResource.increment();
Log.d(TAG, "increment load");
}
mFileLocalProviderManager.load(fileProviderListener);
}
@NonNull
@Override
public List<String> getFilePaths() {
return mFileLocalProviderManager.getFilePaths();
}
@Override
public void getFilePaths(GetFilePathsListener getFilePathsListener) {
mFileLocalProviderManager.getFilePaths(getFilePathsListener);
}
@Override
public void removeGetFilePathsListener(final GetFilePathsListener getFilePathsListener) {
mFileLocalProviderManager.removeGetFilePathsListener(getFilePathsListener);
}
@Override
public void getFileAudioPaths(GetFileAudioListener getFileAudioListener) {
mFileLocalProviderManager.getFileAudioPaths(getFileAudioListener);
}
@Override
public void removeGetFileAudioListener(final GetFileAudioListener getFileAudioListener) {
mFileLocalProviderManager.removeGetFileAudioListener(getFileAudioListener);
}
@Override
public void getFileImagePaths(GetFileImageListener getFileImageListener) {
mFileLocalProviderManager.getFileImagePaths(getFileImageListener);
}
@Override
public void removeGetFileImageListener(final GetFileImageListener getFileImageListener) {
mFileLocalProviderManager.removeGetFileImageListener(getFileImageListener);
}
@Override
public void getFileVideoPaths(final GetFileVideoListener getFileVideoListener) {
mFileLocalProviderManager.getFileVideoPaths(getFileVideoListener);
}
@Override
public void removeGetFileVideoListener(final GetFileVideoListener getFileVideoListener) {
mFileLocalProviderManager.removeGetFileVideoListener(getFileVideoListener);
}
@Override
public boolean registerFileProviderListener(FileProviderListener fileProviderListener) {
return mFileLocalProviderManager.registerFileProviderListener(fileProviderListener);
}
@Override
public boolean unregisterFileProviderListener(FileProviderListener fileProviderListener) {
return mFileLocalProviderManager.unregisterFileProviderListener(fileProviderListener);
}
@Override
public void clearCache() {
mFileLocalProviderManager.clearCache();
}
}