package jetbrains.mps.testbench.junit.suites;
/*Generated by MPS */
import org.junit.ClassRule;
import jetbrains.mps.testbench.PerformanceMessenger;
import org.jetbrains.mps.openapi.module.SModule;
import org.junit.Test;
import java.util.List;
import jetbrains.mps.smodel.ModelAccessHelper;
import jetbrains.mps.util.Computable;
import java.util.Collection;
import org.jetbrains.mps.openapi.model.SModel;
import jetbrains.mps.checkers.AbstractConstraintsCheckerRootCheckerAdapter;
import jetbrains.mps.checkers.ConstraintsChecker;
import jetbrains.mps.checkers.RefScopeChecker;
import jetbrains.mps.checkers.TargetConceptChecker;
import org.junit.Assert;
public class AuditConstraints extends BaseCheckModulesTest {
@ClassRule
public static final PerformanceMessenger ourStats = new PerformanceMessenger("auditConstraints");
public AuditConstraints(SModule module) {
super(module);
}
@Test
public void checkConstraints() {
final CheckingTestStatistic statistic = new CheckingTestStatistic();
List<String> errors = new ModelAccessHelper(BaseCheckModulesTest.getContextProject().getModelAccess()).runReadAction(new Computable<List<String>>() {
public List<String> compute() {
Collection<SModel> models = new ModelsExtractor(myModule, true).getModels();
// todo: add UsedLanguageChecker
return new CheckingTestsUtil(statistic).applyChecker(new AbstractConstraintsCheckerRootCheckerAdapter(AbstractConstraintsCheckerRootCheckerAdapter.SKIP_CONSTRAINTS_CONDITION, new ConstraintsChecker(), new RefScopeChecker(), new TargetConceptChecker()), models);
}
});
ourStats.report("Errors", statistic.getNumErrors());
ourStats.report("Warnings", statistic.getNumWarnings());
Assert.assertTrue("Constraints and scopes errors:\n" + CheckingTestsUtil.formatErrors(errors), errors.isEmpty());
}
}