aboutsummaryrefslogtreecommitdiff
path: root/robolectric/src/test/java/org/robolectric/shadows/ShadowConnectivityManagerTest.java
diff options
context:
space:
mode:
Diffstat (limited to 'robolectric/src/test/java/org/robolectric/shadows/ShadowConnectivityManagerTest.java')
-rw-r--r--robolectric/src/test/java/org/robolectric/shadows/ShadowConnectivityManagerTest.java40
1 files changed, 40 insertions, 0 deletions
diff --git a/robolectric/src/test/java/org/robolectric/shadows/ShadowConnectivityManagerTest.java b/robolectric/src/test/java/org/robolectric/shadows/ShadowConnectivityManagerTest.java
index dd8da17b1..b224e4dfb 100644
--- a/robolectric/src/test/java/org/robolectric/shadows/ShadowConnectivityManagerTest.java
+++ b/robolectric/src/test/java/org/robolectric/shadows/ShadowConnectivityManagerTest.java
@@ -10,12 +10,15 @@ import static android.os.Build.VERSION_CODES.N;
import static android.os.Build.VERSION_CODES.O;
import static androidx.test.core.app.ApplicationProvider.getApplicationContext;
import static com.google.common.truth.Truth.assertThat;
+import static org.junit.Assert.assertThrows;
import static org.mockito.Mockito.spy;
import static org.mockito.Mockito.times;
import static org.mockito.Mockito.verify;
import static org.robolectric.Shadows.shadowOf;
+import android.app.PendingIntent;
import android.content.Context;
+import android.content.Intent;
import android.net.ConnectivityManager;
import android.net.LinkProperties;
import android.net.Network;
@@ -321,6 +324,10 @@ public class ShadowConnectivityManagerTest {
};
}
+ private static PendingIntent createSimplePendingIntent() {
+ return PendingIntent.getActivity(getApplicationContext(), 0, new Intent(), 0);
+ }
+
@Test
@Config(minSdk = LOLLIPOP)
public void requestNetwork_shouldAddCallback() throws Exception {
@@ -339,6 +346,15 @@ public class ShadowConnectivityManagerTest {
}
@Test
+ @Config(minSdk = M)
+ public void registerCallback_withPendingIntent_shouldAddCallback() throws Exception {
+ NetworkRequest.Builder builder = new NetworkRequest.Builder();
+ PendingIntent pendingIntent = createSimplePendingIntent();
+ connectivityManager.registerNetworkCallback(builder.build(), pendingIntent);
+ assertThat(shadowOf(connectivityManager).getNetworkCallbackPendingIntents()).hasSize(1);
+ }
+
+ @Test
@Config(minSdk = O)
public void requestNetwork_withTimeout_shouldAddCallback() throws Exception {
NetworkRequest.Builder builder = new NetworkRequest.Builder();
@@ -389,6 +405,21 @@ public class ShadowConnectivityManagerTest {
assertThat(shadowOf(connectivityManager).getNetworkCallbacks()).isEmpty();
}
+ @Test
+ @Config(minSdk = M)
+ public void unregisterCallback_withPendingIntent_shouldRemoveCallbacks() throws Exception {
+ NetworkRequest.Builder builder = new NetworkRequest.Builder();
+ // Add two pendingIntents, should treat them as equal based on Intent#filterEquals
+ PendingIntent pendingIntent1 = createSimplePendingIntent();
+ PendingIntent pendingIntent2 = createSimplePendingIntent();
+ connectivityManager.registerNetworkCallback(builder.build(), pendingIntent1);
+ connectivityManager.registerNetworkCallback(builder.build(), pendingIntent2);
+
+ assertThat(shadowOf(connectivityManager).getNetworkCallbackPendingIntents()).hasSize(1);
+ connectivityManager.unregisterNetworkCallback(pendingIntent2);
+ assertThat(shadowOf(connectivityManager).getNetworkCallbackPendingIntents()).isEmpty();
+ }
+
@Test(expected=IllegalArgumentException.class) @Config(minSdk = LOLLIPOP)
public void unregisterCallback_shouldNotAllowNullCallback() throws Exception {
// Verify that exception is thrown.
@@ -396,6 +427,15 @@ public class ShadowConnectivityManagerTest {
}
@Test
+ @Config(minSdk = M)
+ public void unregisterCallback_withPendingIntent_shouldNotAllowNullCallback() throws Exception {
+ // Verify that exception is thrown.
+ assertThrows(
+ IllegalArgumentException.class,
+ () -> connectivityManager.unregisterNetworkCallback((PendingIntent) null));
+ }
+
+ @Test
public void isActiveNetworkMetered_defaultsToTrue() {
assertThat(connectivityManager.isActiveNetworkMetered()).isTrue();
}