### Question:
LabelWithPlaceholder extends Label { public LabelWithPlaceholder setPlaceholder(String valueIfEmpty) { return setPlaceholder(Model.of(valueIfEmpty)); } LabelWithPlaceholder(final String id);  LabelWithPlaceholder(final String id, String label);  LabelWithPlaceholder(final String id, IModel<?> model); String getCssClass(); LabelWithPlaceholder setPlaceholder(String valueIfEmpty); LabelWithPlaceholder setPlaceholder(IModel<?> valueIfEmpty); boolean isEmpty(); @Override void onComponentTagBody(MarkupStream markupStream,
                                   ComponentTag openTag);  }### Answer:
@Test public void testRender_normal() throws Exception { startComponentWithXHtml( this.tester, new LabelWithPlaceholder("test", "hello!").setPlaceholder("foo"), "<p wicket:id=\"test\">blah</p>" ); this.tester.assertContains("<p>hello!</p>"); }
@Test public void testRender_emptyWithDefault() throws Exception { startComponentWithXHtml( this.tester, new LabelWithPlaceholder("test").setPlaceholder("foo & bar"), "<p wicket:id=\"test\">blah</p>" ); this.tester.assertContains("<p class=\"empty\">foo &amp; bar</p>"); }
@Test public void testRender_emptyWithDefaultNoEscape() throws Exception { startComponentWithXHtml( this.tester, new LabelWithPlaceholder("test") .setPlaceholder("foo & bar") .setEscapeModelStrings(false), "<p wicket:id=\"test\">blah</p>" ); this.tester.assertContains("<p class=\"empty\">foo & bar</p>"); }