Home | History | Annotate | Download | only in shadows
      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