### Question:
WildcardUtils { public static boolean matchString(String pattern, String str) { return STRING_MATCHER.matches(pattern, str); }  static boolean matchPath(String pattern, String path); static boolean matchString(String pattern, String str); static List<LinearRange> getLiteralRanges(String pattern); @Nullable static PatternApplied applyPattern(String pattern, String str, boolean caseSensitive); @Nullable static LinearRange rangeOfMatch(String pattern, String str);  }### Answer:
@Test public void shouldMatchString() { assertTrue(matchString("hello?world", "hello world")); assertFalse(matchString("hello?world", "hello world")); assertTrue(matchString("hello*world", "hello world")); assertTrue(matchString("***.java", "com/example/test.c")); assertTrue(matchString("com*.java", "com/example/Test.java")); assertTrue(matchString("com*.java", "src/com/example/Test.java")); assertFalse(matchString("src*.java", "resource/com/example/Test.java")); }