summaryrefslogtreecommitdiff
path: root/core/src/test/java/androidx/documentfile
diff options
context:
space:
mode:
authorHerbert Reiter <46045854+damoasda@users.noreply.github.com>2020-10-25 17:22:36 +0100
committerGitHub <noreply@github.com>2020-10-25 17:22:36 +0100
commit28ebbedbdf34b72b31c536a118bcf5108b3ea7e5 (patch)
tree7365c90ff91414f610d3c4ba3044537e6577eb99 /core/src/test/java/androidx/documentfile
parent41580b57cc06c297615bc3484274859bb0c9c5c1 (diff)
downloadAntennaPod-28ebbedbdf34b72b31c536a118bcf5108b3ea7e5.zip
Local feeds: Unit tests for LocalFeedUpdater (#4551)
Diffstat (limited to 'core/src/test/java/androidx/documentfile')
-rw-r--r--core/src/test/java/androidx/documentfile/provider/AssetsDocumentFile.java138
1 files changed, 138 insertions, 0 deletions
diff --git a/core/src/test/java/androidx/documentfile/provider/AssetsDocumentFile.java b/core/src/test/java/androidx/documentfile/provider/AssetsDocumentFile.java
new file mode 100644
index 000000000..8a8205c10
--- /dev/null
+++ b/core/src/test/java/androidx/documentfile/provider/AssetsDocumentFile.java
@@ -0,0 +1,138 @@
+package androidx.documentfile.provider;
+
+import android.content.res.AssetManager;
+import android.net.Uri;
+import android.webkit.MimeTypeMap;
+
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import java.io.IOException;
+
+/**
+ * <p>Wraps an Android assets file or folder as a DocumentFile object.</p>
+ *
+ * <p>This is used to emulate access to the external storage.</p>
+ */
+public class AssetsDocumentFile extends DocumentFile {
+
+ /**
+ * Absolute file path in the assets folder.
+ */
+ @NonNull
+ private final String fileName;
+
+ @NonNull
+ private final AssetManager assetManager;
+
+ public AssetsDocumentFile(@NonNull String fileName, @NonNull AssetManager assetManager) {
+ super(null);
+ this.fileName = fileName;
+ this.assetManager = assetManager;
+ }
+
+ @Nullable
+ @Override
+ public DocumentFile createFile(@NonNull String mimeType, @NonNull String displayName) {
+ return null;
+ }
+
+ @Nullable
+ @Override
+ public DocumentFile createDirectory(@NonNull String displayName) {
+ return null;
+ }
+
+ @NonNull
+ @Override
+ public Uri getUri() {
+ return Uri.parse(fileName);
+ }
+
+ @Nullable
+ @Override
+ public String getName() {
+ int pos = fileName.indexOf('/');
+ if (pos >= 0) {
+ return fileName.substring(pos + 1);
+ } else {
+ return fileName;
+ }
+ }
+
+ @Nullable
+ @Override
+ public String getType() {
+ String extension = MimeTypeMap.getFileExtensionFromUrl(fileName);
+ return MimeTypeMap.getSingleton().getMimeTypeFromExtension(extension);
+ }
+
+ @Override
+ public boolean isDirectory() {
+ return false;
+ }
+
+ @Override
+ public boolean isFile() {
+ return true;
+ }
+
+ @Override
+ public boolean isVirtual() {
+ return false;
+ }
+
+ @Override
+ public long lastModified() {
+ return 0;
+ }
+
+ @Override
+ public long length() {
+ return 0;
+ }
+
+ @Override
+ public boolean canRead() {
+ return true;
+ }
+
+ @Override
+ public boolean canWrite() {
+ return false;
+ }
+
+ @Override
+ public boolean delete() {
+ return false;
+ }
+
+ @Override
+ public boolean exists() {
+ return true;
+ }
+
+ @NonNull
+ @Override
+ public DocumentFile[] listFiles() {
+ try {
+ String[] files = assetManager.list(fileName);
+ if (files == null) {
+ return new DocumentFile[0];
+ }
+ DocumentFile[] result = new DocumentFile[files.length];
+ for (int i = 0; i < files.length; i++) {
+ String subFileName = fileName + '/' + files[i];
+ result[i] = new AssetsDocumentFile(subFileName, assetManager);
+ }
+ return result;
+ } catch (IOException e) {
+ return new DocumentFile[0];
+ }
+ }
+
+ @Override
+ public boolean renameTo(@NonNull String displayName) {
+ return false;
+ }
+}