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