1114296321cba71f8133713306049ce3b411e8563Gonçalo Silvapackage com.xtremelabs.robolectric.shadows;
2114296321cba71f8133713306049ce3b411e8563Gonçalo Silva
324f155944b10583afd970905e5dbe0acdfc9e0efPhil Goodwin & Tyler Schultzimport android.content.res.AssetManager;
422c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.Implementation;
522c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.Implements;
6a6ff2c2b15018092af3a28697b521d1ca5e789f0Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.res.ResourceLoader;
724f155944b10583afd970905e5dbe0acdfc9e0efPhil Goodwin & Tyler Schultz
870a3ec81f0bda52d8388facf562a80e2d16ac96fGonçalo Silvaimport java.io.File;
970a3ec81f0bda52d8388facf562a80e2d16ac96fGonçalo Silvaimport java.io.FileInputStream;
1070a3ec81f0bda52d8388facf562a80e2d16ac96fGonçalo Silvaimport java.io.IOException;
11114296321cba71f8133713306049ce3b411e8563Gonçalo Silvaimport java.io.InputStream;
12114296321cba71f8133713306049ce3b411e8563Gonçalo Silva
13a6ff2c2b15018092af3a28697b521d1ca5e789f0Christian Williams & Phil Goodwinimport static com.xtremelabs.robolectric.Robolectric.shadowOf;
14a6ff2c2b15018092af3a28697b521d1ca5e789f0Christian Williams & Phil Goodwin
15aaa7d31659e6d07e55640723a4af3afa06298641Christian Williams@SuppressWarnings({"UnusedDeclaration"})
16114296321cba71f8133713306049ce3b411e8563Gonçalo Silva@Implements(AssetManager.class)
17114296321cba71f8133713306049ce3b411e8563Gonçalo Silvapublic final class ShadowAssetManager {
18a6ff2c2b15018092af3a28697b521d1ca5e789f0Christian Williams & Phil Goodwin    static AssetManager bind(AssetManager assetManager, ResourceLoader resourceLoader) {
19a6ff2c2b15018092af3a28697b521d1ca5e789f0Christian Williams & Phil Goodwin        ShadowAssetManager shadowAssetManager = shadowOf(assetManager);
20a6ff2c2b15018092af3a28697b521d1ca5e789f0Christian Williams & Phil Goodwin        if (shadowAssetManager.resourceLoader != null) throw new RuntimeException("ResourceLoader already set!");
21a6ff2c2b15018092af3a28697b521d1ca5e789f0Christian Williams & Phil Goodwin        shadowAssetManager.resourceLoader = resourceLoader;
22a6ff2c2b15018092af3a28697b521d1ca5e789f0Christian Williams & Phil Goodwin        return assetManager;
23a6ff2c2b15018092af3a28697b521d1ca5e789f0Christian Williams & Phil Goodwin    }
24a6ff2c2b15018092af3a28697b521d1ca5e789f0Christian Williams & Phil Goodwin
25a6ff2c2b15018092af3a28697b521d1ca5e789f0Christian Williams & Phil Goodwin    private ResourceLoader resourceLoader;
26a6ff2c2b15018092af3a28697b521d1ca5e789f0Christian Williams & Phil Goodwin
2724f155944b10583afd970905e5dbe0acdfc9e0efPhil Goodwin & Tyler Schultz    @Implementation
2824f155944b10583afd970905e5dbe0acdfc9e0efPhil Goodwin & Tyler Schultz    public final String[] list(String path) throws IOException {
29da894fe66d2b23ea8dd2d81aca697e1d0fb4f2a3Glenn Jahnke & Lenny Turetsky        File file = new File(resourceLoader.getAssetsBase(), path);
30da894fe66d2b23ea8dd2d81aca697e1d0fb4f2a3Glenn Jahnke & Lenny Turetsky        if (file.isDirectory()) {
31da894fe66d2b23ea8dd2d81aca697e1d0fb4f2a3Glenn Jahnke & Lenny Turetsky            return file.list();
32da894fe66d2b23ea8dd2d81aca697e1d0fb4f2a3Glenn Jahnke & Lenny Turetsky        }
33da894fe66d2b23ea8dd2d81aca697e1d0fb4f2a3Glenn Jahnke & Lenny Turetsky        return new String[0];
3424f155944b10583afd970905e5dbe0acdfc9e0efPhil Goodwin & Tyler Schultz    }
3524f155944b10583afd970905e5dbe0acdfc9e0efPhil Goodwin & Tyler Schultz
3624f155944b10583afd970905e5dbe0acdfc9e0efPhil Goodwin & Tyler Schultz    @Implementation
3724f155944b10583afd970905e5dbe0acdfc9e0efPhil Goodwin & Tyler Schultz    public final InputStream open(String fileName) throws IOException {
38a6ff2c2b15018092af3a28697b521d1ca5e789f0Christian Williams & Phil Goodwin        return new FileInputStream(new File(resourceLoader.getAssetsBase(), fileName));
3924f155944b10583afd970905e5dbe0acdfc9e0efPhil Goodwin & Tyler Schultz    }
40a6ff2c2b15018092af3a28697b521d1ca5e789f0Christian Williams & Phil Goodwin
41114296321cba71f8133713306049ce3b411e8563Gonçalo Silva}
42