| package com.xtremelabs.robolectric; |
| |
| import org.junit.Test; |
| import org.junit.runner.RunWith; |
| |
| import android.content.BroadcastReceiver; |
| import android.content.Context; |
| import android.content.Intent; |
| |
| import static android.content.pm.ApplicationInfo.*; |
| import static com.xtremelabs.robolectric.util.TestUtil.newConfig; |
| import static org.junit.Assert.assertEquals; |
| import static org.junit.Assert.assertTrue; |
| |
| @RunWith(WithTestDefaultsRunner.class) |
| public class RobolectricConfigTest { |
| @Test |
| public void shouldReadBroadcastReceivers() throws Exception { |
| RobolectricConfig config = newConfig("TestAndroidManifestWithReceivers.xml"); |
| |
| assertEquals(7, config.getReceiverCount()); |
| |
| assertEquals("com.xtremelabs.robolectric.RobolectricConfigTest.ConfigTestReceiver", config.getReceiverClassName(0)); |
| assertEquals("com.xtremelabs.robolectric.ACTION1", config.getReceiverIntentFilterActions(0).get(0)); |
| |
| assertEquals("com.xtremelabs.robolectric.RobolectricConfigTest.ConfigTestReceiver", config.getReceiverClassName(1)); |
| assertEquals("com.xtremelabs.robolectric.ACTION2", config.getReceiverIntentFilterActions(1).get(0)); |
| |
| assertEquals("com.xtremelabs.robolectric.test.ConfigTestReceiver", config.getReceiverClassName(2)); |
| assertEquals("com.xtremelabs.robolectric.ACTION_SUPERSET_PACKAGE", config.getReceiverIntentFilterActions(2).get(0)); |
| |
| assertEquals("com.xtremelabs.ConfigTestReceiver", config.getReceiverClassName(3)); |
| assertEquals("com.xtremelabs.robolectric.ACTION_SUBSET_PACKAGE", config.getReceiverIntentFilterActions(3).get(0)); |
| |
| assertEquals("com.xtremelabs.robolectric.DotConfigTestReceiver", config.getReceiverClassName(4)); |
| assertEquals("com.xtremelabs.robolectric.ACTION_DOT_PACKAGE", config.getReceiverIntentFilterActions(4).get(0)); |
| |
| assertEquals("com.xtremelabs.robolectric.test.ConfigTestReceiver", config.getReceiverClassName(5)); |
| assertEquals("com.xtremelabs.robolectric.ACTION_DOT_SUBPACKAGE", config.getReceiverIntentFilterActions(5).get(0)); |
| |
| assertEquals("com.foo.Receiver", config.getReceiverClassName(6)); |
| assertEquals("com.xtremelabs.robolectric.ACTION_DIFFERENT_PACKAGE", config.getReceiverIntentFilterActions(6).get(0)); |
| } |
| |
| @Test |
| public void shouldReadSdkVersionFromAndroidManifest() throws Exception { |
| assertEquals(42, newConfig("TestAndroidManifestWithSdkVersion.xml").getSdkVersion()); |
| assertEquals(3, newConfig("TestAndroidManifestWithSdkVersion.xml").getMinSdkVersion()); |
| } |
| |
| @Test |
| public void shouldRessolveSdkVersionForResources() throws Exception { |
| assertEquals(3, newConfig("TestAndroidManifestWithMinSdkVersionOnly.xml").getRealSdkVersion()); |
| assertEquals(42, newConfig("TestAndroidManifestWithSdkVersion.xml").getRealSdkVersion()); |
| } |
| |
| @Test |
| public void shouldReadProcessFromAndroidManifest() throws Exception { |
| assertEquals("robolectricprocess", newConfig("TestAndroidManifestWithProcess.xml").getProcessName()); |
| } |
| |
| @Test |
| public void shouldReturnPackageNameWhenNoProcessIsSpecifiedInTheManifest() { |
| assertEquals("com.xtremelabs.robolectric", newConfig("TestAndroidManifestWithNoProcess.xml").getProcessName()); |
| } |
| |
| @Test |
| public void shouldReadFlagsFromAndroidManifest() throws Exception { |
| RobolectricConfig config = newConfig("TestAndroidManifestWithFlags.xml"); |
| assertTrue(hasFlag(config.getApplicationFlags(), FLAG_ALLOW_BACKUP)); |
| assertTrue(hasFlag(config.getApplicationFlags(), FLAG_ALLOW_CLEAR_USER_DATA)); |
| assertTrue(hasFlag(config.getApplicationFlags(), FLAG_ALLOW_TASK_REPARENTING)); |
| assertTrue(hasFlag(config.getApplicationFlags(), FLAG_DEBUGGABLE)); |
| assertTrue(hasFlag(config.getApplicationFlags(), FLAG_HAS_CODE)); |
| assertTrue(hasFlag(config.getApplicationFlags(), FLAG_KILL_AFTER_RESTORE)); |
| assertTrue(hasFlag(config.getApplicationFlags(), FLAG_PERSISTENT)); |
| assertTrue(hasFlag(config.getApplicationFlags(), FLAG_RESIZEABLE_FOR_SCREENS)); |
| assertTrue(hasFlag(config.getApplicationFlags(), FLAG_RESTORE_ANY_VERSION)); |
| assertTrue(hasFlag(config.getApplicationFlags(), FLAG_SUPPORTS_LARGE_SCREENS)); |
| assertTrue(hasFlag(config.getApplicationFlags(), FLAG_SUPPORTS_NORMAL_SCREENS)); |
| assertTrue(hasFlag(config.getApplicationFlags(), FLAG_SUPPORTS_SCREEN_DENSITIES)); |
| assertTrue(hasFlag(config.getApplicationFlags(), FLAG_SUPPORTS_SMALL_SCREENS)); |
| assertTrue(hasFlag(config.getApplicationFlags(), FLAG_TEST_ONLY)); |
| assertTrue(hasFlag(config.getApplicationFlags(), FLAG_VM_SAFE_MODE)); |
| } |
| |
| private boolean hasFlag(final int flags, final int flag) { |
| return (flags & flag) != 0; |
| } |
| |
| public static class ConfigTestReceiver extends BroadcastReceiver { |
| @Override |
| public void onReceive(Context context, Intent intent) { |
| } |
| } |
| } |