1c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinpackage org.hamcrest.core; 2c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 3c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinimport org.hamcrest.Matcher; 4c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 5c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin/** 6c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * Tests if the argument is a string that contains a substring. 7c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin */ 8c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffinpublic class StringContains extends SubstringMatcher { 9c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin public StringContains(boolean ignoringCase, String substring) { 10c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin super("containing", ignoringCase, substring); 11c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 12c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 13c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin @Override 14c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin protected boolean evalSubstringOf(String s) { 15c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin return converted(s).contains(converted(substring)); 16c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 17c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 18c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin /** 19c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * Creates a matcher that matches if the examined {@link String} contains the specified 20c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * {@link String} anywhere. 21c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * For example: 22c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * <pre>assertThat("myStringOfNote", containsString("ring"))</pre> 23c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * 24c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * @param substring 25c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * the substring that the returned matcher will expect to find within any examined string 26c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * 27c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin */ 28c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin public static Matcher<String> containsString(String substring) { 29c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin return new StringContains(false, substring); 30c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 31c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 32c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin /** 33c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * Creates a matcher that matches if the examined {@link String} contains the specified 34c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * {@link String} anywhere, ignoring case. 35c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * For example: 36c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * <pre>assertThat("myStringOfNote", containsString("ring"))</pre> 37c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * 38c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * @param substring 39c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * the substring that the returned matcher will expect to find within any examined string 40c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin * 41c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin */ 42c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin public static Matcher<String> containsStringIgnoringCase(String substring) { 43c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin return new StringContains(true, substring); 44c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin } 45c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin 46c1dbb44e71e47410ad5685aba3ef3fccb095a2b4Paul Duffin} 47