### Question:
Html5ManifestWriter implements ManifestWriter { static String escape(TreeLogger logger, String path) throws UnableToCompleteException { StringBuilder builder = new StringBuilder(path.length()); for (int i = 0; i != path.length(); ++i) { int codePoint = path.codePointAt(i); if (codePoint > 255) { logger.log(TreeLogger.Type.ERROR, "Manifest entry '" + path + "' contains illegal character at index " + i); throw new UnableToCompleteException(); } else { char c = path.charAt(i); if (isAlphaNum(c) || c == '.' || c == '-' || c == '_') { builder.append(c); } else if (c == '/' || c == '\\') { builder.append('/'); } else { builder.append('%').append(Integer.toHexString(c).toUpperCase()); } } } return builder.toString(); }  @Override String getSuffix(); @Override void appendEntry(TreeLogger logger, String path); @Override String getEntries();  }### Answer:
@Test public void escape() throws UnableToCompleteException { assertThat(Html5ManifestWriter.escape(null, "path/image.png"), equalTo("path/image.png")); assertThat(Html5ManifestWriter.escape(null, "path/image with space.png"), equalTo("path/image%20with%20space.png")); assertThat(Html5ManifestWriter.escape(null, "path/élite.png"), equalTo("path/%E9lite.png")); }