package org.example.entities.tests; import com.google.inject.Inject; import org.eclipse.xtend2.lib.StringConcatenation; import org.eclipse.xtext.junit4.InjectWith; import org.eclipse.xtext.junit4.TemporaryFolder; import org.eclipse.xtext.junit4.XtextRunner; import org.eclipse.xtext.util.IAcceptor; import org.eclipse.xtext.xbase.compiler.CompilationTestHelper; import org.eclipse.xtext.xbase.lib.Exceptions; import org.eclipse.xtext.xbase.lib.Extension; import org.eclipse.xtext.xbase.lib.ObjectExtensions; import org.eclipse.xtext.xbase.lib.Procedures.Procedure1; import org.eclipse.xtext.xbase.lib.util.ReflectExtensions; import org.example.entities.EntitiesInjectorProvider; import org.junit.Assert; import org.junit.Rule; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(XtextRunner.class) @InjectWith(EntitiesInjectorProvider.class) @SuppressWarnings("all") public class EntitiesGeneratorTest { @Rule @Inject public TemporaryFolder temporaryFolder; @Inject @Extension private CompilationTestHelper _compilationTestHelper; @Inject @Extension private ReflectExtensions _reflectExtensions; @Test public void testGeneratedCode() { try { StringConcatenation _builder = new StringConcatenation(); _builder.append("entity MyEntity {"); _builder.newLine(); _builder.append("\t"); _builder.append("string myAttribute;"); _builder.newLine(); _builder.append("}"); _builder.newLine(); StringConcatenation _builder_1 = new StringConcatenation(); _builder_1.append("package entities;"); _builder_1.newLine(); _builder_1.newLine(); _builder_1.append("public class MyEntity {"); _builder_1.newLine(); _builder_1.append("\t"); _builder_1.append("private String myAttribute;"); _builder_1.newLine(); _builder_1.newLine(); _builder_1.append("\t"); _builder_1.append("public String getMyAttribute() {"); _builder_1.newLine(); _builder_1.append("\t\t"); _builder_1.append("return myAttribute;"); _builder_1.newLine(); _builder_1.append("\t"); _builder_1.append("}"); _builder_1.newLine(); _builder_1.append("\t"); _builder_1.newLine(); _builder_1.append("\t"); _builder_1.append("public void setMyAttribute(String _arg) {"); _builder_1.newLine(); _builder_1.append("\t\t"); _builder_1.append("this.myAttribute = _arg;"); _builder_1.newLine(); _builder_1.append("\t"); _builder_1.append("}"); _builder_1.newLine(); _builder_1.append("\t"); _builder_1.newLine(); _builder_1.append("}"); _builder_1.newLine(); this._compilationTestHelper.assertCompilesTo(_builder, _builder_1); } catch (Throwable _e) { throw Exceptions.sneakyThrow(_e); } } @Test public void testGeneratedCode2() { try { StringConcatenation _builder = new StringConcatenation(); _builder.append("entity MyEntity {"); _builder.newLine(); _builder.append("\t"); _builder.append("string myAttribute;"); _builder.newLine(); _builder.append("}"); _builder.newLine(); final IAcceptor<CompilationTestHelper.Result> _function = new IAcceptor<CompilationTestHelper.Result>() { @Override public void accept(final CompilationTestHelper.Result it) { StringConcatenation _builder = new StringConcatenation(); _builder.append("package entities;"); _builder.newLine(); _builder.newLine(); _builder.append("public class MyEntity {"); _builder.newLine(); _builder.append("\t"); _builder.append("private String myAttribute;"); _builder.newLine(); _builder.newLine(); _builder.append("\t"); _builder.append("public String getMyAttribute() {"); _builder.newLine(); _builder.append("\t\t"); _builder.append("return myAttribute;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("public void setMyAttribute(String _arg) {"); _builder.newLine(); _builder.append("\t\t"); _builder.append("this.myAttribute = _arg;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("}"); _builder.newLine(); String _string = _builder.toString(); String _singleGeneratedCode = it.getSingleGeneratedCode(); Assert.assertEquals(_string, _singleGeneratedCode); } }; this._compilationTestHelper.compile(_builder, _function); } catch (Throwable _e) { throw Exceptions.sneakyThrow(_e); } } @Test public void testGeneratedValidJavaCode() { try { StringConcatenation _builder = new StringConcatenation(); _builder.append("entity MyEntity {"); _builder.newLine(); _builder.append("\t"); _builder.append("string myAttribute;"); _builder.newLine(); _builder.append("}"); _builder.newLine(); final IAcceptor<CompilationTestHelper.Result> _function = new IAcceptor<CompilationTestHelper.Result>() { @Override public void accept(final CompilationTestHelper.Result it) { it.getCompiledClass(); } }; this._compilationTestHelper.compile(_builder, _function); } catch (Throwable _e) { throw Exceptions.sneakyThrow(_e); } } @Test public void testTwoCompiledClasses() { try { StringConcatenation _builder = new StringConcatenation(); _builder.append("entity FirstEntity {"); _builder.newLine(); _builder.append("\t"); _builder.append("SecondEntity myAttribute;"); _builder.newLine(); _builder.append("}"); _builder.newLine(); _builder.newLine(); _builder.append("entity SecondEntity {"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("}"); _builder.newLine(); final IAcceptor<CompilationTestHelper.Result> _function = new IAcceptor<CompilationTestHelper.Result>() { @Override public void accept(final CompilationTestHelper.Result it) { Class<?> _compiledClass = it.getCompiledClass("entities.FirstEntity"); Assert.assertNotNull(_compiledClass); Class<?> _compiledClass_1 = it.getCompiledClass("entities.SecondEntity"); Assert.assertNotNull(_compiledClass_1); } }; this._compilationTestHelper.compile(_builder, _function); } catch (Throwable _e) { throw Exceptions.sneakyThrow(_e); } } @Test public void testGeneratedJavaCode() { try { StringConcatenation _builder = new StringConcatenation(); _builder.append("entity E {"); _builder.newLine(); _builder.append("\t"); _builder.append("string myAttribute;"); _builder.newLine(); _builder.append("}"); _builder.newLine(); final IAcceptor<CompilationTestHelper.Result> _function = new IAcceptor<CompilationTestHelper.Result>() { @Override public void accept(final CompilationTestHelper.Result it) { try { Class<?> _compiledClass = it.getCompiledClass(); Object _newInstance = _compiledClass.newInstance(); final Procedure1<Object> _function = new Procedure1<Object>() { @Override public void apply(final Object it) { try { Object _invoke = EntitiesGeneratorTest.this._reflectExtensions.invoke(it, "getMyAttribute"); Assert.assertNull(_invoke); EntitiesGeneratorTest.this._reflectExtensions.invoke(it, "setMyAttribute", "testvalue"); Object _invoke_1 = EntitiesGeneratorTest.this._reflectExtensions.invoke(it, "getMyAttribute"); Assert.assertEquals("testvalue", _invoke_1); } catch (Throwable _e) { throw Exceptions.sneakyThrow(_e); } } }; ObjectExtensions.<Object>operator_doubleArrow(_newInstance, _function); } catch (Throwable _e) { throw Exceptions.sneakyThrow(_e); } } }; this._compilationTestHelper.compile(_builder, _function); } catch (Throwable _e) { throw Exceptions.sneakyThrow(_e); } } @Test public void testGeneratedCodeWithTwoEntites() { try { StringConcatenation _builder = new StringConcatenation(); _builder.append("entity FirstEntity {"); _builder.newLine(); _builder.append("\t"); _builder.append("SecondEntity myAttribute;"); _builder.newLine(); _builder.append("}"); _builder.newLine(); _builder.newLine(); _builder.append("entity SecondEntity { }"); _builder.newLine(); final IAcceptor<CompilationTestHelper.Result> _function = new IAcceptor<CompilationTestHelper.Result>() { @Override public void accept(final CompilationTestHelper.Result it) { StringConcatenation _builder = new StringConcatenation(); _builder.append("package entities;"); _builder.newLine(); _builder.newLine(); _builder.append("public class FirstEntity {"); _builder.newLine(); _builder.append("\t"); _builder.append("private SecondEntity myAttribute;"); _builder.newLine(); _builder.newLine(); _builder.append("\t"); _builder.append("public SecondEntity getMyAttribute() {"); _builder.newLine(); _builder.append("\t\t"); _builder.append("return myAttribute;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("public void setMyAttribute(SecondEntity _arg) {"); _builder.newLine(); _builder.append("\t\t"); _builder.append("this.myAttribute = _arg;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("}"); _builder.newLine(); String _string = _builder.toString(); String _generatedCode = it.getGeneratedCode("entities.FirstEntity"); Assert.assertEquals(_string, _generatedCode); StringConcatenation _builder_1 = new StringConcatenation(); _builder_1.append("package entities;"); _builder_1.newLine(); _builder_1.newLine(); _builder_1.append("public class SecondEntity {"); _builder_1.newLine(); _builder_1.newLine(); _builder_1.append("}"); _builder_1.newLine(); String _string_1 = _builder_1.toString(); String _generatedCode_1 = it.getGeneratedCode("entities.SecondEntity"); Assert.assertEquals(_string_1, _generatedCode_1); } }; this._compilationTestHelper.compile(_builder, _function); } catch (Throwable _e) { throw Exceptions.sneakyThrow(_e); } } @Test public void testGeneratedJavaCodeWithTwoClasses() { try { StringConcatenation _builder = new StringConcatenation(); _builder.append("entity FirstEntity {"); _builder.newLine(); _builder.append("\t"); _builder.append("SecondEntity myAttribute;"); _builder.newLine(); _builder.append("}"); _builder.newLine(); _builder.newLine(); _builder.append("entity SecondEntity {"); _builder.newLine(); _builder.append("\t"); _builder.append("string s;"); _builder.newLine(); _builder.append("}"); _builder.newLine(); final IAcceptor<CompilationTestHelper.Result> _function = new IAcceptor<CompilationTestHelper.Result>() { @Override public void accept(final CompilationTestHelper.Result it) { try { Class<?> _compiledClass = it.getCompiledClass("entities.FirstEntity"); final Object FirstEntity = _compiledClass.newInstance(); Class<?> _compiledClass_1 = it.getCompiledClass("entities.SecondEntity"); final Object SecondEntity = _compiledClass_1.newInstance(); EntitiesGeneratorTest.this._reflectExtensions.invoke(SecondEntity, "setS", "testvalue"); EntitiesGeneratorTest.this._reflectExtensions.invoke(FirstEntity, "setMyAttribute", SecondEntity); Object _invoke = EntitiesGeneratorTest.this._reflectExtensions.invoke(FirstEntity, "getMyAttribute"); Assert.assertSame(SecondEntity, _invoke); Object _invoke_1 = EntitiesGeneratorTest.this._reflectExtensions.invoke(FirstEntity, "getMyAttribute"); Object _invoke_2 = EntitiesGeneratorTest.this._reflectExtensions.invoke(_invoke_1, "getS"); Assert.assertEquals("testvalue", _invoke_2); } catch (Throwable _e) { throw Exceptions.sneakyThrow(_e); } } }; this._compilationTestHelper.compile(_builder, _function); } catch (Throwable _e) { throw Exceptions.sneakyThrow(_e); } } @Test public void testGeneratedCodeComplex() { try { StringConcatenation _builder = new StringConcatenation(); _builder.append("entity MyEntity {"); _builder.newLine(); _builder.append(" "); _builder.append("MyEntity[] arrayAttr;"); _builder.newLine(); _builder.append(" "); _builder.append("MyEntity[10] arrayAttrWithDimension;"); _builder.newLine(); _builder.append(" "); _builder.append("MyEntity notArrayAttr;"); _builder.newLine(); _builder.append(" "); _builder.append("string stringAttr;"); _builder.newLine(); _builder.append(" "); _builder.append("boolean booleanAttr;"); _builder.newLine(); _builder.append(" "); _builder.append("int[] intArrayAttr;"); _builder.newLine(); _builder.append("}"); _builder.newLine(); final IAcceptor<CompilationTestHelper.Result> _function = new IAcceptor<CompilationTestHelper.Result>() { @Override public void accept(final CompilationTestHelper.Result it) { StringConcatenation _builder = new StringConcatenation(); _builder.append("package entities;"); _builder.newLine(); _builder.newLine(); _builder.append("public class MyEntity {"); _builder.newLine(); _builder.append("\t"); _builder.append("private MyEntity[] arrayAttr;"); _builder.newLine(); _builder.append("\t"); _builder.append("private MyEntity[] arrayAttrWithDimension;"); _builder.newLine(); _builder.append("\t"); _builder.append("private MyEntity notArrayAttr;"); _builder.newLine(); _builder.append("\t"); _builder.append("private String stringAttr;"); _builder.newLine(); _builder.append("\t"); _builder.append("private boolean booleanAttr;"); _builder.newLine(); _builder.append("\t"); _builder.append("private int[] intArrayAttr;"); _builder.newLine(); _builder.newLine(); _builder.append("\t"); _builder.append("public MyEntity[] getArrayAttr() {"); _builder.newLine(); _builder.append("\t\t"); _builder.append("return arrayAttr;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("public void setArrayAttr(MyEntity[] _arg) {"); _builder.newLine(); _builder.append("\t\t"); _builder.append("this.arrayAttr = _arg;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("public MyEntity[] getArrayAttrWithDimension() {"); _builder.newLine(); _builder.append("\t\t"); _builder.append("return arrayAttrWithDimension;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("public void setArrayAttrWithDimension(MyEntity[] _arg) {"); _builder.newLine(); _builder.append("\t\t"); _builder.append("this.arrayAttrWithDimension = _arg;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("public MyEntity getNotArrayAttr() {"); _builder.newLine(); _builder.append("\t\t"); _builder.append("return notArrayAttr;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("public void setNotArrayAttr(MyEntity _arg) {"); _builder.newLine(); _builder.append("\t\t"); _builder.append("this.notArrayAttr = _arg;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("public String getStringAttr() {"); _builder.newLine(); _builder.append("\t\t"); _builder.append("return stringAttr;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("public void setStringAttr(String _arg) {"); _builder.newLine(); _builder.append("\t\t"); _builder.append("this.stringAttr = _arg;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("public boolean getBooleanAttr() {"); _builder.newLine(); _builder.append("\t\t"); _builder.append("return booleanAttr;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("public void setBooleanAttr(boolean _arg) {"); _builder.newLine(); _builder.append("\t\t"); _builder.append("this.booleanAttr = _arg;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("public int[] getIntArrayAttr() {"); _builder.newLine(); _builder.append("\t\t"); _builder.append("return intArrayAttr;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("\t"); _builder.append("public void setIntArrayAttr(int[] _arg) {"); _builder.newLine(); _builder.append("\t\t"); _builder.append("this.intArrayAttr = _arg;"); _builder.newLine(); _builder.append("\t"); _builder.append("}"); _builder.newLine(); _builder.append("\t"); _builder.newLine(); _builder.append("}"); _builder.newLine(); String _string = _builder.toString(); String _singleGeneratedCode = it.getSingleGeneratedCode(); Assert.assertEquals(_string, _singleGeneratedCode); it.getCompiledClass(); } }; this._compilationTestHelper.compile(_builder, _function); } catch (Throwable _e) { throw Exceptions.sneakyThrow(_e); } } }