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