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();
}
}