• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 package android.app;
2 
3 import static com.google.common.truth.Truth.assertThat;
4 
5 import android.Manifest;
6 import android.content.Context;
7 import android.net.ConnectivityManager;
8 import android.net.Network;
9 import android.os.Build;
10 import androidx.test.core.app.ActivityScenario;
11 import androidx.test.core.app.ApplicationProvider;
12 import androidx.test.ext.junit.runners.AndroidJUnit4;
13 import androidx.test.rule.GrantPermissionRule;
14 import org.junit.Rule;
15 import org.junit.Test;
16 import org.junit.runner.RunWith;
17 import org.robolectric.testapp.TestActivity;
18 
19 /** Compatibility test for {@link ConnectivityManager}. */
20 @RunWith(AndroidJUnit4.class)
21 public class ConnectivityManagerTest {
22 
23   @Rule
24   public GrantPermissionRule mRuntimePermissionRule =
25       GrantPermissionRule.grant(Manifest.permission.ACCESS_NETWORK_STATE);
26 
27   @Test
connectivityManager_applicationInstance_behaviorBasedOnSdkVersion()28   public void connectivityManager_applicationInstance_behaviorBasedOnSdkVersion() {
29     ConnectivityManager applicationConnectivityManager =
30         ApplicationProvider.getApplicationContext().getSystemService(ConnectivityManager.class);
31 
32     try (ActivityScenario<TestActivity> scenario = ActivityScenario.launch(TestActivity.class)) {
33       scenario.onActivity(
34           activity -> {
35             ConnectivityManager activityConnectivityManager =
36                 activity.getSystemService(ConnectivityManager.class);
37 
38             if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.S) {
39               assertThat(applicationConnectivityManager)
40                   .isNotSameInstanceAs(activityConnectivityManager);
41             } else {
42               assertThat(applicationConnectivityManager)
43                   .isSameInstanceAs(activityConnectivityManager);
44             }
45           });
46     }
47   }
48 
49   @Test
connectivityManager_activityInstance_isSameAsActivityInstance()50   public void connectivityManager_activityInstance_isSameAsActivityInstance() {
51     try (ActivityScenario<TestActivity> scenario = ActivityScenario.launch(TestActivity.class)) {
52       scenario.onActivity(
53           activity -> {
54             ConnectivityManager activityConnectivityManager =
55                 (ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);
56             ConnectivityManager anotherActivityConnectivityManager =
57                 (ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);
58             assertThat(anotherActivityConnectivityManager)
59                 .isSameInstanceAs(activityConnectivityManager);
60           });
61     }
62   }
63 
64   @Test
connectivityManager_instance_retrievesSameActiveNetwork()65   public void connectivityManager_instance_retrievesSameActiveNetwork() {
66     ConnectivityManager applicationConnectivityManager =
67         (ConnectivityManager)
68             ApplicationProvider.getApplicationContext()
69                 .getSystemService(Context.CONNECTIVITY_SERVICE);
70     try (ActivityScenario<TestActivity> scenario = ActivityScenario.launch(TestActivity.class)) {
71       scenario.onActivity(
72           activity -> {
73             ConnectivityManager activityConnectivityManager =
74                 (ConnectivityManager) activity.getSystemService(Context.CONNECTIVITY_SERVICE);
75 
76             Network applicationActiveNetwork = applicationConnectivityManager.getActiveNetwork();
77             Network activityActiveNetwork = activityConnectivityManager.getActiveNetwork();
78 
79             assertThat(activityActiveNetwork).isEqualTo(applicationActiveNetwork);
80           });
81     }
82   }
83 }
84