@Test public void isRequired_IMULocationWifiAndBluetooth_areRequired() throws Exception { HashSet<SensorType> sensorTypes = new HashSet<>(); sensorTypes.addAll(Arrays.asList(SensorType.imuValues())); sensorTypes.add(SensorType.LOCATION); sensorTypes.addAll(Arrays.asList(SensorType.wifiValues())); sensorTypes.addAll(Arrays.asList(SensorType.bluetoothValues())); Long count = Observable.fromIterable(sensorTypes) .map(new Function<SensorType, Boolean>() { @Override public Boolean apply(SensorType sensorType) throws Exception { return basicSensorRequirementChecker.isRequired(sensorType); } }).filter(new Predicate<Boolean>() { @Override public boolean test(Boolean required) throws Exception { return required; } }).count() .blockingGet(); assertThat(count.intValue(), equalTo(sensorTypes.size())); }
@Test public void single_ReturnsSharedSingle() { // Given final DiffRequest spyRequest = spy(mDiffRequest); // When final Single<RxDiffResult> single = DiffRequestManager.single(spyRequest); // Then for (int i = 0; i < 5; ++i) { final TestObserver<RxDiffResult> testObserver = new TestObserver<>(); single.subscribe(testObserver); testObserver.awaitTerminalEvent(500, TimeUnit.MILLISECONDS); testObserver.assertValue(new Predicate<RxDiffResult>() { @Override public boolean test(@NonNull RxDiffResult rxDiffResult) throws Exception { return rxDiffResult.getTag().equals(TEST_TAG); } }); } then(spyRequest).should(times(1)).isDetectingMoves(); }
@SuppressWarnings("Duplicates") @Test public void testGetFile() { mockSuccessfulResultForTask(mockFileDownloadTask, mockFileDownloadTaskSnapshot); when(mockStorageReference.getFile(mockFile)).thenReturn(mockFileDownloadTask); when(mockFileDownloadTaskSnapshot.getBytesTransferred()).thenReturn(1000L); when(mockFileDownloadTaskSnapshot.getTotalByteCount()).thenReturn(1000L); TestObserver<FileDownloadTask.TaskSnapshot> obs = TestObserver.create(); RxFirebaseStorage.getFile(mockStorageReference, mockFile).subscribe(obs); verifyAddOnCompleteListenerForTask(mockFileDownloadTask); callOnComplete(mockFileDownloadTask); obs.dispose(); callOnComplete(mockFileDownloadTask); obs.assertNoErrors(); obs.assertComplete(); obs.assertValue(new Predicate<FileDownloadTask.TaskSnapshot>() { @Override public boolean test(FileDownloadTask.TaskSnapshot taskSnapshot) throws Exception { return taskSnapshot.getBytesTransferred() == taskSnapshot.getTotalByteCount() && taskSnapshot.getTotalByteCount() == 1000; } }); }
@Test public void testGetMetadata() { mockSuccessfulResultForTask(mockStorageMetadataTask, mockStorageMetadata); when(mockStorageReference.getMetadata()).thenReturn(mockStorageMetadataTask); when(mockStorageMetadata.getName()).thenReturn("Test"); TestObserver<StorageMetadata> obs = TestObserver.create(); RxFirebaseStorage.getMetadata(mockStorageReference).subscribe(obs); verifyAddOnCompleteListenerForTask(mockStorageMetadataTask); callOnComplete(mockStorageMetadataTask); obs.dispose(); callOnComplete(mockStorageMetadataTask); obs.assertNoErrors(); obs.assertComplete(); obs.assertValue(new Predicate<StorageMetadata>() { @Override public boolean test(StorageMetadata storageMetadata) throws Exception { return "Test".equals(storageMetadata.getName()); } }); }
public <CLASS> Observable<Getter<CLASS>> onGet(final Class<CLASS> theClass) { return onEvent(AskedEvent.class)//I wait for an event (askevent) of CLASS .filter(new Predicate<AskedEvent>() { @Override public boolean test(@NonNull AskedEvent askedEvent) throws Exception { return askedEvent.askedObject.equals(theClass); } }) .map(new Function<AskedEvent, Getter<CLASS>>() { @Override public Getter<CLASS> apply(@NonNull AskedEvent o) throws Exception { return new Getter<CLASS>() { //then I send to the listener a Getter (interface) //when the getter is notified, the value is sent to the first subscrier //who called the method `get` @Override public void get(CLASS value) { post(value); //the value is published on the bus } }; } }); }
@Override public <T> Observable<CacheResult<T>> execute(ApiCache apiCache, String cacheKey, Observable<T> source, Type type) { Observable<CacheResult<T>> remote = loadRemote(apiCache, cacheKey, source); remote.onErrorReturn(new Function<Throwable, CacheResult<T>>() { @Override public CacheResult<T> apply(Throwable throwable) throws Exception { return null; } }); Observable<CacheResult<T>> cache = loadCache(apiCache, cacheKey, type); return Observable.concatDelayError(Arrays.asList(remote,cache)).filter(new Predicate<CacheResult<T>>() { @Override public boolean test(CacheResult<T> tCacheResult) throws Exception { return tCacheResult != null && tCacheResult.getCacheData() != null; } }).firstElement().toObservable(); }
@Test public void testUpdateMetadata() { when(mockStorageMetadata.getName()).thenReturn("metadata"); mockSuccessfulResultForTask(mockStorageMetadataTask, mockStorageMetadata); TestObserver<StorageMetadata> obs = TestObserver.create(); when(mockStorageReference.updateMetadata(mockStorageMetadata)).thenReturn( mockStorageMetadataTask); RxFirebaseStorage.updateMetadata(mockStorageReference, mockStorageMetadata).subscribe(obs); verifyAddOnCompleteListenerForTask(mockStorageMetadataTask); callOnComplete(mockStorageMetadataTask); obs.dispose(); callOnComplete(mockStorageMetadataTask); obs.assertNoErrors(); obs.assertComplete(); obs.assertValue(new Predicate<StorageMetadata>() { @Override public boolean test(StorageMetadata metadata) throws Exception { return "metadata".equals(metadata.getName()); } }); }
private Observable<Integer> filterWithIfThenMapNullableContainer( Observable<NullableContainer<String>> observable) { return observable .filter( new Predicate<NullableContainer<String>>() { @Override public boolean test(NullableContainer<String> container) throws Exception { if (container.get() != null) { return true; } else { return false; } } }) .map( new Function<NullableContainer<String>, Integer>() { @Override public Integer apply(NullableContainer<String> c) throws Exception { return c.get().length(); } }); }
@Override public <T> Observable<CacheResult<T>> execute(ApiCache apiCache, String cacheKey, Observable<T> source, Type type) { Observable<CacheResult<T>> cache = loadCache(apiCache, cacheKey, type); cache.onErrorReturn(new Function<Throwable, CacheResult<T>>() { @Override public CacheResult<T> apply(Throwable throwable) throws Exception { return null; } }); Observable<CacheResult<T>> remote = loadRemote(apiCache, cacheKey, source); return Observable.concat(remote, cache).filter(new Predicate<CacheResult<T>>() { @Override public boolean test(CacheResult<T> tCacheResult) throws Exception { return tCacheResult != null && tCacheResult.getCacheData() != null; } }).firstElement().toObservable(); }
private Observable<NullableContainer<String>> filterThenDistinctUntilChanged( Observable<NullableContainer<String>> observable) { return observable .filter( new Predicate<NullableContainer<String>>() { @Override public boolean test(NullableContainer<String> container) throws Exception { return container.get() != null; } }) .distinctUntilChanged( new BiPredicate<NullableContainer<String>, NullableContainer<String>>() { @Override public boolean test(NullableContainer<String> nc1, NullableContainer<String> nc2) { return nc1.get().length() == nc2.get().length() && nc1.get().contains(nc2.get()) && nc2.get().contains(nc1.get()); } }); }
private Maybe<Integer> testMaybe(Maybe<NullableContainer<String>> maybe) { return maybe .filter( new Predicate<NullableContainer<String>>() { @Override public boolean test(NullableContainer<String> container) throws Exception { return container.get() != null; } }) .map( new Function<NullableContainer<String>, Integer>() { @Override public Integer apply(NullableContainer<String> c) throws Exception { return c.get().length(); } }); }
private Maybe<Integer> testSingle(Single<NullableContainer<String>> single) { return single .filter( new Predicate<NullableContainer<String>>() { @Override public boolean test(NullableContainer<String> container) throws Exception { return container.get() != null; } }) .map( new Function<NullableContainer<String>, Integer>() { @Override public Integer apply(NullableContainer<String> c) throws Exception { return c.get().length(); } }); }
private Observable<Integer> filterWithIfThenMapNullableContainerNullableOnSomeBranch( Observable<NullableContainer<String>> observable) { return observable .filter( new Predicate<NullableContainer<String>>() { @Override public boolean test(NullableContainer<String> container) throws Exception { if (container.get() != null) { return true; } else { return perhaps(); } } }) .map( new Function<NullableContainer<String>, Integer>() { @Override public Integer apply(NullableContainer<String> c) throws Exception { // BUG: Diagnostic contains: dereferenced expression return c.get().length(); } }); }
private Observable<Integer> filterWithIfThenMapNullableContainerNullableOnSomeBranchAnyOrder( Observable<NullableContainer<String>> observable) { return observable .filter( new Predicate<NullableContainer<String>>() { @Override public boolean test(NullableContainer<String> container) throws Exception { if (container.get() == null) { return perhaps(); } else { return true; } } }) .map( new Function<NullableContainer<String>, Integer>() { @Override public Integer apply(NullableContainer<String> c1) throws Exception { // BUG: Diagnostic contains: dereferenced expression return c1.get().length(); } }); }
private void setRecyclerViewScrollListener() { LoadMoreDelegate delegate = new LoadMoreDelegate(new LoadMoreDelegate.LoadMoreSubject() { @Override public boolean isLoading() { return mIsLoading; } @Override public void onLoadMore() { Observable<IssueDataBean> observable = mDailyApi.loadMoreDailyItem(mNextPageUrl); mIsLoading = true; observable .filter(new Predicate<IssueDataBean>() { @Override public boolean test(@NonNull IssueDataBean issueDataBean) throws Exception { return issueDataBean != null; } }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(mObserver); } }); delegate.attach(mRecyclerView); }
@Test public void testGetBytes() { mockSuccessfulResultForTask(mockBytesTask, new byte[] { 1, 2, 3 }); Mockito.when(mockStorageReference.getBytes(3)).thenReturn(mockBytesTask); TestObserver<byte[]> obs = TestObserver.create(); RxFirebaseStorage.getBytes(mockStorageReference, 3).subscribe(obs); verifyAddOnCompleteListenerForTask(mockBytesTask); callOnComplete(mockBytesTask); obs.dispose(); callOnComplete(mockBytesTask); obs.assertNoErrors(); obs.assertComplete(); obs.assertValue(new Predicate<byte[]>() { @Override public boolean test(byte[] bytes) throws Exception { return Arrays.equals(bytes, new byte[] { 1, 2, 3 }); } }); }
@Test public void rxActivity_shouldCallback_onLowMemory() { ActivityController<EmptyActivity> activityController = buildActivity(EmptyActivity.class); RibActivity activity = activityController.setup().get(); TestObserver<ActivityCallbackEvent> testSub = new TestObserver<>(); activity .callbacks() .filter( new Predicate<ActivityCallbackEvent>() { @Override public boolean test(ActivityCallbackEvent activityEvent) throws Exception { return activityEvent.getType() == ActivityCallbackEvent.Type.LOW_MEMORY; } }) .subscribe(testSub); activity.onLowMemory(); testSub.assertValue(ActivityCallbackEvent.create(ActivityCallbackEvent.Type.LOW_MEMORY)); }
private void searchData(String tag) { mHintText.setText(""); mTagLayout.setVisibility(View.GONE); mProgressBar.setVisibility(View.VISIBLE); mSearchTag = tag; Observable<GetDataBean> observable = mSearchApi.searchTagData(mSearchTag); observable .filter(new Predicate<GetDataBean>() { @Override public boolean test(@NonNull GetDataBean getDataBean) throws Exception { return getDataBean != null; } }) .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(mObserver); }
/** * Determines if any of specified transport types occurred. * * @param transportTypes one or many {@code NetworkCapabilities#TRANSPORT_*} * * @return {@code true} if any of the given transport types occurred, {@code false} otherwise */ public static Predicate<RxNetworkInfo> hasTransportType(final int... transportTypes) { return new Predicate<RxNetworkInfo>() { @Override public boolean test(RxNetworkInfo networkInfo) throws Exception { final NetworkCapabilities networkCapabilities = networkInfo.getNetworkCapabilities(); if (networkCapabilities != null) { for (Integer transportType : transportTypes) { if (networkCapabilities.hasTransport(transportType)) { return true; } } } return false; } }; }
public Disposable observeResultsForFragment(final String fragmentId, Consumer<ResultResponse> consumer) { return publishSubject .filter(new Predicate<ResultResponse>() { @Override public boolean test(ResultResponse resultResponse) throws Exception { return resultResponse.fragmentId.equals(fragmentId); } }) .observeOn(AndroidSchedulers.mainThread()) .subscribe(consumer, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { throwable.printStackTrace(); } }); }
@Test public void testPutStream() { mockSuccessfulResultForTask(mockUploadTask, mockUploadTaskSnapshot); when(mockStorageReference.putStream(mockInputStream)).thenReturn(mockUploadTask); when(mockUploadTaskSnapshot.getBytesTransferred()).thenReturn(1000L); when(mockUploadTaskSnapshot.getTotalByteCount()).thenReturn(1000L); TestObserver<UploadTask.TaskSnapshot> obs = TestObserver.create(); RxFirebaseStorage.putStream(mockStorageReference, mockInputStream).subscribe(obs); verifyAddOnCompleteListenerForTask(mockUploadTask); callOnComplete(mockUploadTask); obs.dispose(); callOnComplete(mockUploadTask); obs.assertNoErrors(); obs.assertComplete(); obs.assertValue(new Predicate<UploadTask.TaskSnapshot>() { @Override public boolean test(UploadTask.TaskSnapshot taskSnapshot) throws Exception { return taskSnapshot.getBytesTransferred() == taskSnapshot.getTotalByteCount() && taskSnapshot.getTotalByteCount() == 1000L; } }); }
@Test public void thenToItemWithValidConditionThenReturnAnOptionalContainingItem() { TestClassTwo result = new Chain<>(new TestClass(), chainConfiguration) .when(new Predicate<TestClass>() { @Override public boolean test(TestClass testClass) throws Exception { return true; } }) .thenTo(new TestClassTwo("1")) .defaultIfEmpty(new TestClassTwo("2")) .call(); assertEquals("1", result.text); }
@Test public void thenToItemWithInvalidConditionThenReturnAnOptionalContainingNull() { TestClassTwo result = new Chain<>(new TestClass(), chainConfiguration) .when(new Predicate<TestClass>() { @Override public boolean test(TestClass testClass) throws Exception { return false; } }) .thenTo(new TestClassTwo("1")) .defaultIfEmpty(new TestClassTwo("2")) .call(); assertEquals("2", result.text); }
@Test public void testDataChangesOfClazz() { TestObserver<Optional<String>> sub = TestObserver.create(); RxFirebaseDatabase.dataChangesOf(mockDatabaseReference, String.class).subscribe(sub); verifyAddValueEventListener(); callValueEventOnDataChange("Foo"); sub.assertNotComplete(); sub.assertValueCount(1); sub.assertValue(new Predicate<Optional<String>>() { @Override public boolean test(Optional<String> stringOptional) throws Exception { return stringOptional.isPresent() && "Foo".equals(stringOptional.get()); } }); sub.dispose(); callValueEventOnDataChange("Foo"); // Ensure no more values are emitted after unsubscribe sub.assertValueCount(1); }
@Test public void thenToCallableWithInvalidConditionThenReturnAnOptionalContainingNull() { TestClassTwo result = new Chain<>(new TestClass(), chainConfiguration) .when(new Predicate<TestClass>() { @Override public boolean test(TestClass testClass) throws Exception { return false; } }) .thenTo(new Callable<TestClassTwo>() { @Override public TestClassTwo call() throws Exception { return new TestClassTwo("1"); } }) .defaultIfEmpty(new TestClassTwo("2")) .call(); assertEquals("2", result.text); }
@Test(expected = UnsupportedOperationException.class) public void thenToCallableWithExceptionThenThrowException() { new Chain<>(new TestClass(), chainConfiguration) .when(new Predicate<TestClass>() { @Override public boolean test(TestClass testClass) throws Exception { return true; } }) .thenTo(new Callable<TestClassTwo>() { @Override public TestClassTwo call() throws Exception { throw new UnsupportedOperationException(); } }); }
public Maybe<Trip> getTrip(final String tripId) { return getTrips() .toObservable() .flatMap(new Function<List<Trip>, ObservableSource<? extends Trip>>() { @Override public ObservableSource<? extends Trip> apply(List<Trip> tripList) throws Exception { return Observable.fromIterable(tripList); } }) .filter(new Predicate<Trip>() { @Override public boolean test(Trip trip) throws Exception { return trip.getId().equals(tripId); } }) .singleElement(); }
/** * See {@link #createQuery(String, String, String...)} for usage. This overload allows for * monitoring multiple tables for changes. * * @see SQLiteDatabase#rawQuery(String, String[]) */ @CheckResult @NonNull public QueryObservable createQuery(@NonNull final Iterable<String> tables, @NonNull String sql, @NonNull String... args) { Predicate<Set<String>> tableFilter = new Predicate<Set<String>>() { @Override public boolean test(Set<String> triggers) { for (String table : tables) { if (triggers.contains(table)) { return true; } } return false; } @Override public String toString() { return tables.toString(); } }; return createQuery(tableFilter, sql, args); }
@Test public void getBackpressureStrategy_forAllSensors_returnsBufferStrategy() throws Exception { HashSet<SensorType> allSensors = new HashSet<>(Arrays.asList(SensorType.values())); Long count = Observable.fromIterable(allSensors) .map(new Function<SensorType, BackpressureStrategy>() { @Override public BackpressureStrategy apply(SensorType sensorType) throws Exception { return basicSensorConfig.getBackpressureStrategy(sensorType); } }) .filter(new Predicate<BackpressureStrategy>() { @Override public boolean test(BackpressureStrategy backpressureStrategy) throws Exception { return backpressureStrategy.equals(BackpressureStrategy.BUFFER); } }) .count() .blockingGet(); assertThat(count.intValue(), equalTo(allSensors.size())); }
/** * Just for the Collections. * * @param <T> The input. * @return true if the input collection is not empty. * @throws ClassCastException If the input is not an instance of Collection. */ public static <T> Predicate<T> notEmpty() { return new Predicate<T>() { @Override public boolean test(@NonNull T t) throws Exception { return !((Collection) t).isEmpty(); } }; }
public static <T> Predicate<T> notNull() { return new Predicate<T>() { @Override public boolean test(@NonNull T t) { return t != null; } }; }
@Override public Flowable<Optional<List<Post>>> getAll(Filter filter, final SortingMode sortingMode) { // this IF case is here only to demonstrate the usage of filtering and sorting mode in the UI // this logic should be on the server side and not here ! // !!!! The filter and the sort are hardcoded here (to match presenter choices). if(sortingMode != null && filter != null){ final int userIdAllowed = (int) filter.entrySet().iterator().next().getValue().value; // special return for demo return wrapOptional(apiService.getPosts() .flatMapIterable(new Function<List<Post>, Iterable<Post>>() { @Override public Iterable<Post> apply(List<Post> posts) throws Exception { Collections.sort(posts, new Comparator<Post>() { @Override public int compare(Post p0, Post p1) { return p0.userId - p1.userId; // hardcoded ordering by userId } }); return posts; } }) .filter(new Predicate<Post>() { @Override public boolean test(Post post) throws Exception { return post.userId == userIdAllowed; } }) .toList() .toFlowable() ); } // you can wrap the retrofit response directly in a // Optional object by default for more convenience return wrapOptional(apiService.getPosts()); }
private void doSomeWork() { Observable.just(1, 2, 3, 4, 5, 6) .filter(new Predicate<Integer>() { @Override public boolean test(Integer integer) throws Exception { return integer % 2 == 0; } }) .subscribe(getObserver()); }
@Override public void checkVersion(final String currentVersion) { addSubscribe(mRetrofitHelper.fetchVersionInfo() .compose(RxUtil.<MyHttpResponse<VersionBean>>rxSchedulerHelper()) .compose(RxUtil.<VersionBean>handleMyResult()) .filter(new Predicate<VersionBean>() { @Override public boolean test(@NonNull VersionBean versionBean) throws Exception { return Integer.valueOf(currentVersion.replace(".", "")) < Integer.valueOf(versionBean.getCode().replace(".", "")); } }) .map(new Function<VersionBean, String>() { @Override public String apply(VersionBean bean) { StringBuilder content = new StringBuilder("版本号: v"); content.append(bean.getCode()); content.append("\r\n"); content.append("版本大小: "); content.append(bean.getSize()); content.append("\r\n"); content.append("更新内容:\r\n"); content.append(bean.getDes().replace("\\r\\n","\r\n")); return content.toString(); } }) .subscribeWith(new CommonSubscriber<String>(mView) { @Override public void onNext(String s) { mView.showUpdateDialog(s); } }) ); }
@Override public void checkVersion(final String currentVersion) { addSubscribe(mDataManager.fetchVersionInfo() .compose(RxUtil.<MyHttpResponse<VersionBean>>rxSchedulerHelper()) .compose(RxUtil.<VersionBean>handleMyResult()) .filter(new Predicate<VersionBean>() { @Override public boolean test(@NonNull VersionBean versionBean) throws Exception { return Integer.valueOf(currentVersion.replace(".", "")) < Integer.valueOf(versionBean.getCode().replace(".", "")); } }) .map(new Function<VersionBean, String>() { @Override public String apply(VersionBean bean) { StringBuilder content = new StringBuilder("版本号: v"); content.append(bean.getCode()); content.append("\r\n"); content.append("版本大小: "); content.append(bean.getSize()); content.append("\r\n"); content.append("更新内容:\r\n"); content.append(bean.getDes().replace("\\r\\n","\r\n")); return content.toString(); } }) .subscribeWith(new CommonSubscriber<String>(mView) { @Override public void onNext(String s) { mView.showUpdateDialog(s); } }) ); }
@Override protected void init() { setSupportActionBar(toolbar); showBackButton(true); setTitle(getString(R.string.screen_manage_cities)); recyclerCities.setLayoutManager(new LinearLayoutManager(this)); adapter = new CityAdapter(this); recyclerCities.setAdapter(adapter); autocompleteTxtCity.setAdapter(autoCompleteAdapter); autocompleteTxtCity.setOnItemClickListener(this); Observable<String> observable = RxTextView.textChangeEvents(autocompleteTxtCity) .skip(2) .debounce(500, TimeUnit.MILLISECONDS) .map(new Function<TextViewTextChangeEvent, String>() { @Override public String apply(TextViewTextChangeEvent textViewTextChangeEvent) throws Exception { return textViewTextChangeEvent.text().toString(); } }) .filter(new Predicate<String>() { @Override public boolean test(String s) throws Exception { return s.length() > 2; } }); presenter.loadAutocompleteCities(observable); presenter.loadCities(); }
@Test public void testPutStreamWithMetadata() { mockSuccessfulResultForTask(mockUploadTask, mockUploadTaskSnapshot); when(mockStorageReference.putStream(mockInputStream, mockStorageMetadata)).thenReturn( mockUploadTask); when(mockUploadTaskSnapshot.getBytesTransferred()).thenReturn(1000L); when(mockUploadTaskSnapshot.getTotalByteCount()).thenReturn(1000L); TestObserver<UploadTask.TaskSnapshot> obs = TestObserver.create(); RxFirebaseStorage.putStream(mockStorageReference, mockInputStream, mockStorageMetadata) .subscribe(obs); verifyAddOnCompleteListenerForTask(mockUploadTask); callOnComplete(mockUploadTask); obs.dispose(); callOnComplete(mockUploadTask); obs.assertNoErrors(); obs.assertComplete(); obs.assertValue(new Predicate<UploadTask.TaskSnapshot>() { @Override public boolean test(UploadTask.TaskSnapshot taskSnapshot) throws Exception { return taskSnapshot.getBytesTransferred() == taskSnapshot.getTotalByteCount() && taskSnapshot.getTotalByteCount() == 1000L; } }); }
/** * Filter, which returns true if at least one given type occurred * * @param types int, which can have one or more types * @return true if at least one given type occurred */ public static Predicate<Connectivity> hasType(final int... types) { final int[] extendedTypes = appendUnknownNetworkTypeToTypes(types); return new Predicate<Connectivity>() { @Override public boolean test(@NonNull Connectivity connectivity) throws Exception { for (int type : extendedTypes) { if (connectivity.getType() == type) { return true; } } return false; } }; }