### Question:
StringUtil { public static boolean endsWithIgnoreCase(String str, String suffix) { if (str == null || suffix == null) { return str == null && suffix == null; } int strlen = str.length(); if (suffix.length() > strlen) { return false; } return str.substring(str.length() - suffix.length(), strlen).equalsIgnoreCase(suffix); } private  StringUtil(); static boolean isEmpty(String val); static boolean isNotEmpty(String val); static boolean isBlank(final CharSequence cs); static boolean isNotBlank(final CharSequence cs); static boolean contains(String val, char charToSearchFor); static boolean equalsIgnoreCase(String str1, String str2); static String[] split(String str, String token, int max); static String replace(String str, String from, String to); static String trim(final String str); static String trimToNull(String str); static String join(Object[] values, String joinToken); static T parse(String val, Class<T> type); static String capitalize(final String str); static String uncapitalize(final String str); static boolean endsWithIgnoreCase(String str, String suffix); static String stripEnd(final String str, final String stripChars);  }### Answer:
@Test public void testStringEndsWith() { Assert.assertFalse(StringUtil.endsWithIgnoreCase(null, "bla")); Assert.assertFalse(StringUtil.endsWithIgnoreCase("bla", null)); Assert.assertTrue(StringUtil.endsWithIgnoreCase(null, null)); Assert.assertTrue(StringUtil.endsWithIgnoreCase(null, null)); Assert.assertTrue(StringUtil.endsWithIgnoreCase("I have a cAt", "Cat")); Assert.assertFalse(StringUtil.endsWithIgnoreCase("at", "Cat")); Assert.assertTrue(StringUtil.endsWithIgnoreCase("at", "")); }