package jetbrains.mps.baseLanguage.unitTest.execution.client;
/*Generated by MPS */
import org.jetbrains.mps.annotations.Immutable;
import java.util.List;
import jetbrains.mps.internal.collections.runtime.ListSequence;
import java.util.LinkedList;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.mps.openapi.module.SRepository;
import jetbrains.mps.smodel.ModelAccessHelper;
import jetbrains.mps.util.Computable;
import org.jetbrains.mps.openapi.module.SModule;
import org.jetbrains.mps.openapi.persistence.PersistenceFacade;
import jetbrains.mps.baseLanguage.execution.api.Java_Command;
import jetbrains.mps.internal.collections.runtime.Sequence;
import jetbrains.mps.baseLanguage.unitTest.execution.server.DefaultTestExecutor;
@Immutable
public final class TestParameters {
private final Class<?> myExecutorClass;
private final List<String> myClassPath;
private final List<String> myAdditionalJvmArgs;
public TestParameters(Class<?> executorClass, List<String> classPath, List<String> jvmArgs) {
myExecutorClass = executorClass;
myClassPath = classPath;
myAdditionalJvmArgs = jvmArgs;
}
public TestParameters(Class<?> executorClass, List<String> classPath) {
this(executorClass, classPath, ListSequence.fromList(new LinkedList<String>()));
}
public Class<?> getExecutorClass() {
return myExecutorClass;
}
public List<String> getJvmArgs() {
return ListSequence.fromList(myAdditionalJvmArgs).asUnmodifiable();
}
public List<String> getClassPath() {
return ListSequence.fromList(myClassPath).asUnmodifiable();
}
public boolean comprises(@NotNull TestParameters other) {
if (this == other) {
return true;
}
if (other.getExecutorClass().isAssignableFrom(getExecutorClass())) {
if (ListSequence.fromList(myClassPath).containsSequence(ListSequence.fromList(other.getClassPath()))) {
if (ListSequence.fromList(myAdditionalJvmArgs).containsSequence(ListSequence.fromList(other.getJvmArgs()))) {
return true;
}
}
}
return false;
}
public static TestParameters calcDefault(final SRepository repo) {
List<String> classPath = new ModelAccessHelper(repo).runReadAction(new Computable<List<String>>() {
public List<String> compute() {
SModule m = PersistenceFacade.getInstance().createModuleReference("8b958198-128f-4136-80e5-ca9777caa869(jetbrains.mps.baseLanguage.unitTest.execution.startup)").resolve(repo);
return Java_Command.getClasspath(Sequence.<SModule>singleton(m));
}
});
return new TestParameters(DefaultTestExecutor.class, classPath);
}
}