TextViewHasTextMatcher.java revision 9f267bbc4c80fd80b0153be8b45dd1d3c777a71a
19f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultzpackage com.xtremelabs.droidsugar.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 99f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultzpublic class TextViewHasTextMatcher extends TypeSafeMatcher<TextView> { 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 189f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz public boolean matchesSafely(TextView 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 399f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz public static Matcher<TextView> hasText(String expectedTextViewText) { 409f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz return new TextViewHasTextMatcher(expectedTextViewText); 419f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz } 429f267bbc4c80fd80b0153be8b45dd1d3c777a71aChristian Williams & Tyler Schultz} 43