package jetbrains.mps.execution.impl.configurations.tests.commands; /*Generated by MPS */ import jetbrains.mps.baseLanguage.unitTest.execution.client.TestStateListener; import java.util.Set; import jetbrains.mps.internal.collections.runtime.SetSequence; import java.util.HashSet; import java.util.List; import jetbrains.mps.baseLanguage.unitTest.execution.client.ITestNodeWrapper; import jetbrains.mps.internal.collections.runtime.Sequence; import jetbrains.mps.internal.collections.runtime.ListSequence; import java.util.ArrayList; import jetbrains.mps.internal.collections.runtime.ISelector; import jetbrains.mps.baseLanguage.unitTest.execution.TestEvent; public class CheckTestStateListener implements TestStateListener { private final Set<String> mySuccessExpected = SetSequence.fromSet(new HashSet<String>()); private final Set<String> myFailExpected = SetSequence.fromSet(new HashSet<String>()); private final Set<String> myFailed = SetSequence.fromSet(new HashSet<String>()); private final StringBuilder myMessages = new StringBuilder(); public CheckTestStateListener(List<ITestNodeWrapper> success, List<ITestNodeWrapper> failed) { SetSequence.fromSet(mySuccessExpected).addSequence(Sequence.fromIterable(selectNames(success))); SetSequence.fromSet(myFailExpected).addSequence(Sequence.fromIterable(selectNames(failed))); } private Iterable<String> selectNames(List<ITestNodeWrapper> tests) { List<String> result = ListSequence.fromList(new ArrayList<String>()); for (final ITestNodeWrapper test : ListSequence.fromList(tests)) { if (test.isTestCase()) { ListSequence.fromList(result).addSequence(Sequence.fromIterable(test.getTestMethods()).select(new ISelector<ITestNodeWrapper, String>() { public String select(ITestNodeWrapper method) { return test.getFqName() + "." + method.getName(); } })); } else { ListSequence.fromList(result).addElement(test.getTestCase().getFqName() + "." + test.getName()); } } return result; } @Override public void onLooseTest(String className, String methodName) { myMessages.append("Lost test: ").append(className).append(".").append(methodName).append("\n"); } @Override public void onTestAssumptionFailure(TestEvent event) { SetSequence.fromSet(myFailed).addElement(this.getNameFromEvent(event)); if (!(SetSequence.fromSet(myFailExpected).contains(this.getNameFromEvent(event)))) { myMessages.append("Unexpected assumption failure: ").append(this.getNameFromEvent(event)).append("\n"); } else { } } @Override public void onTestFailure(TestEvent event) { SetSequence.fromSet(myFailed).addElement(this.getNameFromEvent(event)); if (!(SetSequence.fromSet(myFailExpected).contains(this.getNameFromEvent(event)))) { myMessages.append("Unexpected failure: ").append(this.getNameFromEvent(event)).append("\n"); } else { } } private String getNameFromEvent(TestEvent event) { return event.getTestCaseName() + "." + event.getTestMethodName(); } @Override public void onTestFinish(TestEvent event) { if (!(SetSequence.fromSet(myFailed).contains(this.getNameFromEvent(event)))) { if (!(SetSequence.fromSet(mySuccessExpected).contains(this.getNameFromEvent(event)))) { myMessages.append("Unexpected success: ").append(this.getNameFromEvent(event)).append("\n"); } } } @Override public void onTestStart(TestEvent event) { } public String getMessages() { return myMessages.toString(); } }