package jetbrains.mps.generator.impl.tests; /*Generated by MPS */ import jetbrains.mps.MPSLaunch; import jetbrains.mps.lang.test.runtime.BaseTransformationTest; import org.junit.Test; import jetbrains.mps.lang.test.runtime.BaseTestBody; import org.jetbrains.mps.openapi.model.SModel; import jetbrains.mps.smodel.tempmodel.TemporaryModels; import jetbrains.mps.smodel.tempmodel.TempModuleOptions; import org.jetbrains.mps.openapi.model.SNode; import jetbrains.mps.generator.impl.cache.FileSwapOwner; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SNodeOperations; import jetbrains.mps.smodel.adapter.structure.MetaAdapterFactory; import java.util.List; import jetbrains.mps.internal.collections.runtime.ListSequence; import java.util.ArrayList; import junit.framework.Assert; import jetbrains.mps.lang.test.matcher.NodesMatcher; import java.io.IOException; import java.util.Map; import jetbrains.mps.internal.collections.runtime.MapSequence; import java.util.HashMap; import java.util.LinkedHashMap; import jetbrains.mps.smodel.SNodePointer; import jetbrains.mps.smodel.ModuleRepositoryFacade; import jetbrains.mps.lang.test.matcher.NodeDifference; import jetbrains.mps.lang.smodel.generator.smodelAdapter.SModelOperations; import jetbrains.mps.internal.collections.runtime.IMapping; @MPSLaunch public class FileSwapOwnerTests_Test extends BaseTransformationTest { @Test public void test_justWrite() throws Throwable { initTest("${mps_home}", "r:a8dd08c8-d222-4842-87dd-546039cb1959(jetbrains.mps.generator.impl.tests@tests)", false); runTest("jetbrains.mps.generator.impl.tests.FileSwapOwnerTests_Test$TestBody", "test_justWrite", true); } @Test public void test_stringUserObjects() throws Throwable { initTest("${mps_home}", "r:a8dd08c8-d222-4842-87dd-546039cb1959(jetbrains.mps.generator.impl.tests@tests)", false); runTest("jetbrains.mps.generator.impl.tests.FileSwapOwnerTests_Test$TestBody", "test_stringUserObjects", true); } @Test public void test_intUserObjects() throws Throwable { initTest("${mps_home}", "r:a8dd08c8-d222-4842-87dd-546039cb1959(jetbrains.mps.generator.impl.tests@tests)", false); runTest("jetbrains.mps.generator.impl.tests.FileSwapOwnerTests_Test$TestBody", "test_intUserObjects", true); } @Test public void test_charUserObjects() throws Throwable { initTest("${mps_home}", "r:a8dd08c8-d222-4842-87dd-546039cb1959(jetbrains.mps.generator.impl.tests@tests)", false); runTest("jetbrains.mps.generator.impl.tests.FileSwapOwnerTests_Test$TestBody", "test_charUserObjects", true); } @Test public void test_numberUserObjects() throws Throwable { initTest("${mps_home}", "r:a8dd08c8-d222-4842-87dd-546039cb1959(jetbrains.mps.generator.impl.tests@tests)", false); runTest("jetbrains.mps.generator.impl.tests.FileSwapOwnerTests_Test$TestBody", "test_numberUserObjects", true); } @Test public void test_booleanUserObjects() throws Throwable { initTest("${mps_home}", "r:a8dd08c8-d222-4842-87dd-546039cb1959(jetbrains.mps.generator.impl.tests@tests)", false); runTest("jetbrains.mps.generator.impl.tests.FileSwapOwnerTests_Test$TestBody", "test_booleanUserObjects", true); } @Test public void test_mpsUserObjects() throws Throwable { initTest("${mps_home}", "r:a8dd08c8-d222-4842-87dd-546039cb1959(jetbrains.mps.generator.impl.tests@tests)", false); runTest("jetbrains.mps.generator.impl.tests.FileSwapOwnerTests_Test$TestBody", "test_mpsUserObjects", true); } @Test public void test_baseLanguageStructure() throws Throwable { initTest("${mps_home}", "r:a8dd08c8-d222-4842-87dd-546039cb1959(jetbrains.mps.generator.impl.tests@tests)", false); runTest("jetbrains.mps.generator.impl.tests.FileSwapOwnerTests_Test$TestBody", "test_baseLanguageStructure", true); } @Test public void test_testOverloadedOperatorsSandbox() throws Throwable { initTest("${mps_home}", "r:a8dd08c8-d222-4842-87dd-546039cb1959(jetbrains.mps.generator.impl.tests@tests)", false); runTest("jetbrains.mps.generator.impl.tests.FileSwapOwnerTests_Test$TestBody", "test_testOverloadedOperatorsSandbox", true); } @Test public void test_testSkipNodesWhileSaving() throws Throwable { initTest("${mps_home}", "r:a8dd08c8-d222-4842-87dd-546039cb1959(jetbrains.mps.generator.impl.tests@tests)", false); runTest("jetbrains.mps.generator.impl.tests.FileSwapOwnerTests_Test$TestBody", "test_testSkipNodesWhileSaving", true); } @MPSLaunch public static class TestBody extends BaseTestBody { public void test_justWrite() throws Exception { addNodeById("1732396662099564446"); try { SModel model = TemporaryModels.getInstance().create(false, false, TempModuleOptions.forDefaultModule()); try { SNode node = FileSwapOwner.writeAndReadNode(SNodeOperations.cast(getNodeById("1732396662099564449"), SNodeOperations.asSConcept(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc67c7f0L, "LocalVariableDeclarationStatement")))); model.addRootNode(node); { List<SNode> nodesBefore = ListSequence.fromListAndArray(new ArrayList<SNode>(), SNodeOperations.cast(getNodeById("1732396662099564449"), SNodeOperations.asSConcept(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc67c7f0L, "LocalVariableDeclarationStatement")))); List<SNode> nodesAfter = ListSequence.fromListAndArray(new ArrayList<SNode>(), node); Assert.assertNull("The nodes '" + nodesBefore + "' and '" + nodesAfter + "' do not match!", new NodesMatcher().match(nodesBefore, nodesAfter)); } } finally { TemporaryModels.getInstance().dispose(model); } } catch (IOException e) { e.printStackTrace(); org.junit.Assert.fail(e.getMessage()); } } public void test_stringUserObjects() throws Exception { addNodeById("1732396662099564446"); Map<Object, Object> userObjects = MapSequence.fromMap(new HashMap<Object, Object>()); MapSequence.fromMap(userObjects).put("1", "1"); MapSequence.fromMap(userObjects).put("2", "2"); this.testUserObjectsSaving(userObjects); } public void test_intUserObjects() throws Exception { addNodeById("1732396662099564446"); Map<Object, Object> userObjects = MapSequence.fromMap(new LinkedHashMap<Object, Object>(16, (float) 0.75, false)); MapSequence.fromMap(userObjects).put(2, "2"); MapSequence.fromMap(userObjects).put("3", 3); MapSequence.fromMap(userObjects).put(4, 4); this.testUserObjectsSaving(userObjects); } public void test_charUserObjects() throws Exception { addNodeById("1732396662099564446"); Map<Object, Object> userObjects = MapSequence.fromMap(new LinkedHashMap<Object, Object>(16, (float) 0.75, false)); MapSequence.fromMap(userObjects).put('1', '1'); MapSequence.fromMap(userObjects).put('2', '2'); MapSequence.fromMap(userObjects).put('3', '3'); this.testUserObjectsSaving(userObjects); } public void test_numberUserObjects() throws Exception { addNodeById("1732396662099564446"); Map<Object, Object> userObjects = MapSequence.fromMap(new LinkedHashMap<Object, Object>(16, (float) 0.75, false)); MapSequence.fromMap(userObjects).put(0.5, 0.5); MapSequence.fromMap(userObjects).put(((float) 1.5), ((float) 1.5)); MapSequence.fromMap(userObjects).put(((byte) 2), ((byte) 2)); MapSequence.fromMap(userObjects).put(((short) 3), ((short) 3)); MapSequence.fromMap(userObjects).put(Long.MAX_VALUE, Long.MAX_VALUE); this.testUserObjectsSaving(userObjects); } public void test_booleanUserObjects() throws Exception { addNodeById("1732396662099564446"); Map<Object, Object> userObjects = MapSequence.fromMap(new LinkedHashMap<Object, Object>(16, (float) 0.75, false)); MapSequence.fromMap(userObjects).put(false, false); MapSequence.fromMap(userObjects).put(false, true); MapSequence.fromMap(userObjects).put(true, false); MapSequence.fromMap(userObjects).put(true, true); this.testUserObjectsSaving(userObjects); } public void test_mpsUserObjects() throws Exception { addNodeById("1732396662099564446"); Map<Object, Object> userObjects = MapSequence.fromMap(new LinkedHashMap<Object, Object>(16, (float) 0.75, false)); MapSequence.fromMap(userObjects).put(new SNodePointer(SNodeOperations.cast(getNodeById("1732396662099564449"), SNodeOperations.asSConcept(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc67c7f0L, "LocalVariableDeclarationStatement")))), new SNodePointer(SNodeOperations.cast(getNodeById("1732396662099564449"), SNodeOperations.asSConcept(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc67c7f0L, "LocalVariableDeclarationStatement"))))); MapSequence.fromMap(userObjects).put(SNodeOperations.getModel(SNodeOperations.cast(getNodeById("1732396662099564449"), SNodeOperations.asSConcept(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc67c7f0L, "LocalVariableDeclarationStatement")))).getReference(), new ModuleRepositoryFacade(myProject.getRepository()).getModelByName("java.lang@java_stub").getReference()); MapSequence.fromMap(userObjects).put(SNodeOperations.cast(getNodeById("1732396662099564449"), SNodeOperations.asSConcept(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc67c7f0L, "LocalVariableDeclarationStatement"))).getNodeId(), new SNodePointer(SNodeOperations.cast(getNodeById("1732396662099564449"), SNodeOperations.asSConcept(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc67c7f0L, "LocalVariableDeclarationStatement"))))); MapSequence.fromMap(userObjects).put(SNodeOperations.getModel(SNodeOperations.cast(getNodeById("1732396662099564449"), SNodeOperations.asSConcept(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc67c7f0L, "LocalVariableDeclarationStatement")))).getModelId(), SNodeOperations.getModel(SNodeOperations.cast(getNodeById("1732396662099564449"), SNodeOperations.asSConcept(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc67c7f0L, "LocalVariableDeclarationStatement")))).getReference()); this.testUserObjectsSaving(userObjects); } public void test_baseLanguageStructure() throws Exception { addNodeById("1732396662099564446"); SModel sampleModel = new ModuleRepositoryFacade(myProject.getRepository()).getModelByName("jetbrains.mps.baseLanguage.structure"); SModel resultModel = FileSwapOwner.writeAndReadModel(sampleModel); List<NodeDifference> matchNodes = new NodesMatcher().match(SModelOperations.roots(sampleModel, null), SModelOperations.roots(resultModel, null)); Assert.assertNull(matchNodes); } public void test_testOverloadedOperatorsSandbox() throws Exception { addNodeById("1732396662099564446"); SModel sampleModel = new ModuleRepositoryFacade(myProject.getRepository()).getModelByName("jetbrains.mps.baseLanguage.overloadedOerators.sandbox.test"); SModel resultModel = FileSwapOwner.writeAndReadModel(sampleModel); List<NodeDifference> matchNodes = new NodesMatcher().match(SModelOperations.roots(sampleModel, null), SModelOperations.roots(resultModel, null)); Assert.assertNull(matchNodes); } public void test_testSkipNodesWhileSaving() throws Exception { addNodeById("1732396662099564446"); Map<Object, Object> userObjects = MapSequence.fromMap(new LinkedHashMap<Object, Object>(16, (float) 0.75, false)); MapSequence.fromMap(userObjects).put("1", "1"); MapSequence.fromMap(userObjects).put(SNodeOperations.cast(getNodeById("1732396662099564449"), SNodeOperations.asSConcept(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc67c7f0L, "LocalVariableDeclarationStatement"))), SNodeOperations.cast(getNodeById("1732396662099564449"), SNodeOperations.asSConcept(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc67c7f0L, "LocalVariableDeclarationStatement")))); MapSequence.fromMap(userObjects).put("2", "2"); Map<Object, Object> userObjectsToSkip = MapSequence.fromMap(new LinkedHashMap<Object, Object>(16, (float) 0.75, false)); MapSequence.fromMap(userObjectsToSkip).put(SNodeOperations.cast(getNodeById("1732396662099564449"), SNodeOperations.asSConcept(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc67c7f0L, "LocalVariableDeclarationStatement"))), SNodeOperations.cast(getNodeById("1732396662099564449"), SNodeOperations.asSConcept(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc67c7f0L, "LocalVariableDeclarationStatement")))); this.testUserObjectsSaving(userObjects, userObjectsToSkip); } public void testUserObjectsSaving(Map<Object, Object> userObjects, Map<Object, Object> userObjectsToLoose) { SNode var1732396662099564454 = getNodeById("1732396662099564449"); try { for (IMapping<Object, Object> object : MapSequence.fromMap(userObjects)) { SNodeOperations.cast(getNodeById("1732396662099564449"), SNodeOperations.asSConcept(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc67c7f0L, "LocalVariableDeclarationStatement"))).putUserObject(object.key(), object.value()); } SNode readNode = FileSwapOwner.writeAndReadNode(SNodeOperations.cast(getNodeById("1732396662099564449"), SNodeOperations.asSConcept(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc67c7f0L, "LocalVariableDeclarationStatement")))); SModel model = TemporaryModels.getInstance().create(false, false, TempModuleOptions.forDefaultModule()); try { model.addRootNode(readNode); { List<SNode> nodesBefore = ListSequence.fromListAndArray(new ArrayList<SNode>(), SNodeOperations.cast(getNodeById("1732396662099564449"), SNodeOperations.asSConcept(MetaAdapterFactory.getConcept(MetaAdapterFactory.getLanguage(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, "jetbrains.mps.baseLanguage"), 0xf8cc67c7f0L, "LocalVariableDeclarationStatement")))); List<SNode> nodesAfter = ListSequence.fromListAndArray(new ArrayList<SNode>(), readNode); Assert.assertNull("The nodes '" + nodesBefore + "' and '" + nodesAfter + "' do not match!", new NodesMatcher().match(nodesBefore, nodesAfter)); } for (IMapping<Object, Object> object : MapSequence.fromMap(userObjects)) { if (MapSequence.fromMap(userObjectsToLoose).contains(object)) { Assert.assertNull("User object " + object + " should have been lost.", readNode.getUserObject(object.key())); } else { Assert.assertEquals("User object " + object + " was lost.", object.value(), readNode.getUserObject(object.key())); } } } finally { TemporaryModels.getInstance().dispose(model); } } catch (IOException e) { e.printStackTrace(); org.junit.Assert.fail(e.getMessage()); } } public void testUserObjectsSaving(Map<Object, Object> userObjects) { this.testUserObjectsSaving(userObjects, MapSequence.fromMap(new HashMap<Object, Object>())); } } }