1114296321cba71f8133713306049ce3b411e8563Gonçalo Silvapackage com.xtremelabs.robolectric.shadows;
2114296321cba71f8133713306049ce3b411e8563Gonçalo Silva
324f155944b10583afd970905e5dbe0acdfc9e0efPhil Goodwin & Tyler Schultzimport android.app.Activity;
424f155944b10583afd970905e5dbe0acdfc9e0efPhil Goodwin & Tyler Schultzimport android.content.res.AssetManager;
524f155944b10583afd970905e5dbe0acdfc9e0efPhil Goodwin & Tyler Schultzimport com.xtremelabs.robolectric.Robolectric;
624f155944b10583afd970905e5dbe0acdfc9e0efPhil Goodwin & Tyler Schultzimport com.xtremelabs.robolectric.WithTestDefaultsRunner;
724f155944b10583afd970905e5dbe0acdfc9e0efPhil Goodwin & Tyler Schultzimport com.xtremelabs.robolectric.util.Strings;
824f155944b10583afd970905e5dbe0acdfc9e0efPhil Goodwin & Tyler Schultzimport org.junit.Before;
924f155944b10583afd970905e5dbe0acdfc9e0efPhil Goodwin & Tyler Schultzimport org.junit.Test;
1024f155944b10583afd970905e5dbe0acdfc9e0efPhil Goodwin & Tyler Schultzimport org.junit.runner.RunWith;
1170a3ec81f0bda52d8388facf562a80e2d16ac96fGonçalo Silva
1270a3ec81f0bda52d8388facf562a80e2d16ac96fGonçalo Silvaimport java.io.IOException;
1370a3ec81f0bda52d8388facf562a80e2d16ac96fGonçalo Silvaimport java.io.InputStream;
1470a3ec81f0bda52d8388facf562a80e2d16ac96fGonçalo Silvaimport java.util.Arrays;
1570a3ec81f0bda52d8388facf562a80e2d16ac96fGonçalo Silvaimport java.util.List;
16114296321cba71f8133713306049ce3b411e8563Gonçalo Silva
171a214aab83930db97856ba5c78bb65f7aabf209eGlenn Jahnke & Phil Goodwinimport static org.junit.Assert.*;
18114296321cba71f8133713306049ce3b411e8563Gonçalo Silva
19114296321cba71f8133713306049ce3b411e8563Gonçalo Silva@RunWith(WithTestDefaultsRunner.class)
20114296321cba71f8133713306049ce3b411e8563Gonçalo Silvapublic class AssetManagerTest {
2140c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams    AssetManager assetManager;
2240c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams    String sp = System.getProperty("file.separator");
23114296321cba71f8133713306049ce3b411e8563Gonçalo Silva
24a6ff2c2b15018092af3a28697b521d1ca5e789f0Christian Williams & Phil Goodwin    @Before
25a6ff2c2b15018092af3a28697b521d1ca5e789f0Christian Williams & Phil Goodwin    public void setUp() throws Exception {
26a6ff2c2b15018092af3a28697b521d1ca5e789f0Christian Williams & Phil Goodwin        assetManager = new Activity().getAssets();
27a6ff2c2b15018092af3a28697b521d1ca5e789f0Christian Williams & Phil Goodwin    }
2870a3ec81f0bda52d8388facf562a80e2d16ac96fGonçalo Silva
29a6ff2c2b15018092af3a28697b521d1ca5e789f0Christian Williams & Phil Goodwin    @Test
3040c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams    public void assertGetAssetsNotNull() {
3140c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assertNotNull(assetManager);
3240c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
3340c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assetManager = Robolectric.application.getAssets();
3440c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assertNotNull(assetManager);
3540c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
3640c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assetManager = Robolectric.application.getResources().getAssets();
3740c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assertNotNull(assetManager);
3840c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams    }
3940c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
4040c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams    @Test
4140c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams    public void assetsPathListing() throws IOException {
4240c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        List<String> files;
4340c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        String testPath;
4440c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
4540c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        testPath = "";
4640c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        files = Arrays.asList(assetManager.list(testPath));
4740c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assertTrue(files.contains("docs"));
4840c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assertTrue(files.contains("assetsHome.txt"));
4940c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
5040c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        testPath = "docs";
5140c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        files = Arrays.asList(assetManager.list(testPath));
5240c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assertTrue(files.contains("extra"));
5340c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
5440c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        testPath = "docs" + sp + "extra";
5540c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        files = Arrays.asList(assetManager.list(testPath));
5640c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assertTrue(files.contains("testing"));
5740c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
5840c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        testPath = "docs" + sp + "extra" + sp + "testing";
5940c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        files = Arrays.asList(assetManager.list(testPath));
6040c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assertTrue(files.contains("hello.txt"));
61da894fe66d2b23ea8dd2d81aca697e1d0fb4f2a3Glenn Jahnke & Lenny Turetsky
62da894fe66d2b23ea8dd2d81aca697e1d0fb4f2a3Glenn Jahnke & Lenny Turetsky        testPath = "assetsHome.txt";
63da894fe66d2b23ea8dd2d81aca697e1d0fb4f2a3Glenn Jahnke & Lenny Turetsky        files = Arrays.asList(assetManager.list(testPath));
641a214aab83930db97856ba5c78bb65f7aabf209eGlenn Jahnke & Phil Goodwin        assertFalse(files.contains(testPath));
65da894fe66d2b23ea8dd2d81aca697e1d0fb4f2a3Glenn Jahnke & Lenny Turetsky
66da894fe66d2b23ea8dd2d81aca697e1d0fb4f2a3Glenn Jahnke & Lenny Turetsky        testPath = "bogus.file";
67da894fe66d2b23ea8dd2d81aca697e1d0fb4f2a3Glenn Jahnke & Lenny Turetsky        files = Arrays.asList(assetManager.list(testPath));
68da894fe66d2b23ea8dd2d81aca697e1d0fb4f2a3Glenn Jahnke & Lenny Turetsky        assertEquals(0, files.size());
6940c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams    }
7040c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
7140c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams    @Test
7240c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams    public void assetsInputStreams() throws IOException {
7340c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        String testPath;
7440c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        String fileContents;
7540c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        InputStream inputStream;
7640c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
7740c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        testPath = "assetsHome.txt";
7840c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        inputStream = assetManager.open(testPath);
7940c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        fileContents = Strings.fromStream(inputStream);
8040c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assertEquals("assetsHome!", fileContents);
8140c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams
8240c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        testPath = "docs" + sp + "extra" + sp + "testing" + sp + "hello.txt";
8340c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        inputStream = assetManager.open(testPath);
8440c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        fileContents = Strings.fromStream(inputStream);
8540c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams        assertEquals("hello!", fileContents);
8640c6251719cccc0a84ae99c976d2836b14374ce6Christian Williams    }
87114296321cba71f8133713306049ce3b411e8563Gonçalo Silva}
88