package jetbrains.mps.migration.test.tests;
/*Generated by MPS */
import junit.framework.TestCase;
import jetbrains.mps.project.AbstractModule;
import jetbrains.mps.project.structure.modules.ModuleDescriptor;
import java.util.Set;
import org.jetbrains.mps.openapi.language.SLanguage;
import org.jetbrains.mps.openapi.module.SModule;
import java.util.Map;
import jetbrains.mps.project.structure.modules.ModuleReference;
import jetbrains.mps.project.ModuleId;
import jetbrains.mps.internal.collections.runtime.MapSequence;
import jetbrains.mps.internal.collections.runtime.IVisitor;
import jetbrains.mps.internal.collections.runtime.IMapping;
import org.jetbrains.mps.openapi.module.SDependency;
import jetbrains.mps.internal.collections.runtime.Sequence;
import jetbrains.mps.internal.collections.runtime.ISelector;
import jetbrains.mps.module.SDependencyImpl;
import org.jetbrains.mps.openapi.module.SDependencyScope;
import jetbrains.mps.lang.migration.runtime.base.MigrationScriptBase;
import jetbrains.mps.lang.migration.runtime.base.MigrationScriptReference;
import org.jetbrains.mps.openapi.model.SNode;
public class Migrations_Test extends TestCase {
/*package*/ static class MockModule extends AbstractModule {
private ModuleDescriptor myModuleDescriptor;
private Set<SLanguage> myUsedLanguages;
private Iterable<SModule> myDependencies;
public MockModule(String name, Map<SLanguage, Integer> usedLanguages, Iterable<SModule> dependencies) {
setModuleReference(new ModuleReference(name, ModuleId.foreign(name)));
myModuleDescriptor = new ModuleDescriptor();
myUsedLanguages = MapSequence.fromMap(usedLanguages).keySet();
myDependencies = dependencies;
MapSequence.fromMap(usedLanguages).visitAll(new IVisitor<IMapping<SLanguage, Integer>>() {
public void visit(IMapping<SLanguage, Integer> it) {
myModuleDescriptor.getLanguageVersions().put(it.key(), it.value());
}
});
}
public ModuleDescriptor getModuleDescriptor() {
return myModuleDescriptor;
}
public Set<SLanguage> getAllUsedLanguages() {
return myUsedLanguages;
}
public Iterable<SDependency> getDeclaredDependencies() {
return Sequence.fromIterable(myDependencies).select(new ISelector<SModule, SDependency>() {
public SDependency select(final SModule it) {
return (SDependency) new SDependencyImpl(it, SDependencyScope.DEFAULT, false);
}
});
}
}
/*package*/ static class MockMigrationScript extends MigrationScriptBase {
private MigrationScriptReference myReference;
public MockMigrationScript(SLanguage lang, int version) {
myReference = new MigrationScriptReference(lang, version);
}
public MigrationScriptReference getReference() {
return myReference;
}
public SNode execute(SModule moduleToMigrate) {
return null;
}
public String getCaption() {
return "'script " + myReference.getFromVersion() + " in language " + myReference.getLanguage() + "'";
}
}
}