### Question:
UrlDecoder { public static String decode(String s) { if (s.indexOf('%') == -1) { if (s.indexOf('+') == -1) return s; char[] str = s.toCharArray(); for (int i = 0; i < str.length; i++) { if (str[i] == '+') str[i] = ' '; } return new String(str); } else return decodeEncodedString(s); }  static String decode(String s); static TextualPath decodePath(String pathString);  }### Answer:
@Test public void testDecode() { assertEquals(".-_*", UrlDecoder.decode(".-_*")); assertEquals("$+!'(),", UrlDecoder.decode("%24%2B%21%27%28%29%2C")); assertEquals("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789", UrlDecoder.decode("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789")); assertEquals("x\u00eb\u0106\u04b8abc\ufb9a", UrlDecoder.decode("x%C3%AB%C4%86%D2%B8abc%EF%AE%9A")); assertEquals("abc=def?sdf&hil sdlkfj l sdf slkdfj 123&def", UrlDecoder.decode("abc%3Ddef%3Fsdf%26hil+sdlkfj+l+sdf+slkdfj+123%26def")); }