package jetbrains.mps.lang.test.behavior;
/*Generated by MPS */
import org.jetbrains.mps.openapi.model.SNode;
import jetbrains.mps.errors.MessageStatus;
import jetbrains.mps.lang.test.runtime.TestsErrorsChecker;
import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations;
import jetbrains.mps.errors.IErrorReporter;
import jetbrains.mps.lang.test.runtime.NodeCheckerUtil;
import junit.framework.Assert;
import jetbrains.mps.typesystem.inference.ITypechecking;
import jetbrains.mps.typesystem.inference.ITypeContextOwner;
import jetbrains.mps.typesystem.inference.DefaultTypecheckingContextOwner;
import jetbrains.mps.typesystem.inference.TypeContextManager;
public class PerformUtil {
public static void checkNodeHasError(SNode operation) {
checkNodeHasMessageWithStatus(operation, MessageStatus.ERROR);
}
public static void checkNodeHasWarning(SNode operation) {
checkNodeHasMessageWithStatus(operation, MessageStatus.WARNING);
}
public static void checkNodeHasMessageWithStatus(SNode operation, MessageStatus messageStatus) {
final SNode nodeToCheck = INodesTestMethod__BehaviorDescriptor.getAnnotatedNode_id38gbJV0XvZR.invoke(operation);
TestsErrorsChecker checker = new TestsErrorsChecker(SNodeOperations.getContainingRoot(nodeToCheck));
final Iterable<IErrorReporter> errorReporters = checker.getErrorsSpecificType(nodeToCheck, messageStatus);
final String errorString = "node <" + NodeCheckerUtil.nodeWithIdToString(nodeToCheck) + "> does not have expected " + messageStatus.getPresentation() + " message";
Assert.assertTrue(errorString, (boolean) IChecksRules__BehaviorDescriptor.hasExpectedRuleMessage_id4CT6QR8SJl8.invoke(operation, errorReporters, SNodeOperations.getModel(nodeToCheck).getRepository()));
}
public static void checkNodeWithTypeCheckingAction(final SNode node, ITypechecking.Action checkingAction) {
ITypeContextOwner owner = new DefaultTypecheckingContextOwner();
SNode containingRoot = node.getContainingRoot();
TypeContextManager.getInstance().runTypeCheckingAction(owner, containingRoot, checkingAction);
}
}