Search in sources :

Example 91 with TypeSafeMatcher

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));
        }
    };
}
Also used : TypeSafeMatcher(org.hamcrest.TypeSafeMatcher) Description(org.hamcrest.Description) ViewParent(android.view.ViewParent) ViewGroup(android.view.ViewGroup) View(android.view.View) Espresso.onView(android.support.test.espresso.Espresso.onView)

Example 92 with TypeSafeMatcher

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));
        }
    };
}
Also used : TypeSafeMatcher(org.hamcrest.TypeSafeMatcher) Description(org.hamcrest.Description) ViewParent(android.view.ViewParent) ViewGroup(android.view.ViewGroup) View(android.view.View) Espresso.onView(android.support.test.espresso.Espresso.onView)

Example 93 with TypeSafeMatcher

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;
        }
    };
}
Also used : TypeSafeMatcher(org.hamcrest.TypeSafeMatcher) Description(org.hamcrest.Description) StringDescription(org.hamcrest.StringDescription) ViewParent(android.view.ViewParent) ViewGroup(android.view.ViewGroup) TextView(android.widget.TextView) View(android.view.View)

Example 94 with TypeSafeMatcher

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;
        }
    };
}
Also used : TypeSafeMatcher(org.hamcrest.TypeSafeMatcher) Description(org.hamcrest.Description) StringDescription(org.hamcrest.StringDescription) ViewGroup(android.view.ViewGroup) TextView(android.widget.TextView) View(android.view.View)

Example 95 with TypeSafeMatcher

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;
        }
    };
}
Also used : IBinder(android.os.IBinder) TypeSafeMatcher(org.hamcrest.TypeSafeMatcher) Description(org.hamcrest.Description) Root(com.google.android.apps.common.testing.ui.espresso.Root)

Aggregations

TypeSafeMatcher (org.hamcrest.TypeSafeMatcher)140 Description (org.hamcrest.Description)137 View (android.view.View)65 ViewParent (android.view.ViewParent)45 ViewGroup (android.view.ViewGroup)42 Espresso.onView (android.support.test.espresso.Espresso.onView)26 Espresso.onView (androidx.test.espresso.Espresso.onView)13 Test (org.junit.Test)11 TextView (android.widget.TextView)10 Resources (android.content.res.Resources)9 ViewMatchers.withContentDescription (android.support.test.espresso.matcher.ViewMatchers.withContentDescription)8 RecyclerView (androidx.recyclerview.widget.RecyclerView)7 Path (com.github.loyada.jdollarx.Path)7 ArrayList (java.util.ArrayList)7 ViewMatchers.withContentDescription (androidx.test.espresso.matcher.ViewMatchers.withContentDescription)6 List (java.util.List)6 JsonNode (org.codehaus.jackson.JsonNode)6 Matcher (org.hamcrest.Matcher)6 JsonParseException (org.neo4j.server.rest.domain.JsonParseException)6 HTTP (org.neo4j.test.server.HTTP)6