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