Home | History | Annotate | Download | only in shadows
      1 package com.xtremelabs.robolectric.shadows;
      2 
      3 import android.webkit.MimeTypeMap;
      4 import com.xtremelabs.robolectric.Robolectric;
      5 import com.xtremelabs.robolectric.WithTestDefaultsRunner;
      6 import org.junit.Test;
      7 import org.junit.runner.RunWith;
      8 
      9 import static com.xtremelabs.robolectric.Robolectric.shadowOf;
     10 import static org.junit.Assert.*;
     11 
     12 @RunWith(WithTestDefaultsRunner.class)
     13 public class MimeTypeMapTest {
     14 
     15     private static final String IMAGE_EXTENSION = "jpg";
     16     private static final String VIDEO_EXTENSION = "mp4";
     17     private static final String VIDEO_MIMETYPE = "video/mp4";
     18     private static final String IMAGE_MIMETYPE = "image/jpeg";
     19 
     20     @Test
     21     public void shouldResetStaticStateBetweenTests() throws Exception {
     22         assertFalse(MimeTypeMap.getSingleton().hasExtension(VIDEO_EXTENSION));
     23         shadowOf(MimeTypeMap.getSingleton()).addExtensionMimeTypMapping(VIDEO_EXTENSION, VIDEO_MIMETYPE);
     24     }
     25 
     26     @Test
     27     public void shouldResetStaticStateBetweenTests_anotherTime() throws Exception {
     28         assertFalse(MimeTypeMap.getSingleton().hasExtension(VIDEO_EXTENSION));
     29         shadowOf(MimeTypeMap.getSingleton()).addExtensionMimeTypMapping(VIDEO_EXTENSION, VIDEO_MIMETYPE);
     30     }
     31 
     32     @Test
     33     public void getSingletonShouldAlwaysReturnSameInstance() {
     34         MimeTypeMap firstInstance = MimeTypeMap.getSingleton();
     35         MimeTypeMap secondInstance = MimeTypeMap.getSingleton();
     36 
     37         assertSame(firstInstance, secondInstance);
     38     }
     39 
     40     @Test
     41     public void byDefaultThereShouldBeNoMapping() {
     42         assertFalse(MimeTypeMap.getSingleton().hasExtension(VIDEO_EXTENSION));
     43         assertFalse(MimeTypeMap.getSingleton().hasExtension(IMAGE_EXTENSION));
     44     }
     45 
     46     @Test
     47     public void addingMappingShouldWorkCorrectly() {
     48         ShadowMimeTypeMap shadowMimeTypeMap = Robolectric.shadowOf(MimeTypeMap.getSingleton());
     49         shadowMimeTypeMap.addExtensionMimeTypMapping(VIDEO_EXTENSION, VIDEO_MIMETYPE);
     50         shadowMimeTypeMap.addExtensionMimeTypMapping(IMAGE_EXTENSION, IMAGE_MIMETYPE);
     51 
     52         assertTrue(MimeTypeMap.getSingleton().hasExtension(VIDEO_EXTENSION));
     53         assertTrue(MimeTypeMap.getSingleton().hasExtension(IMAGE_EXTENSION));
     54         assertTrue(MimeTypeMap.getSingleton().hasMimeType(VIDEO_MIMETYPE));
     55         assertTrue(MimeTypeMap.getSingleton().hasMimeType(IMAGE_MIMETYPE));
     56 
     57         assertEquals(IMAGE_EXTENSION, MimeTypeMap.getSingleton().getExtensionFromMimeType(IMAGE_MIMETYPE));
     58         assertEquals(VIDEO_EXTENSION, MimeTypeMap.getSingleton().getExtensionFromMimeType(VIDEO_MIMETYPE));
     59 
     60         assertEquals(IMAGE_MIMETYPE, MimeTypeMap.getSingleton().getMimeTypeFromExtension(IMAGE_EXTENSION));
     61         assertEquals(VIDEO_MIMETYPE, MimeTypeMap.getSingleton().getMimeTypeFromExtension(VIDEO_EXTENSION));
     62     }
     63 
     64     @Test
     65     public void clearMappingsShouldRemoveAllMappings() {
     66         ShadowMimeTypeMap shadowMimeTypeMap = Robolectric.shadowOf(MimeTypeMap.getSingleton());
     67         shadowMimeTypeMap.addExtensionMimeTypMapping(VIDEO_EXTENSION, VIDEO_MIMETYPE);
     68         shadowMimeTypeMap.addExtensionMimeTypMapping(IMAGE_EXTENSION, IMAGE_MIMETYPE);
     69 
     70         shadowMimeTypeMap.clearMappings();
     71 
     72         assertFalse(MimeTypeMap.getSingleton().hasExtension(VIDEO_EXTENSION));
     73         assertFalse(MimeTypeMap.getSingleton().hasExtension(IMAGE_EXTENSION));
     74         assertFalse(MimeTypeMap.getSingleton().hasMimeType(VIDEO_MIMETYPE));
     75         assertFalse(MimeTypeMap.getSingleton().hasExtension(IMAGE_MIMETYPE));
     76     }
     77 
     78     @Test
     79     public void unknownExtensionShouldProvideNothing() {
     80         ShadowMimeTypeMap shadowMimeTypeMap = Robolectric.shadowOf(MimeTypeMap.getSingleton());
     81         shadowMimeTypeMap.addExtensionMimeTypMapping(VIDEO_EXTENSION, VIDEO_MIMETYPE);
     82         shadowMimeTypeMap.addExtensionMimeTypMapping(IMAGE_EXTENSION, IMAGE_MIMETYPE);
     83 
     84         assertFalse(MimeTypeMap.getSingleton().hasExtension("foo"));
     85         assertNull(MimeTypeMap.getSingleton().getMimeTypeFromExtension("foo"));
     86     }
     87 
     88     @Test
     89     public void unknownMimeTypeShouldProvideNothing() {
     90         ShadowMimeTypeMap shadowMimeTypeMap = Robolectric.shadowOf(MimeTypeMap.getSingleton());
     91         shadowMimeTypeMap.addExtensionMimeTypMapping(VIDEO_EXTENSION, VIDEO_MIMETYPE);
     92         shadowMimeTypeMap.addExtensionMimeTypMapping(IMAGE_EXTENSION, IMAGE_MIMETYPE);
     93 
     94         assertFalse(MimeTypeMap.getSingleton().hasMimeType("foo/bar"));
     95         assertNull(MimeTypeMap.getSingleton().getExtensionFromMimeType("foo/bar"));
     96     }
     97 }
     98