use of org.eclipse.ui.views.markers.WorkbenchMarkerResolution in project xtext-eclipse by eclipse.
the class XtextGrammarQuickfixProviderTest method assertAndApplyAllResolutions.
private void assertAndApplyAllResolutions(XtextEditor xtextEditor, String issueCode, int issueDataCount, int issueCount, String resolutionLabel) throws CoreException {
final Injector injector = createInjector();
InternalBuilderTest.setAutoBuild(true);
if (xtextEditor.isDirty()) {
xtextEditor.doSave(new NullProgressMonitor());
}
InternalBuilderTest.fullBuild();
IXtextDocument document = xtextEditor.getDocument();
validateInEditor(document);
List<Issue> issues = getIssues(document);
assertFalse("Document has no issues, but should.", issues.isEmpty());
issues.iterator().forEachRemaining((issue) -> {
assertEquals(issueCode, issue.getCode());
assertNotNull(issue.getData());
assertEquals(issueDataCount, issue.getData().length);
});
IResource resource = xtextEditor.getResource();
IMarker[] problems = resource.findMarkers(MarkerTypes.FAST_VALIDATION, true, IResource.DEPTH_INFINITE);
assertEquals("Resource should have " + issueCount + " error marker.", issueCount, problems.length);
validateInEditor(document);
MarkerResolutionGenerator instance = injector.getInstance(MarkerResolutionGenerator.class);
List<IMarkerResolution> resolutions = Lists.newArrayList(instance.getResolutions(problems[0]));
assertEquals(1, resolutions.size());
IMarkerResolution resolution = resolutions.iterator().next();
assertTrue(resolution instanceof WorkbenchMarkerResolution);
WorkbenchMarkerResolution workbenchResolution = (WorkbenchMarkerResolution) resolution;
IMarker primaryMarker = problems[0];
List<IMarker> others = Lists.newArrayList(workbenchResolution.findOtherMarkers(problems));
assertFalse(others.contains(primaryMarker));
assertEquals(problems.length - 1, others.size());
others.add(primaryMarker);
workbenchResolution.run(others.toArray(new IMarker[others.size()]), new NullProgressMonitor());
if (xtextEditor.isDirty()) {
xtextEditor.doSave(null);
}
InternalBuilderTest.cleanBuild();
problems = resource.findMarkers(MarkerTypes.FAST_VALIDATION, true, IResource.DEPTH_INFINITE);
assertEquals("Resource should have no error marker.", 0, problems.length);
}
Aggregations