1a2043a8fff01f3e2d9a5e30dd1cf5fb6a5342f4dTyler Schultzpackage com.xtremelabs.robolectric.matchers;
2d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz
3d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultzimport android.widget.CompoundButton;
4d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultzimport org.hamcrest.Description;
5d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultzimport org.hamcrest.Factory;
6d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultzimport org.hamcrest.Matcher;
789d4bea57d9c9a8b070649763b681b614ce18969Jon Boekenoogenimport org.junit.internal.matchers.TypeSafeMatcher;
8d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz
9d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultzpublic class CompoundButtonCheckedMatcher<T extends CompoundButton> extends TypeSafeMatcher<T> {
10d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz    private boolean expected;
11d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz
12d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz    public CompoundButtonCheckedMatcher(boolean expected) {
13d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz        this.expected = expected;
14d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz    }
15d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz
1689d4bea57d9c9a8b070649763b681b614ce18969Jon Boekenoogen    @Override public boolean matchesSafely(T compoundButton) {
17d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz        return compoundButton != null && expected == compoundButton.isChecked();
18d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz    }
19d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz
20d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz    @Override public void describeTo(Description description) {
21d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz        description.appendText("to be [" + (expected ? "checked" : "unchecked") + "]");
22d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz    }
23d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz
24d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz    @Factory
25d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz    public static <T extends CompoundButton> Matcher<T> isChecked(boolean expectedChecked) {
26d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz        return new CompoundButtonCheckedMatcher<T>(expectedChecked);
27d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz    }
28d56fc1234333a830038735dec0fc32dfbb67b7c3Ryan Richard & Tyler Schultz}
29