protected static Connectivity create(@NonNull Context context, ConnectivityManager manager) { Preconditions.checkNotNull(context, "context == null"); if (manager == null) { return create(); } final NetworkInfo networkInfo = manager.getActiveNetworkInfo(); return (networkInfo == null) ? create() : create(networkInfo); }
@Override public void onLost(Network network) { subscriber.onNext(Connectivity.create(context)); } };
@Override public void onAvailable(Network network) { onNext(Connectivity.create(context)); }
@Override public void onLost(Network network) { onNext(Connectivity.create(context)); } };
@Override public void onAvailable(Network network) { subscriber.onNext(Connectivity.create(context)); }
public static Connectivity create(@NonNull Context context) { Preconditions.checkNotNull(context, "context == null"); return create(context, getConnectivityManager(context)); }
@Override public Observable<Connectivity> observeNetworkConnectivity(final Context context) { final IntentFilter filter = new IntentFilter(); filter.addAction(ConnectivityManager.CONNECTIVITY_ACTION); return Observable.create(new ObservableOnSubscribe<Connectivity>() { @Override public void subscribe(final ObservableEmitter<Connectivity> emitter) throws Exception { final BroadcastReceiver receiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { emitter.onNext(Connectivity.create(context)); } }; context.registerReceiver(receiver, filter); Disposable disposable = disposeInUiThread(new Action() { @Override public void run() { tryToUnregisterReceiver(context, receiver); } }); emitter.setDisposable(disposable); } }).defaultIfEmpty(Connectivity.create()); }
@Test(expected = IllegalArgumentException.class) public void createShouldThrowAnExceptionWhenContextIsNull() { // given final Context context = null; // when Connectivity.create(context); // then // an exception is thrown }
@Test public void theSameConnectivityObjectsShouldBeEqual() { // given final Connectivity connectivityOne = Connectivity.create(); final Connectivity connectivityTwo = Connectivity.create(); // when boolean objectsAreEqual = connectivityOne.equals(connectivityTwo); // then assertThat(objectsAreEqual).isTrue(); }
@Test public void twoDefaultObjectsShouldBeInTheSameBucket() { // given final Connectivity connectivityOne = Connectivity.create(); final Connectivity connectivityTwo = Connectivity.create(); // when boolean hashCodesAreEqual = connectivityOne.hashCode() == connectivityTwo.hashCode(); // then assertThat(hashCodesAreEqual).isTrue(); }
@Override public Observable<Connectivity> observeNetworkConnectivity(final Context context) { final String service = Context.CONNECTIVITY_SERVICE; final ConnectivityManager manager = (ConnectivityManager) context.getSystemService(service); return Observable.create(new ObservableOnSubscribe<Connectivity>() { @Override public void subscribe(ObservableEmitter<Connectivity> subscriber) throws Exception { networkCallback = createNetworkCallback(subscriber, context); final NetworkRequest networkRequest = new NetworkRequest.Builder().build(); manager.registerNetworkCallback(networkRequest, networkCallback); } }).doOnDispose(new Action() { @Override public void run() { tryToUnregisterCallback(manager); } }).startWith(Connectivity.create(context)).distinctUntilChanged(); }
@Test public void shouldReturnProperToStringValue() { // given final String expectedToString = "Connectivity{" + "state=DISCONNECTED, " + "detailedState=IDLE, " + "type=-1, " + "subType=-1, " + "available=false, " + "failover=false, " + "roaming=false, " + "typeName='NONE', " + "subTypeName='NONE', " + "reason='', " + "extraInfo=''}"; // when Connectivity connectivity = Connectivity.create(); // then assertThat(connectivity.toString()).isEqualTo(expectedToString); }
@Override public Observable<Connectivity> observeNetworkConnectivity(final Context context) { final String service = Context.CONNECTIVITY_SERVICE; final ConnectivityManager manager = (ConnectivityManager) context.getSystemService(service); networkCallback = createNetworkCallback(context); registerIdleReceiver(context); final NetworkRequest request = new NetworkRequest.Builder().addCapability(NetworkCapabilities.NET_CAPABILITY_INTERNET) .addCapability(NetworkCapabilities.NET_CAPABILITY_NOT_RESTRICTED) .build(); manager.registerNetworkCallback(request, networkCallback); return connectivitySubject.toFlowable(BackpressureStrategy.LATEST).doOnCancel(new Action() { @Override public void run() { tryToUnregisterCallback(manager); tryToUnregisterReceiver(context); } }).startWith(Connectivity.create(context)).distinctUntilChanged().toObservable(); }
@Test public void shouldCreateConnectivity() { // when Connectivity connectivity = Connectivity.create(); // then assertThat(connectivity).isNotNull(); assertThat(connectivity.state()).isEqualTo(NetworkInfo.State.DISCONNECTED); assertThat(connectivity.detailedState()).isEqualTo(NetworkInfo.DetailedState.IDLE); assertThat(connectivity.type()).isEqualTo(Connectivity.UNKNOWN_TYPE); assertThat(connectivity.subType()).isEqualTo(Connectivity.UNKNOWN_SUB_TYPE); assertThat(connectivity.available()).isFalse(); assertThat(connectivity.failover()).isFalse(); assertThat(connectivity.roaming()).isFalse(); assertThat(connectivity.typeName()).isEqualTo(TYPE_NAME_NONE); assertThat(connectivity.subTypeName()).isEqualTo(TYPE_NAME_NONE); assertThat(connectivity.reason()).isEmpty(); assertThat(connectivity.extraInfo()).isEmpty(); }
@Test public void shouldCreateDefaultConnectivityWhenConnectivityManagerIsNull() { // given final Context context = RuntimeEnvironment.application.getApplicationContext(); final ConnectivityManager connectivityManager = null; // when Connectivity connectivity = Connectivity.create(context, connectivityManager); // then assertThat(connectivity.type()).isEqualTo(Connectivity.UNKNOWN_TYPE); assertThat(connectivity.subType()).isEqualTo(Connectivity.UNKNOWN_SUB_TYPE); assertThat(connectivity.state()).isEqualTo(NetworkInfo.State.DISCONNECTED); assertThat(connectivity.detailedState()).isEqualTo(NetworkInfo.DetailedState.IDLE); assertThat(connectivity.available()).isFalse(); assertThat(connectivity.failover()).isFalse(); assertThat(connectivity.roaming()).isFalse(); assertThat(connectivity.typeName()).isEqualTo(TYPE_NAME_NONE); assertThat(connectivity.subTypeName()).isEqualTo(TYPE_NAME_NONE); assertThat(connectivity.reason()).isEmpty(); assertThat(connectivity.extraInfo()).isEmpty(); } }