package jetbrains.mps.baseLanguage.unitTest.execution.settings; /*Generated by MPS */ import org.jetbrains.mps.openapi.model.SModel; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.mps.openapi.util.ProgressMonitor; import java.util.List; import jetbrains.mps.baseLanguage.unitTest.execution.client.ITestNodeWrapper; import jetbrains.mps.internal.collections.runtime.ListSequence; import java.util.ArrayList; import java.util.Collection; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.util.IterableUtil; import jetbrains.mps.internal.collections.runtime.CollectionSequence; import jetbrains.mps.baseLanguage.unitTest.execution.client.TestNodeWrapperFactory; public class ModelTestCollector extends TestCollector { private final SModel myModel; public ModelTestCollector(@NotNull SModel model, @Nullable ProgressMonitor monitor, boolean breakOnFirstFound) { super(monitor, breakOnFirstFound); myModel = model; } @NotNull @Override public List<ITestNodeWrapper> collect() { List<ITestNodeWrapper> result = ListSequence.fromList(new ArrayList<ITestNodeWrapper>()); Collection<SNode> roots = IterableUtil.asCollection(myModel.getRootNodes()); myMonitor.start("model " + myModel.getName(), roots.size()); try { for (SNode root : CollectionSequence.fromCollection(roots)) { if (myMonitor.isCanceled()) { return ListSequence.fromList(new ArrayList<ITestNodeWrapper>()); } ITestNodeWrapper wrappedNode = TestNodeWrapperFactory.tryToWrap(root); if (wrappedNode != null) { ListSequence.fromList(result).addElement(wrappedNode); if (myBreakOnFirstFound) { return result; } } myMonitor.advance(1); } } finally { myMonitor.done(); } return result; } }