### Question:
ConfluenceDocumentBuilder extends AbstractMarkupDocumentBuilder { @Override public void imageLink(Attributes linkAttributes, Attributes imageAttributes, String href, String imageUrl) { assertOpenBlock(); try { currentBlock.write('!'); currentBlock.write(imageUrl); writeImageAttributes(imageAttributes); currentBlock.write('!'); currentBlock.write(':'); currentBlock.write(href); } catch (IOException e) { throw new RuntimeException(e); } } ConfluenceDocumentBuilder(Writer out); @Override void characters(String text); @Override void entityReference(String entity); @Override void image(Attributes attributes, String url); @Override void link(Attributes attributes, String hrefOrHashName, String text); @Override void imageLink(Attributes linkAttributes, Attributes imageAttributes, String href, String imageUrl); @Override void acronym(String text, String definition); @Override void lineBreak();  }### Answer:
@Test public void imageLink() { builder.beginDocument(); builder.characters("a "); builder.imageLink(new LinkAttributes(), new ImageAttributes(), "#foo", "fooImage.png"); builder.characters(" test"); builder.endDocument(); String markup = out.toString(); assertEquals("a !fooImage.png!:#foo test\n\n", markup); }