/** * 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.type() == type) { return true; } } return false; } }; }
@Test public void stateShouldNotBeEqualToGivenValue() throws Exception { // given final Connectivity connectivity = Connectivity.state(NetworkInfo.State.DISCONNECTED) .type(ConnectivityManager.TYPE_WIFI) .typeName(TYPE_NAME_WIFI) .build(); // when final Predicate<Connectivity> equalTo = ConnectivityPredicate.hasState(NetworkInfo.State.CONNECTED); final Boolean shouldBeEqualToGivenStatus = equalTo.test(connectivity); // then assertThat(shouldBeEqualToGivenStatus).isFalse(); }
@Test public void typeShouldNotBeEqualToGivenValue() throws Exception { // given final Connectivity connectivity = Connectivity.state(NetworkInfo.State.CONNECTED) .type(ConnectivityManager.TYPE_WIFI) .typeName(TYPE_NAME_WIFI) .build(); // note that unknown type is added initially by the ConnectivityPredicate#hasType method final int givenTypes[] = { ConnectivityManager.TYPE_MOBILE, Connectivity.UNKNOWN_TYPE }; // when final Predicate<Connectivity> equalTo = ConnectivityPredicate.hasType(givenTypes); final Boolean shouldBeEqualToGivenStatus = equalTo.test(connectivity); // then assertThat(shouldBeEqualToGivenStatus).isFalse(); }
@Test public void stateShouldBeEqualToOneOfGivenMultipleValues() throws Exception { // given final Connectivity connectivity = Connectivity.state(NetworkInfo.State.CONNECTING) .type(ConnectivityManager.TYPE_WIFI) .typeName(TYPE_NAME_WIFI) .build(); final NetworkInfo.State states[] = { NetworkInfo.State.CONNECTED, NetworkInfo.State.CONNECTING }; // when final Predicate<Connectivity> equalTo = ConnectivityPredicate.hasState(states); final Boolean shouldBeEqualToGivenStatus = equalTo.test(connectivity); // then assertThat(shouldBeEqualToGivenStatus).isTrue(); }
@Test public void typeShouldBeEqualToGivenValue() throws Exception { // given final Connectivity connectivity = Connectivity.state(NetworkInfo.State.CONNECTED) .type(ConnectivityManager.TYPE_WIFI) .typeName(TYPE_NAME_WIFI) .build(); // note that unknown type is added initially by the ConnectivityPredicate#hasType method final int givenTypes[] = { connectivity.type(), Connectivity.UNKNOWN_TYPE }; // when final Predicate<Connectivity> equalTo = ConnectivityPredicate.hasType(givenTypes); final Boolean shouldBeEqualToGivenStatus = equalTo.test(connectivity); // then assertThat(shouldBeEqualToGivenStatus).isTrue(); }
@Test public void shouldAppendUnknownTypeWhileFilteringNetworkTypesInsidePredicate() { // given int[] types = { ConnectivityManager.TYPE_MOBILE, ConnectivityManager.TYPE_WIFI }; int[] expectedOutputTypes = { ConnectivityManager.TYPE_MOBILE, ConnectivityManager.TYPE_WIFI, Connectivity.UNKNOWN_TYPE }; // when int[] outputTypes = ConnectivityPredicate.appendUnknownNetworkTypeToTypes(types); // then assertThat(outputTypes).isEqualTo(expectedOutputTypes); }
@Test public void stateShouldBeEqualToGivenValue() throws Exception { // given final Connectivity connectivity = Connectivity.state(NetworkInfo.State.CONNECTED) .type(ConnectivityManager.TYPE_WIFI) .typeName(TYPE_NAME_WIFI) .build(); // when final Predicate<Connectivity> equalTo = ConnectivityPredicate.hasState(connectivity.state()); final Boolean shouldBeEqualToGivenStatus = equalTo.test(connectivity); // then assertThat(shouldBeEqualToGivenStatus).isTrue(); }
@Test public void typeShouldBeEqualToOneOfGivenMultipleValues() throws Exception { // given final Connectivity connectivity = Connectivity.state(NetworkInfo.State.CONNECTING) .type(ConnectivityManager.TYPE_MOBILE) .typeName(TYPE_NAME_MOBILE) .build(); // note that unknown type is added initially by the ConnectivityPredicate#hasType method final int givenTypes[] = { ConnectivityManager.TYPE_WIFI, ConnectivityManager.TYPE_MOBILE, Connectivity.UNKNOWN_TYPE }; // when final Predicate<Connectivity> equalTo = ConnectivityPredicate.hasType(givenTypes); final Boolean shouldBeEqualToGivenStatus = equalTo.test(connectivity); // then assertThat(shouldBeEqualToGivenStatus).isTrue(); }
@Test public void shouldAppendUnknownTypeWhileFilteringNetworkTypesInsidePredicateForEmptyArray() { // given int[] types = {}; int[] expectedOutputTypes = { Connectivity.UNKNOWN_TYPE }; // when int[] outputTypes = ConnectivityPredicate.appendUnknownNetworkTypeToTypes(types); // then assertThat(outputTypes).isEqualTo(expectedOutputTypes); }