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