1package com.xtremelabs.robolectric;
2
3import android.app.Application;
4import com.xtremelabs.robolectric.shadows.ShadowApplication;
5import org.junit.Test;
6import org.junit.runner.RunWith;
7
8import java.util.List;
9
10import static com.xtremelabs.robolectric.Robolectric.shadowOf;
11import static com.xtremelabs.robolectric.util.TestUtil.newConfig;
12import static org.junit.Assert.assertEquals;
13import static org.junit.Assert.assertTrue;
14
15@RunWith(WithTestDefaultsRunner.class)
16public class ApplicationResolverTest {
17
18    @Test(expected = RuntimeException.class)
19    public void shouldThrowWhenManifestContainsBadApplicationClassName() throws Exception {
20        new ApplicationResolver(newConfig("TestAndroidManifestWithBadAppName.xml")).resolveApplication();
21    }
22
23    @Test
24    public void shouldReturnDefaultAndroidApplicationWhenManifestDeclaresNoAppName() throws Exception {
25        assertEquals(Application.class,
26                new ApplicationResolver(newConfig("TestAndroidManifest.xml")).resolveApplication().getClass());
27    }
28
29    @Test
30    public void shouldReturnSpecifiedApplicationWhenManifestDeclaresAppName() throws Exception {
31        assertEquals(TestApplication.class,
32                new ApplicationResolver(newConfig("TestAndroidManifestWithAppName.xml")).resolveApplication().getClass());
33    }
34
35    @Test
36    public void shouldAssignThePackageNameFromTheManifest() throws Exception {
37        Application application = new ApplicationResolver(newConfig("TestAndroidManifestWithPackageName.xml")).resolveApplication();
38        assertEquals("com.wacka.wa", application.getPackageName());
39    }
40
41    @Test
42    public void shouldAssignTheApplicationNameFromTheManifest() throws Exception {
43        Application application = new ApplicationResolver(newConfig("TestAndroidManifestWithAppName.xml")).resolveApplication();
44        assertEquals("com.xtremelabs.robolectric.TestApplication", application.getApplicationInfo().name);
45    }
46
47    @Test
48    public void shouldRegisterReceiversFromTheManifest() throws Exception {
49        Application application = new ApplicationResolver(newConfig("TestAndroidManifestWithReceivers.xml")).resolveApplication();
50        List<ShadowApplication.Wrapper> receivers = shadowOf(application).getRegisteredReceivers();
51        assertEquals(7, receivers.size());
52        assertTrue(receivers.get(0).intentFilter.matchAction("com.xtremelabs.robolectric.ACTION1"));
53    }
54}
55