1a2043a8fff01f3e2d9a5e30dd1cf5fb6a5342f4dTyler Schultzpackage com.xtremelabs.robolectric.matchers;
28bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher
38bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisherimport android.widget.TextView;
433873d2b41a5cd2597b20a4e88eb8942944c0f23Tyler Schultzimport com.xtremelabs.robolectric.shadows.ShadowTextView;
58bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisherimport org.hamcrest.Description;
68bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisherimport org.hamcrest.Factory;
78bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisherimport org.hamcrest.Matcher;
88bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisherimport org.junit.internal.matchers.TypeSafeMatcher;
98bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher
10a8486da7c7a0b6a10e943c55992f34d9c256456dChristian Williamsimport static com.xtremelabs.robolectric.Robolectric.shadowOf;
11a8486da7c7a0b6a10e943c55992f34d9c256456dChristian Williams
128bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisherpublic class HasCompoundDrawablesMatcher extends TypeSafeMatcher<TextView> {
138bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher    private String message;
14afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams    private ShadowTextView.CompoundDrawables expectedCompoundDrawables;
158bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher
168bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher    public HasCompoundDrawablesMatcher(int left, int top, int right, int bottom) {
17afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williams        expectedCompoundDrawables = new ShadowTextView.CompoundDrawables(left, top, right, bottom);
188bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher    }
198bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher
208bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher    @Override
218bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher    public boolean matchesSafely(TextView actual) {
228bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher        if (actual == null) {
238bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher            message = "actual view was null";
248bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher            return false;
258bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher        }
268bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher
27620694ded8735cba729537b6cd7abfa5cdf57eb4Christian Williams & Phil Goodwin        ShadowTextView.CompoundDrawables actualCompoundDrawables = shadowOf(actual).getCompoundDrawablesImpl();
288bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher        if (!expectedCompoundDrawables.equals(actualCompoundDrawables)) {
298bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher            message = "[" + actualCompoundDrawables + "] to equal [" + expectedCompoundDrawables + "]";
308bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher            return false;
318bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher        } else {
328bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher            return true;
338bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher        }
348bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher    }
358bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher
368bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher    @Override
378bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher    public void describeTo(Description description) {
388bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher        description.appendText(message);
398bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher    }
408bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher
418bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher    @Factory
428bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher    public static Matcher<TextView> hasCompoundDrawables(int left, int top, int right, int bottom) {
438bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher        return new HasCompoundDrawablesMatcher(left, top, right, bottom);
448bb1af1810bfbfd724d88898d1c4e7aef9945fb9Christian Williams & Ian Fisher    }
4533873d2b41a5cd2597b20a4e88eb8942944c0f23Tyler Schultz}
46