use of org.hamcrest.TypeSafeMatcher in project kiwix-android by kiwix.
the class BasicTest method childAtPosition.
private static Matcher<View> childAtPosition(final Matcher<View> parentMatcher, final int position) {
return new TypeSafeMatcher<View>() {
@Override
public void describeTo(Description description) {
description.appendText("Child at position " + position + " in parent ");
parentMatcher.describeTo(description);
}
@Override
public boolean matchesSafely(View view) {
ViewParent parent = view.getParent();
return parent instanceof ViewGroup && parentMatcher.matches(parent) && view.equals(((ViewGroup) parent).getChildAt(position));
}
};
}
use of org.hamcrest.TypeSafeMatcher in project kiwix-android by kiwix.
the class NetworkTest method childAtPosition.
private static Matcher<View> childAtPosition(final Matcher<View> parentMatcher, final int position) {
return new TypeSafeMatcher<View>() {
@Override
public void describeTo(Description description) {
description.appendText("Child at position " + position + " in parent ");
parentMatcher.describeTo(description);
}
@Override
public boolean matchesSafely(View view) {
ViewParent parent = view.getParent();
return parent instanceof ViewGroup && parentMatcher.matches(parent) && view.equals(((ViewGroup) parent).getChildAt(position));
}
};
}
use of org.hamcrest.TypeSafeMatcher in project double-espresso by JakeWharton.
the class ViewMatchers method hasSibling.
/**
* Returns an {@link Matcher} that matches {@link View}s based on their siblings.<br>
* <br>
* This may be particularly useful when a view cannot be uniquely selected on properties such as
* text or R.id. For example: a call button is repeated several times in a contacts layout and the
* only way to differentiate the call button view is by what appears next to it (e.g. the unique
* name of the contact).
*
* @param siblingMatcher a {@link Matcher} for the sibling of the view.
*/
public static Matcher<View> hasSibling(final Matcher<View> siblingMatcher) {
checkNotNull(siblingMatcher);
return new TypeSafeMatcher<View>() {
@Override
public void describeTo(Description description) {
description.appendText("has sibling: ");
siblingMatcher.describeTo(description);
}
@Override
public boolean matchesSafely(View view) {
ViewParent parent = view.getParent();
if (!(parent instanceof ViewGroup)) {
return false;
}
ViewGroup parentGroup = (ViewGroup) parent;
for (int i = 0; i < parentGroup.getChildCount(); i++) {
if (siblingMatcher.matches(parentGroup.getChildAt(i))) {
return true;
}
}
return false;
}
};
}
use of org.hamcrest.TypeSafeMatcher in project double-espresso by JakeWharton.
the class ViewMatchers method withChild.
/**
* A matcher that returns true if and only if the view's child is accepted by the provided
* matcher.
*
* @param childMatcher the matcher to apply on the child views.
*/
public static Matcher<View> withChild(final Matcher<View> childMatcher) {
checkNotNull(childMatcher);
return new TypeSafeMatcher<View>() {
@Override
public void describeTo(Description description) {
description.appendText("has child: ");
childMatcher.describeTo(description);
}
@Override
public boolean matchesSafely(View view) {
if (!(view instanceof ViewGroup)) {
return false;
}
ViewGroup group = (ViewGroup) view;
for (int i = 0; i < group.getChildCount(); i++) {
if (childMatcher.matches(group.getChildAt(i))) {
return true;
}
}
return false;
}
};
}
use of org.hamcrest.TypeSafeMatcher in project double-espresso by JakeWharton.
the class RootMatchers method isDialog.
/**
* Matches {@link Root}s that are dialogs (i.e. is not a window of the currently resumed
* activity).
*/
public static Matcher<Root> isDialog() {
return new TypeSafeMatcher<Root>() {
@Override
public void describeTo(Description description) {
description.appendText("is dialog");
}
@Override
public boolean matchesSafely(Root root) {
int type = root.getWindowLayoutParams().get().type;
if ((type != WindowManager.LayoutParams.TYPE_BASE_APPLICATION && type < WindowManager.LayoutParams.LAST_APPLICATION_WINDOW)) {
IBinder windowToken = root.getDecorView().getWindowToken();
IBinder appToken = root.getDecorView().getApplicationWindowToken();
if (windowToken == appToken) {
// therefore it must be a dialog box.
return true;
}
}
return false;
}
};
}
Aggregations