### Question:
MapEditor implements IsWidget, LeafAttributeEditor<Map<String, String>> { @Override public void showErrors(final List<EditorError> errors) { StringBuilder sb = new StringBuilder(); for (EditorError error : errors) { if (error.getEditor() == this) { sb.append("\n").append(error.getMessage()); } } boolean hasErrors = sb.length() > 0; if (!hasErrors) { view.clearError(); return; } view.showError(new SafeHtmlBuilder().appendEscaped(sb.substring(1)).toSafeHtml()); } @Inject  MapEditor(final View view,
                     final Event<org.dashbuilder.common.client.event.ValueChangeEvent<Map<String, String>>> valueChangeEvent); @PostConstruct void init(); @Override void showErrors(final List<EditorError> errors); @Override Widget asWidget(); @Override void setValue(final Map<String, String> value); @Override Map<String, String> getValue(); public View view; }### Answer:
@Test public void testShowErrors() throws Exception { EditorError e1 = mockEditorError(presenter, "m1"); EditorError e2 = mockEditorError(presenter, "m2"); List<EditorError> errors = new ArrayList<EditorError>(2); errors.add(e1); errors.add(e2); presenter.showErrors(errors); final ArgumentCaptor<SafeHtml> errorSafeHtmlCaptor = ArgumentCaptor.forClass(SafeHtml.class); verify(view, times(1)).showError(errorSafeHtmlCaptor.capture()); verify(view, times(0)).clearError(); verify(view, times(0)).init(presenter); verify(view, times(0)).setAddText(anyString()); verify(view, times(0)).setEmptyText(anyString()); verify(view, times(0)).addButtonColumn(anyInt(), anyString(), anyInt()); verify(view, times(0)).addTextColumn(anyInt(), anyString(), anyBoolean(), anyInt()); verify(view, times(0)).setData(anyList()); verify(view, times(0)).setRowCount(anyInt()); verify(view, times(0)).removeColumn(anyInt()); final SafeHtml value = errorSafeHtmlCaptor.getValue(); Assert.assertEquals("m1\nm2", value.asString()); }