package org.example.entities.ui.tests;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IProject;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.xtend2.lib.StringConcatenation;
import org.eclipse.xtext.junit4.ui.AbstractEditorTest;
import org.eclipse.xtext.junit4.ui.util.IResourcesSetupUtil;
import org.eclipse.xtext.junit4.ui.util.JavaProjectSetupUtil;
import org.eclipse.xtext.resource.XtextResource;
import org.eclipse.xtext.ui.XtextProjectHelper;
import org.eclipse.xtext.ui.editor.XtextEditor;
import org.eclipse.xtext.ui.editor.model.IXtextDocument;
import org.eclipse.xtext.util.concurrent.IUnitOfWork;
import org.eclipse.xtext.xbase.lib.Exceptions;
import org.eclipse.xtext.xbase.lib.ObjectExtensions;
import org.eclipse.xtext.xbase.lib.Procedures.Procedure1;
import org.example.entities.EntitiesModelUtil;
import org.example.entities.entities.EntitiesFactory;
import org.example.entities.entities.Entity;
import org.example.entities.entities.Model;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
@SuppressWarnings("all")
public class EntitiesEditorTest extends AbstractEditorTest {
private final String TEST_PROJECT = "mytestproject";
@Override
protected String getEditorId() {
return "org.example.entities.Entities";
}
@Before
@Override
public void setUp() {
try {
super.setUp();
this.createJavaProjectWithXtextNature();
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
public void createJavaProjectWithXtextNature() {
try {
IJavaProject _createJavaProject = JavaProjectSetupUtil.createJavaProject(this.TEST_PROJECT);
final Procedure1<IJavaProject> _function = new Procedure1<IJavaProject>() {
@Override
public void apply(final IJavaProject it) {
try {
IProject _project = it.getProject();
IResourcesSetupUtil.addNature(_project, XtextProjectHelper.NATURE_ID);
JavaProjectSetupUtil.addSourceFolder(it, "entities-gen");
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
};
ObjectExtensions.<IJavaProject>operator_doubleArrow(_createJavaProject, _function);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
public IFile createTestFile(final String contents) {
try {
return IResourcesSetupUtil.createFile((this.TEST_PROJECT + "/src/test.entities"), contents);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
@Test
public void testEntitiesEditor() {
try {
IFile _createTestFile = this.createTestFile("entity E {}");
this.openEditor(_createTestFile);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
@Test
public void testEntitiesEditorContents() {
try {
IFile _createTestFile = this.createTestFile("entity E {}");
XtextEditor _openEditor = this.openEditor(_createTestFile);
IXtextDocument _document = _openEditor.getDocument();
String _get = _document.get();
Assert.assertEquals("entity E {}", _get);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
@Test
public void testEntitiesEditorContentsAsModel() {
try {
IFile _createTestFile = this.createTestFile("entity E {}");
XtextEditor _openEditor = this.openEditor(_createTestFile);
IXtextDocument _document = _openEditor.getDocument();
final IUnitOfWork<Model, XtextResource> _function = new IUnitOfWork<Model, XtextResource>() {
@Override
public Model exec(final XtextResource it) throws Exception {
EList<EObject> _contents = it.getContents();
EObject _get = _contents.get(0);
return ((Model) _get);
}
};
Model _readOnly = _document.<Model>readOnly(_function);
EList<Entity> _entities = _readOnly.getEntities();
Entity _get = _entities.get(0);
String _name = _get.getName();
Assert.assertEquals("E", _name);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
@Test
public void testChangeContents() {
try {
IFile _createTestFile = this.createTestFile("entity E {}");
final XtextEditor editor = this.openEditor(_createTestFile);
IXtextDocument _document = editor.getDocument();
final IUnitOfWork<Boolean, XtextResource> _function = new IUnitOfWork<Boolean, XtextResource>() {
@Override
public Boolean exec(final XtextResource it) throws Exception {
boolean _xblockexpression = false;
{
EList<EObject> _contents = it.getContents();
EObject _get = _contents.get(0);
final Model model = ((Model) _get);
EList<Entity> _entities = model.getEntities();
final Entity currentEntity = _entities.get(0);
EList<Entity> _entities_1 = model.getEntities();
Entity _createEntity = EntitiesFactory.eINSTANCE.createEntity();
final Procedure1<Entity> _function = new Procedure1<Entity>() {
@Override
public void apply(final Entity it) {
it.setName("Added");
it.setSuperType(currentEntity);
}
};
Entity _doubleArrow = ObjectExtensions.<Entity>operator_doubleArrow(_createEntity, _function);
_xblockexpression = _entities_1.add(_doubleArrow);
}
return Boolean.valueOf(_xblockexpression);
}
};
_document.<Boolean>modify(_function);
StringConcatenation _builder = new StringConcatenation();
_builder.append("entity E {}");
_builder.newLine();
_builder.newLine();
_builder.append("entity Added extends E {");
_builder.newLine();
_builder.append("}");
String _string = _builder.toString();
IXtextDocument _document_1 = editor.getDocument();
String _get = _document_1.get();
Assert.assertEquals(_string, _get);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
@Test
public void testAddEntity() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("entity E1 {}");
_builder.newLine();
_builder.newLine();
_builder.append("entity E2 {}");
IFile _createTestFile = this.createTestFile(_builder.toString());
final XtextEditor editor = this.openEditor(_createTestFile);
IXtextDocument _document = editor.getDocument();
final IUnitOfWork<Entity, XtextResource> _function = new IUnitOfWork<Entity, XtextResource>() {
@Override
public Entity exec(final XtextResource it) throws Exception {
Entity _xblockexpression = null;
{
EList<EObject> _contents = it.getContents();
EObject _get = _contents.get(0);
EList<Entity> _entities = ((Model) _get).getEntities();
final Entity currentEntity = _entities.get(0);
_xblockexpression = EntitiesModelUtil.addEntityAfter(currentEntity, "Added");
}
return _xblockexpression;
}
};
_document.<Entity>modify(_function);
StringConcatenation _builder_1 = new StringConcatenation();
_builder_1.append("entity E1 {}");
_builder_1.newLine();
_builder_1.newLine();
_builder_1.append("entity Added {");
_builder_1.newLine();
_builder_1.append("}");
_builder_1.newLine();
_builder_1.newLine();
_builder_1.append("entity E2 {}");
String _string = _builder_1.toString();
IXtextDocument _document_1 = editor.getDocument();
String _get = _document_1.get();
Assert.assertEquals(_string, _get);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
}