1package com.xtremelabs.robolectric.shadows;
2
3import android.content.res.AssetManager;
4import com.xtremelabs.robolectric.internal.Implementation;
5import com.xtremelabs.robolectric.internal.Implements;
6import com.xtremelabs.robolectric.res.ResourceLoader;
7
8import java.io.File;
9import java.io.FileInputStream;
10import java.io.IOException;
11import java.io.InputStream;
12
13import static com.xtremelabs.robolectric.Robolectric.shadowOf;
14
15@SuppressWarnings({"UnusedDeclaration"})
16@Implements(AssetManager.class)
17public final class ShadowAssetManager {
18    static AssetManager bind(AssetManager assetManager, ResourceLoader resourceLoader) {
19        ShadowAssetManager shadowAssetManager = shadowOf(assetManager);
20        if (shadowAssetManager.resourceLoader != null) throw new RuntimeException("ResourceLoader already set!");
21        shadowAssetManager.resourceLoader = resourceLoader;
22        return assetManager;
23    }
24
25    private ResourceLoader resourceLoader;
26
27    @Implementation
28    public final String[] list(String path) throws IOException {
29        File file = new File(resourceLoader.getAssetsBase(), path);
30        if (file.isDirectory()) {
31            return file.list();
32        }
33        return new String[0];
34    }
35
36    @Implementation
37    public final InputStream open(String fileName) throws IOException {
38        return new FileInputStream(new File(resourceLoader.getAssetsBase(), fileName));
39    }
40
41}
42