1package com.xtremelabs.robolectric.res; 2 3import com.xtremelabs.robolectric.R; 4import com.xtremelabs.robolectric.WithTestDefaultsRunner; 5import org.junit.Before; 6import org.junit.Test; 7import org.junit.runner.RunWith; 8 9import java.io.BufferedReader; 10import java.io.IOException; 11import java.io.InputStream; 12import java.io.InputStreamReader; 13import java.io.Reader; 14import java.io.StringWriter; 15import java.io.Writer; 16 17import static com.xtremelabs.robolectric.util.TestUtil.resourceFile; 18import static org.junit.Assert.assertEquals; 19 20@RunWith(WithTestDefaultsRunner.class) 21public class RawResourceLoaderTest { 22 23 private RawResourceLoader rawResourceLoader; 24 25 @Before public void setUp() throws Exception { 26 ResourceExtractor resourceExtractor = new ResourceExtractor(); 27 resourceExtractor.addLocalRClass(R.class); 28 rawResourceLoader = new RawResourceLoader(resourceExtractor, resourceFile("res")); 29 } 30 31 @Test 32 public void shouldReturnRawResourcesWithExtensions() throws Exception { 33 InputStream is = rawResourceLoader.getValue(R.raw.raw_resource); 34 assertEquals("raw txt file contents", readString(is)); 35 } 36 37 @Test 38 public void shouldReturnRawResourcesWithoutExtensions() throws Exception { 39 InputStream is = rawResourceLoader.getValue(R.raw.raw_no_ext); 40 assertEquals("no ext file contents", readString(is)); 41 } 42 43 private static String readString(InputStream is) throws IOException { 44 Writer writer = new StringWriter(); 45 char[] buffer = new char[1024]; 46 try { 47 Reader reader = new BufferedReader(new InputStreamReader(is, "UTF-8")); 48 int n; 49 while ((n = reader.read(buffer)) != -1) { 50 writer.write(buffer, 0, n); 51 } 52 } finally { 53 is.close(); 54 } 55 return writer.toString(); 56 } 57} 58