### Question:
StringUtils { public static boolean containsCaseInsensitive(String s1, String s2) { if (s1 == null || s2 == null) { return false; } return s1.toLowerCase().contains(s2.toLowerCase()); } private  StringUtils(); static String tagSwap(String content, Map<String, String> tagSwapMap); static String insertContent(String original, int position, String content); static List<String> getParameter(String list, String delimiter, String parameterName); static String ifNullOrEmpty(final String original, final String defaultString); static String encodeURIComponent(String component, String encoding); static boolean isEmpty(final String s); static boolean isBlank(final String s); static boolean isNotEmpty(final String s); static boolean isNotBlank(final String s); static boolean isAnyBlank(final Set<String> xs); static boolean isEqualTo(String s1, String s2); static boolean compareCaseInsensitiveString(String s1, String s2); static boolean contains(String s1, String s2); static boolean containsCaseInsensitive(String s1, String s2); static boolean startsWith(String s1, String s2); static boolean match(String value, String strPattern);  }### Answer:
@Test public void shouldMatchCaseInsensitiveContains() { assertThat(StringUtils.containsCaseInsensitive("Hello world", "WO")).isTrue(); assertThat(StringUtils.containsCaseInsensitive("HELLO world", "llo")).isTrue(); assertThat(StringUtils.containsCaseInsensitive("Hello world?", "O W")).isTrue(); }
@Test public void shouldNotMatchCaseInsensitiveContains() { assertThat(StringUtils.containsCaseInsensitive("Hello world", ".*ll.*")).isFalse(); assertThat(StringUtils.containsCaseInsensitive("Hello world", "AAA")).isFalse(); assertThat(StringUtils.containsCaseInsensitive("Hello world", "Hello world?")).isFalse(); assertThat(StringUtils.containsCaseInsensitive("AardVark", "[ardvk]+")).isFalse(); }