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