blob: 154fd45bfc014c3e756b5ab01a9759f989be9d9e [file] [log] [blame]
package com.xtremelabs.robolectric.shadows;
import android.webkit.MimeTypeMap;
import com.xtremelabs.robolectric.Robolectric;
import com.xtremelabs.robolectric.WithTestDefaultsRunner;
import org.junit.Test;
import org.junit.runner.RunWith;
import static com.xtremelabs.robolectric.Robolectric.shadowOf;
import static org.junit.Assert.*;
@RunWith(WithTestDefaultsRunner.class)
public class MimeTypeMapTest {
private static final String IMAGE_EXTENSION = "jpg";
private static final String VIDEO_EXTENSION = "mp4";
private static final String VIDEO_MIMETYPE = "video/mp4";
private static final String IMAGE_MIMETYPE = "image/jpeg";
@Test
public void shouldResetStaticStateBetweenTests() throws Exception {
assertFalse(MimeTypeMap.getSingleton().hasExtension(VIDEO_EXTENSION));
shadowOf(MimeTypeMap.getSingleton()).addExtensionMimeTypMapping(VIDEO_EXTENSION, VIDEO_MIMETYPE);
}
@Test
public void shouldResetStaticStateBetweenTests_anotherTime() throws Exception {
assertFalse(MimeTypeMap.getSingleton().hasExtension(VIDEO_EXTENSION));
shadowOf(MimeTypeMap.getSingleton()).addExtensionMimeTypMapping(VIDEO_EXTENSION, VIDEO_MIMETYPE);
}
@Test
public void getSingletonShouldAlwaysReturnSameInstance() {
MimeTypeMap firstInstance = MimeTypeMap.getSingleton();
MimeTypeMap secondInstance = MimeTypeMap.getSingleton();
assertSame(firstInstance, secondInstance);
}
@Test
public void byDefaultThereShouldBeNoMapping() {
assertFalse(MimeTypeMap.getSingleton().hasExtension(VIDEO_EXTENSION));
assertFalse(MimeTypeMap.getSingleton().hasExtension(IMAGE_EXTENSION));
}
@Test
public void addingMappingShouldWorkCorrectly() {
ShadowMimeTypeMap shadowMimeTypeMap = Robolectric.shadowOf(MimeTypeMap.getSingleton());
shadowMimeTypeMap.addExtensionMimeTypMapping(VIDEO_EXTENSION, VIDEO_MIMETYPE);
shadowMimeTypeMap.addExtensionMimeTypMapping(IMAGE_EXTENSION, IMAGE_MIMETYPE);
assertTrue(MimeTypeMap.getSingleton().hasExtension(VIDEO_EXTENSION));
assertTrue(MimeTypeMap.getSingleton().hasExtension(IMAGE_EXTENSION));
assertTrue(MimeTypeMap.getSingleton().hasMimeType(VIDEO_MIMETYPE));
assertTrue(MimeTypeMap.getSingleton().hasMimeType(IMAGE_MIMETYPE));
assertEquals(IMAGE_EXTENSION, MimeTypeMap.getSingleton().getExtensionFromMimeType(IMAGE_MIMETYPE));
assertEquals(VIDEO_EXTENSION, MimeTypeMap.getSingleton().getExtensionFromMimeType(VIDEO_MIMETYPE));
assertEquals(IMAGE_MIMETYPE, MimeTypeMap.getSingleton().getMimeTypeFromExtension(IMAGE_EXTENSION));
assertEquals(VIDEO_MIMETYPE, MimeTypeMap.getSingleton().getMimeTypeFromExtension(VIDEO_EXTENSION));
}
@Test
public void clearMappingsShouldRemoveAllMappings() {
ShadowMimeTypeMap shadowMimeTypeMap = Robolectric.shadowOf(MimeTypeMap.getSingleton());
shadowMimeTypeMap.addExtensionMimeTypMapping(VIDEO_EXTENSION, VIDEO_MIMETYPE);
shadowMimeTypeMap.addExtensionMimeTypMapping(IMAGE_EXTENSION, IMAGE_MIMETYPE);
shadowMimeTypeMap.clearMappings();
assertFalse(MimeTypeMap.getSingleton().hasExtension(VIDEO_EXTENSION));
assertFalse(MimeTypeMap.getSingleton().hasExtension(IMAGE_EXTENSION));
assertFalse(MimeTypeMap.getSingleton().hasMimeType(VIDEO_MIMETYPE));
assertFalse(MimeTypeMap.getSingleton().hasExtension(IMAGE_MIMETYPE));
}
@Test
public void unknownExtensionShouldProvideNothing() {
ShadowMimeTypeMap shadowMimeTypeMap = Robolectric.shadowOf(MimeTypeMap.getSingleton());
shadowMimeTypeMap.addExtensionMimeTypMapping(VIDEO_EXTENSION, VIDEO_MIMETYPE);
shadowMimeTypeMap.addExtensionMimeTypMapping(IMAGE_EXTENSION, IMAGE_MIMETYPE);
assertFalse(MimeTypeMap.getSingleton().hasExtension("foo"));
assertNull(MimeTypeMap.getSingleton().getMimeTypeFromExtension("foo"));
}
@Test
public void unknownMimeTypeShouldProvideNothing() {
ShadowMimeTypeMap shadowMimeTypeMap = Robolectric.shadowOf(MimeTypeMap.getSingleton());
shadowMimeTypeMap.addExtensionMimeTypMapping(VIDEO_EXTENSION, VIDEO_MIMETYPE);
shadowMimeTypeMap.addExtensionMimeTypMapping(IMAGE_EXTENSION, IMAGE_MIMETYPE);
assertFalse(MimeTypeMap.getSingleton().hasMimeType("foo/bar"));
assertNull(MimeTypeMap.getSingleton().getExtensionFromMimeType("foo/bar"));
}
}