Dispatcher(Context context, ExecutorService service, Handler mainThreadHandler, PlatformLruCache cache, Stats stats) { this.dispatcherThread = new DispatcherThread(); this.dispatcherThread.start(); Utils.flushStackLocalLeaks(dispatcherThread.getLooper()); this.context = context; this.service = service; this.hunterMap = new LinkedHashMap<>(); this.failedActions = new LinkedHashMap<>(); this.pausedActions = new LinkedHashMap<>(); this.pausedTags = new LinkedHashSet<>(); this.handler = new DispatcherHandler(dispatcherThread.getLooper(), this); this.mainThreadHandler = mainThreadHandler; this.cache = cache; this.stats = stats; this.airplaneMode = Utils.isAirplaneModeOn(this.context); this.scansNetworkChanges = hasPermission(context, Manifest.permission.ACCESS_NETWORK_STATE); this.receiver = new NetworkBroadcastReceiver(this); receiver.register(); }
@Test public void nullExtrasOnReceiveAirplaneDoesNothing() { Dispatcher dispatcher = mock(Dispatcher.class); NetworkBroadcastReceiver receiver = new NetworkBroadcastReceiver(dispatcher); receiver.onReceive(context, new Intent(ACTION_AIRPLANE_MODE_CHANGED)); verifyZeroInteractions(dispatcher); }
@Override public void run() { receiver.unregister(); } });
private void setAndVerifyAirplaneMode(boolean airplaneOn) { Dispatcher dispatcher = mock(Dispatcher.class); NetworkBroadcastReceiver receiver = new NetworkBroadcastReceiver(dispatcher); final Intent intent = new Intent(ACTION_AIRPLANE_MODE_CHANGED); intent.putExtra(EXTRA_AIRPLANE_STATE, airplaneOn); receiver.onReceive(context, intent); verify(dispatcher).dispatchAirplaneModeChange(airplaneOn); }
@Test public void nullExtrasOnReceiveConnectivityAreOk() { ConnectivityManager connectivityManager = mock(ConnectivityManager.class); NetworkInfo networkInfo = mockNetworkInfo(); when(connectivityManager.getActiveNetworkInfo()).thenReturn(networkInfo); when(context.getSystemService(CONNECTIVITY_SERVICE)).thenReturn(connectivityManager); Dispatcher dispatcher = mock(Dispatcher.class); NetworkBroadcastReceiver receiver = new NetworkBroadcastReceiver(dispatcher); receiver.onReceive(context, new Intent(CONNECTIVITY_ACTION)); verify(dispatcher).dispatchNetworkStateChange(networkInfo); }
@Test public void nullIntentOnReceiveDoesNothing() { Dispatcher dispatcher = mock(Dispatcher.class); NetworkBroadcastReceiver receiver = new NetworkBroadcastReceiver(dispatcher); receiver.onReceive(context, null); verifyZeroInteractions(dispatcher); }