package jetbrains.mps.kernel.tests.iotests;
/*Generated by MPS */
import junit.framework.TestCase;
import jetbrains.mps.MPSLaunch;
import jetbrains.mps.vfs.IFile;
import org.jdom.Element;
import jetbrains.mps.util.xml.XmlUtil;
import jetbrains.mps.internal.collections.runtime.Sequence;
import jetbrains.mps.internal.collections.runtime.IWhereFilter;
import junit.framework.Assert;
import jetbrains.mps.project.foreign.MPSFacetConfiguration;
import jetbrains.mps.project.foreign.IdeaModuleConfiguration;
import jetbrains.mps.project.io.DescriptorIO;
import jetbrains.mps.project.structure.modules.SolutionDescriptor;
import jetbrains.mps.project.io.DescriptorIOFacade;
import java.io.IOException;
import org.jdom.JDOMException;
import jetbrains.mps.util.JDOMUtil;
import jetbrains.mps.project.ModuleId;
import org.jetbrains.mps.openapi.persistence.PersistenceFacade;
import jetbrains.mps.project.structure.model.ModelRootDescriptor;
import org.jetbrains.mps.openapi.module.SModuleReference;
public class FacetDescriptorsIO_Test extends TestCase {
@MPSLaunch
public void test_mpsFacet() throws Exception {
IFile moduleFile = TestUtils.dataFile("module.iml");
Element module = this.readRoot(moduleFile);
Iterable<Element> components = XmlUtil.children(module, "component");
Element facetManager = Sequence.fromIterable(components).findFirst(new IWhereFilter<Element>() {
public boolean accept(Element it) {
return "FacetManager".equals(it.getAttributeValue("name"));
}
});
Assert.assertNotNull(facetManager);
Element mpsFacet = Sequence.fromIterable(XmlUtil.children(facetManager, "facet")).findFirst(new IWhereFilter<Element>() {
public boolean accept(Element fct) {
return "MPS".equals(fct.getAttributeValue("name"));
}
});
Assert.assertNotNull(mpsFacet);
Element cfg = XmlUtil.first(mpsFacet, "configuration");
MPSFacetConfiguration mpsCfg = new MPSFacetConfiguration();
mpsCfg.readFromXml(cfg);
this.assertMpsCfg(mpsCfg);
}
@MPSLaunch
public void test_ideaModule() throws Exception {
IFile moduleFile = TestUtils.dataFile("module.iml");
IdeaModuleConfiguration imc = IdeaModuleConfiguration.readFile(moduleFile);
MPSFacetConfiguration mpsCfg = imc.getMPSFacetConfiguration();
assertMpsCfg(mpsCfg);
}
@MPSLaunch
public void test_solutionDescriptorIO() throws Exception {
IFile moduleFile = TestUtils.dataFile("module.iml");
DescriptorIO<SolutionDescriptor> io = DescriptorIOFacade.getInstance().ideaProvider().solutionDescriptorIO();
Assert.assertSame(io, DescriptorIOFacade.getInstance().fromFileType(moduleFile));
SolutionDescriptor sd = io.readFromFile(moduleFile);
assertSolutionDescriptor(moduleFile, sd);
}
@MPSLaunch
public void test_nofacetDescriptorIO() throws Exception {
IFile moduleFile = TestUtils.dataFile("nofacet.iml");
DescriptorIO<SolutionDescriptor> io = DescriptorIOFacade.getInstance().ideaProvider().solutionDescriptorIO();
Assert.assertSame(io, DescriptorIOFacade.getInstance().fromFileType(moduleFile));
SolutionDescriptor sd = io.readFromFile(moduleFile);
Assert.assertNull(sd);
}
public FacetDescriptorsIO_Test() {
}
private Element readRoot(IFile moduleFile) throws IOException, JDOMException {
return JDOMUtil.loadDocument(moduleFile).getRootElement();
}
private void assertMpsCfg(MPSFacetConfiguration mpsCfg) {
Assert.assertEquals("4f50af0c-4cd4-11e1-a072-6cf049e62fe5", mpsCfg.UUID);
Assert.assertEquals("$MODULE_DIR$/source_gen", mpsCfg.generatorOutputPath);
Assert.assertEquals(false, mpsCfg.useModuleSourceFolder);
Assert.assertSame(1, mpsCfg.rootDescriptors.length);
Assert.assertEquals("$MODULE_DIR$/models", mpsCfg.rootDescriptors[0].getMemento().get("contentPath"));
Assert.assertSame(1, mpsCfg.usedLanguages.length);
Assert.assertEquals(ModuleId.fromString("f3061a53-9226-4cc5-a443-f952ceaf5816"), PersistenceFacade.getInstance().createModuleReference(mpsCfg.usedLanguages[0]).getModuleId());
}
private void assertSolutionDescriptor(IFile moduleFile, SolutionDescriptor sd) {
Assert.assertEquals("4f50af0c-4cd4-11e1-a072-6cf049e62fe5", String.valueOf(sd.getId()));
Assert.assertEquals(moduleFile.getParent().getDescendant("source_gen").getPath(), sd.getOutputPath());
Assert.assertSame(1, sd.getModelRootDescriptors().size());
Assert.assertEquals(moduleFile.getParent().getDescendant("models").getPath(), Sequence.fromIterable(((Iterable<ModelRootDescriptor>) sd.getModelRootDescriptors())).first().getMemento().get("contentPath"));
Assert.assertSame(1, sd.getUsedLanguages().size());
Assert.assertEquals(ModuleId.fromString("f3061a53-9226-4cc5-a443-f952ceaf5816"), Sequence.fromIterable(((Iterable<SModuleReference>) sd.getUsedLanguages())).first().getModuleId());
}
}