1 package com.xtremelabs.robolectric.shadows; 2 3 import android.app.Activity; 4 import android.content.res.AssetManager; 5 import com.xtremelabs.robolectric.Robolectric; 6 import com.xtremelabs.robolectric.WithTestDefaultsRunner; 7 import com.xtremelabs.robolectric.util.Strings; 8 import org.junit.Before; 9 import org.junit.Test; 10 import org.junit.runner.RunWith; 11 12 import java.io.IOException; 13 import java.io.InputStream; 14 import java.util.Arrays; 15 import java.util.List; 16 17 import static org.junit.Assert.*; 18 19 @RunWith(WithTestDefaultsRunner.class) 20 public class AssetManagerTest { 21 AssetManager assetManager; 22 String sp = System.getProperty("file.separator"); 23 24 @Before 25 public void setUp() throws Exception { 26 assetManager = new Activity().getAssets(); 27 } 28 29 @Test 30 public void assertGetAssetsNotNull() { 31 assertNotNull(assetManager); 32 33 assetManager = Robolectric.application.getAssets(); 34 assertNotNull(assetManager); 35 36 assetManager = Robolectric.application.getResources().getAssets(); 37 assertNotNull(assetManager); 38 } 39 40 @Test 41 public void assetsPathListing() throws IOException { 42 List<String> files; 43 String testPath; 44 45 testPath = ""; 46 files = Arrays.asList(assetManager.list(testPath)); 47 assertTrue(files.contains("docs")); 48 assertTrue(files.contains("assetsHome.txt")); 49 50 testPath = "docs"; 51 files = Arrays.asList(assetManager.list(testPath)); 52 assertTrue(files.contains("extra")); 53 54 testPath = "docs" + sp + "extra"; 55 files = Arrays.asList(assetManager.list(testPath)); 56 assertTrue(files.contains("testing")); 57 58 testPath = "docs" + sp + "extra" + sp + "testing"; 59 files = Arrays.asList(assetManager.list(testPath)); 60 assertTrue(files.contains("hello.txt")); 61 62 testPath = "assetsHome.txt"; 63 files = Arrays.asList(assetManager.list(testPath)); 64 assertFalse(files.contains(testPath)); 65 66 testPath = "bogus.file"; 67 files = Arrays.asList(assetManager.list(testPath)); 68 assertEquals(0, files.size()); 69 } 70 71 @Test 72 public void assetsInputStreams() throws IOException { 73 String testPath; 74 String fileContents; 75 InputStream inputStream; 76 77 testPath = "assetsHome.txt"; 78 inputStream = assetManager.open(testPath); 79 fileContents = Strings.fromStream(inputStream); 80 assertEquals("assetsHome!", fileContents); 81 82 testPath = "docs" + sp + "extra" + sp + "testing" + sp + "hello.txt"; 83 inputStream = assetManager.open(testPath); 84 fileContents = Strings.fromStream(inputStream); 85 assertEquals("hello!", fileContents); 86 } 87 } 88