package com.tevinjeffrey.rutgersct.testUtils; import android.support.test.espresso.matcher.BoundedMatcher; import com.tevinjeffrey.rutgersct.ui.trackedsections.TrackedSectionVH; import com.tevinjeffrey.rutgersct.rutgersapi.model.Course; import com.tevinjeffrey.rutgersct.rutgersapi.model.Subject; import org.hamcrest.Description; import org.hamcrest.Matcher; import org.hamcrest.TypeSafeMatcher; import static android.support.test.internal.util.Checks.checkNotNull; public class CustomMatchers { public static Matcher<Object> withSubjectNumber(final Matcher<String> itemTextMatcher){ checkNotNull(itemTextMatcher); return new BoundedMatcher<Object, Subject>(Subject.class) { @Override public boolean matchesSafely(Subject subject) { return itemTextMatcher.matches(String.valueOf(subject.getCode())); } @Override public void describeTo(Description description) { description.appendText("with with subject number: "); itemTextMatcher.describeTo(description); } }; } public static Matcher<Object> withCourseNumber(final Matcher<String> itemTextMatcher){ checkNotNull(itemTextMatcher); return new BoundedMatcher<Object, Course>(Course.class) { @Override public boolean matchesSafely(Course course) { return itemTextMatcher.matches(String.valueOf(course.getCourseNumber())); } @Override public void describeTo(Description description) { description.appendText("with with subject number: "); itemTextMatcher.describeTo(description); } }; } public static Matcher<TrackedSectionVH> withIndexNumber(final Matcher<String> indexNumberMatcher) { checkNotNull(indexNumberMatcher); return new TypeSafeMatcher<TrackedSectionVH>() { @Override protected boolean matchesSafely(TrackedSectionVH item) { return indexNumberMatcher.matches(item.getIndexNumber()); } @Override public void describeTo(Description description) { description.appendText("with with index number: "); indexNumberMatcher.describeTo(description); } }; } }