1a2043a8fff01f3e2d9a5e30dd1cf5fb6a5342f4dTyler Schultzpackage com.xtremelabs.robolectric.matchers; 29f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz 39f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultzimport android.widget.TextView; 49f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultzimport org.hamcrest.Description; 59f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultzimport org.hamcrest.Factory; 69f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultzimport org.hamcrest.Matcher; 79f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultzimport org.junit.internal.matchers.TypeSafeMatcher; 89f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz 97b2f8e0cbd99c578933c969b9cf701f22337f429Ryan Richard & Tyler Schultzpublic class TextViewHasTextMatcher<T extends TextView> extends TypeSafeMatcher<T> { 109f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz private String expected; 119f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz private String actualText; 129f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz 139f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz public TextViewHasTextMatcher(String expected) { 149f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz this.expected = expected; 159f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz } 169f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz 179f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz @Override 187b2f8e0cbd99c578933c969b9cf701f22337f429Ryan Richard & Tyler Schultz public boolean matchesSafely(T actual) { 199f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz if (actual == null) { 209f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz return false; 219f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz } 229f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz final CharSequence charSequence = actual.getText(); 239f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz if (charSequence == null || charSequence.toString() == null) { 249f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz return false; 259f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz } 269f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz actualText = charSequence.toString(); 279f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz return actualText.equals(expected); 289f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz } 299f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz 309f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz 319f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz @Override 329f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz public void describeTo(Description description) { 339f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz description.appendText("[" + actualText + "]"); 349f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz description.appendText(" to equal "); 359f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz description.appendText("[" + expected + "]"); 369f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz } 379f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz 389f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz @Factory 397b2f8e0cbd99c578933c969b9cf701f22337f429Ryan Richard & Tyler Schultz public static <T extends TextView> Matcher<T> hasText(String expectedTextViewText) { 407b2f8e0cbd99c578933c969b9cf701f22337f429Ryan Richard & Tyler Schultz return new TextViewHasTextMatcher<T>(expectedTextViewText); 419f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz } 429f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz} 43