Home | History | Annotate | Download | only in robolectric
      1 package com.xtremelabs.robolectric;
      2 
      3 import org.junit.Test;
      4 import org.junit.runner.RunWith;
      5 
      6 import android.content.BroadcastReceiver;
      7 import android.content.Context;
      8 import android.content.Intent;
      9 
     10 import static android.content.pm.ApplicationInfo.*;
     11 import static com.xtremelabs.robolectric.util.TestUtil.newConfig;
     12 import static org.junit.Assert.assertEquals;
     13 import static org.junit.Assert.assertTrue;
     14 
     15 @RunWith(WithTestDefaultsRunner.class)
     16 public class RobolectricConfigTest {
     17     @Test
     18     public void shouldReadBroadcastReceivers() throws Exception {
     19         RobolectricConfig config = newConfig("TestAndroidManifestWithReceivers.xml");
     20 
     21         assertEquals(7, config.getReceiverCount());
     22 
     23         assertEquals("com.xtremelabs.robolectric.RobolectricConfigTest.ConfigTestReceiver", config.getReceiverClassName(0));
     24         assertEquals("com.xtremelabs.robolectric.ACTION1", config.getReceiverIntentFilterActions(0).get(0));
     25 
     26         assertEquals("com.xtremelabs.robolectric.RobolectricConfigTest.ConfigTestReceiver", config.getReceiverClassName(1));
     27         assertEquals("com.xtremelabs.robolectric.ACTION2", config.getReceiverIntentFilterActions(1).get(0));
     28 
     29         assertEquals("com.xtremelabs.robolectric.test.ConfigTestReceiver", config.getReceiverClassName(2));
     30         assertEquals("com.xtremelabs.robolectric.ACTION_SUPERSET_PACKAGE", config.getReceiverIntentFilterActions(2).get(0));
     31 
     32         assertEquals("com.xtremelabs.ConfigTestReceiver", config.getReceiverClassName(3));
     33         assertEquals("com.xtremelabs.robolectric.ACTION_SUBSET_PACKAGE", config.getReceiverIntentFilterActions(3).get(0));
     34 
     35         assertEquals("com.xtremelabs.robolectric.DotConfigTestReceiver", config.getReceiverClassName(4));
     36         assertEquals("com.xtremelabs.robolectric.ACTION_DOT_PACKAGE", config.getReceiverIntentFilterActions(4).get(0));
     37 
     38         assertEquals("com.xtremelabs.robolectric.test.ConfigTestReceiver", config.getReceiverClassName(5));
     39         assertEquals("com.xtremelabs.robolectric.ACTION_DOT_SUBPACKAGE", config.getReceiverIntentFilterActions(5).get(0));
     40 
     41         assertEquals("com.foo.Receiver", config.getReceiverClassName(6));
     42         assertEquals("com.xtremelabs.robolectric.ACTION_DIFFERENT_PACKAGE", config.getReceiverIntentFilterActions(6).get(0));
     43     }
     44 
     45     @Test
     46     public void shouldReadSdkVersionFromAndroidManifest() throws Exception {
     47         assertEquals(42, newConfig("TestAndroidManifestWithSdkVersion.xml").getSdkVersion());
     48         assertEquals(3, newConfig("TestAndroidManifestWithSdkVersion.xml").getMinSdkVersion());
     49     }
     50 
     51     @Test
     52     public void shouldRessolveSdkVersionForResources() throws Exception {
     53         assertEquals(3, newConfig("TestAndroidManifestWithMinSdkVersionOnly.xml").getRealSdkVersion());
     54         assertEquals(42, newConfig("TestAndroidManifestWithSdkVersion.xml").getRealSdkVersion());
     55     }
     56 
     57     @Test
     58     public void shouldReadProcessFromAndroidManifest() throws Exception {
     59     	assertEquals("robolectricprocess", newConfig("TestAndroidManifestWithProcess.xml").getProcessName());
     60     }
     61 
     62     @Test
     63     public void shouldReturnPackageNameWhenNoProcessIsSpecifiedInTheManifest() {
     64     	assertEquals("com.xtremelabs.robolectric", newConfig("TestAndroidManifestWithNoProcess.xml").getProcessName());
     65     }
     66 
     67     @Test
     68     public void shouldReadFlagsFromAndroidManifest() throws Exception {
     69         RobolectricConfig config = newConfig("TestAndroidManifestWithFlags.xml");
     70         assertTrue(hasFlag(config.getApplicationFlags(), FLAG_ALLOW_BACKUP));
     71         assertTrue(hasFlag(config.getApplicationFlags(), FLAG_ALLOW_CLEAR_USER_DATA));
     72         assertTrue(hasFlag(config.getApplicationFlags(), FLAG_ALLOW_TASK_REPARENTING));
     73         assertTrue(hasFlag(config.getApplicationFlags(), FLAG_DEBUGGABLE));
     74         assertTrue(hasFlag(config.getApplicationFlags(), FLAG_HAS_CODE));
     75         assertTrue(hasFlag(config.getApplicationFlags(), FLAG_KILL_AFTER_RESTORE));
     76         assertTrue(hasFlag(config.getApplicationFlags(), FLAG_PERSISTENT));
     77         assertTrue(hasFlag(config.getApplicationFlags(), FLAG_RESIZEABLE_FOR_SCREENS));
     78         assertTrue(hasFlag(config.getApplicationFlags(), FLAG_RESTORE_ANY_VERSION));
     79         assertTrue(hasFlag(config.getApplicationFlags(), FLAG_SUPPORTS_LARGE_SCREENS));
     80         assertTrue(hasFlag(config.getApplicationFlags(), FLAG_SUPPORTS_NORMAL_SCREENS));
     81         assertTrue(hasFlag(config.getApplicationFlags(), FLAG_SUPPORTS_SCREEN_DENSITIES));
     82         assertTrue(hasFlag(config.getApplicationFlags(), FLAG_SUPPORTS_SMALL_SCREENS));
     83         assertTrue(hasFlag(config.getApplicationFlags(), FLAG_TEST_ONLY));
     84         assertTrue(hasFlag(config.getApplicationFlags(), FLAG_VM_SAFE_MODE));
     85     }
     86 
     87     private boolean hasFlag(final int flags, final int flag) {
     88     	return (flags & flag) != 0;
     89     }
     90 
     91     public static class ConfigTestReceiver extends BroadcastReceiver {
     92         @Override
     93         public void onReceive(Context context, Intent intent) {
     94         }
     95     }
     96 }
     97