Implement Environment.getExternalStoragePublicDirectory and add some missing tests
diff --git a/src/main/java/com/xtremelabs/robolectric/shadows/ShadowEnvironment.java b/src/main/java/com/xtremelabs/robolectric/shadows/ShadowEnvironment.java
index e56ada1..27d49b7 100644
--- a/src/main/java/com/xtremelabs/robolectric/shadows/ShadowEnvironment.java
+++ b/src/main/java/com/xtremelabs/robolectric/shadows/ShadowEnvironment.java
@@ -24,7 +24,14 @@
@Implementation
public static File getExternalStorageDirectory() {
+ ShadowContext.EXTERNAL_CACHE_DIR.mkdirs();
return ShadowContext.EXTERNAL_CACHE_DIR;
}
+ @Implementation
+ public static File getExternalStoragePublicDirectory(String type) {
+ File f = (type == null) ? ShadowContext.EXTERNAL_FILES_DIR : new File( ShadowContext.EXTERNAL_FILES_DIR, type );
+ f.mkdirs();
+ return f;
+ }
}
diff --git a/src/test/java/com/xtremelabs/robolectric/shadows/EnvironmentTest.java b/src/test/java/com/xtremelabs/robolectric/shadows/EnvironmentTest.java
new file mode 100644
index 0000000..fa5376a
--- /dev/null
+++ b/src/test/java/com/xtremelabs/robolectric/shadows/EnvironmentTest.java
@@ -0,0 +1,56 @@
+package com.xtremelabs.robolectric.shadows;
+
+import static org.junit.Assert.*;
+
+import java.io.File;
+
+import org.junit.After;
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import android.os.Environment;
+
+import com.xtremelabs.robolectric.WithTestDefaultsRunner;
+
+import static org.hamcrest.CoreMatchers.equalTo;
+
+@RunWith(WithTestDefaultsRunner.class)
+public class EnvironmentTest {
+
+ @After
+ public void tearDown() throws Exception {
+ deleteDir(ShadowContext.EXTERNAL_CACHE_DIR);
+ deleteDir(ShadowContext.EXTERNAL_FILES_DIR);
+ ShadowEnvironment.setExternalStorageState("removed");
+ }
+
+ @Test
+ public void testExternalStorageState() {
+ assertThat( Environment.getExternalStorageState(), equalTo("removed") );
+ ShadowEnvironment.setExternalStorageState("mounted");
+ assertThat( Environment.getExternalStorageState(), equalTo("mounted") );
+ }
+
+ @Test
+ public void testGetExternalStorageDirectory() {
+ assertTrue(Environment.getExternalStorageDirectory().exists());
+ }
+
+ @Test
+ public void testGetExternalStoragePublicDirectory() {
+ File extStoragePublic = Environment.getExternalStoragePublicDirectory("Movies");
+ assertTrue(extStoragePublic.exists());
+ assertThat(extStoragePublic, equalTo( new File(ShadowContext.EXTERNAL_FILES_DIR, "Movies" ) ) );
+ }
+
+ public void deleteDir(File path) {
+ if (path.isDirectory()) {
+ File[] files = path.listFiles();
+ for (File f : files) {
+ deleteDir(f);
+ }
+ }
+ path.delete();
+ }
+
+}