1c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 2c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinpackage org.hamcrest.text; 3c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 4c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport org.hamcrest.Description; 5c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport org.hamcrest.Matcher; 6c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport org.hamcrest.TypeSafeMatcher; 7c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 8c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport static org.hamcrest.core.AnyOf.anyOf; 9c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport static org.hamcrest.core.IsNull.nullValue; 10c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 11c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin/** 12c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * Matches empty Strings (and null). 13c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin */ 14c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinpublic final class IsEmptyString extends TypeSafeMatcher<String> { 15c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin private static final IsEmptyString INSTANCE = new IsEmptyString(); 16c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin @SuppressWarnings("unchecked") 17c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin private static final Matcher<String> NULL_OR_EMPTY_INSTANCE = anyOf(nullValue(), INSTANCE); 18c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 19c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin private IsEmptyString() { } 20c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 21c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin @Override 22c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin public boolean matchesSafely(String item) { 23c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin return item.equals(""); 24c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 25c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 26c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin @Override 27c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin public void describeTo(Description description) { 28c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin description.appendText("an empty string"); 29c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 30c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 31c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin /** 32c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * Creates a matcher of {@link String} that matches when the examined string has zero length. 33c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * For example: 34c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * <pre>assertThat("", isEmptyString())</pre> 35c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * 36c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * @deprecated use is(emptyString()) instead 37c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin */ 38c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin @Deprecated 39c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin public static Matcher<String> isEmptyString() { 40c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin return emptyString(); 41c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 42c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 43c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin /** 44c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * Creates a matcher of {@link String} that matches when the examined string has zero length. 45c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * For example: 46c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * <pre>assertThat("", is(emptyString()))</pre> 47c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * 48c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin */ 49c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin public static Matcher<String> emptyString() { 50c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin return INSTANCE; 51c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 52c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 53c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin /** 54c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * Creates a matcher of {@link String} that matches when the examined string is <code>null</code>, or 55c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * has zero length. 56c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * For example: 57c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * <pre>assertThat(((String)null), isEmptyOrNullString())</pre> 58c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * 59c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * @deprecated use is(emptyOrNullString()) instead 60c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * 61c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin */ 62c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin @Deprecated 63c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin public static Matcher<String> isEmptyOrNullString() { 64c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin return emptyOrNullString(); 65c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 66c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 67c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin /** 68c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * Creates a matcher of {@link String} that matches when the examined string is <code>null</code>, or 69c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * has zero length. 70c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * For example: 71c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * <pre>assertThat(((String)null), is(emptyOrNullString()))</pre> 72c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * 73c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin */ 74c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin public static Matcher<String> emptyOrNullString() { 75c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin return NULL_OR_EMPTY_INSTANCE; 76c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 77c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin} 78