package com.intellij.flex.uiDesigner;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.MessageType;
import gnu.trove.THashSet;
import org.jetbrains.annotations.Nullable;
import java.util.Set;
class TestDocumentProblemManager extends DocumentProblemManager {
private static final Set<ProblemDescriptor> EMPTY_EXPECTED_PROBLEMS = new THashSet<>();
private static Set<ProblemDescriptor> expectedProblems = EMPTY_EXPECTED_PROBLEMS;
public static void setExpectedProblems(@Nullable Set<ProblemDescriptor> value) {
if (value == null) {
if (expectedProblems != EMPTY_EXPECTED_PROBLEMS && !expectedProblems.isEmpty()) {
throw new AssertionError("expectedProblems must be empty");
}
expectedProblems = EMPTY_EXPECTED_PROBLEMS;
}
else {
expectedProblems = value;
}
}
@Override
public void report(Project project, ProblemsHolder problems) {
for (ProblemDescriptor problem : problems.getProblems()) {
if (!expectedProblems.remove(problem)) {
StringBuilder builder = new StringBuilder("Unexpected problem: ");
throw new AssertionError(toString(problem, builder));
}
}
}
@Override
public void report(Project project, String message, MessageType messageType) {
throw new AssertionError(message);
}
}