package org.example.smalljava.tests;
import com.google.inject.Inject;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.xtend2.lib.StringConcatenation;
import org.eclipse.xtext.junit4.InjectWith;
import org.eclipse.xtext.junit4.XtextRunner;
import org.eclipse.xtext.junit4.util.ParseHelper;
import org.eclipse.xtext.junit4.validation.ValidationTestHelper;
import org.eclipse.xtext.naming.IQualifiedNameProvider;
import org.eclipse.xtext.naming.QualifiedName;
import org.eclipse.xtext.xbase.lib.Exceptions;
import org.eclipse.xtext.xbase.lib.Extension;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
import org.example.smalljava.SmallJavaInjectorProvider;
import org.example.smalljava.smallJava.SJClass;
import org.example.smalljava.smallJava.SJMember;
import org.example.smalljava.smallJava.SJProgram;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(XtextRunner.class)
@InjectWith(SmallJavaInjectorProvider.class)
@SuppressWarnings("all")
public class SmallJavaQualifiedNameTest {
@Inject
@Extension
private ParseHelper<SJProgram> _parseHelper;
@Inject
@Extension
private ValidationTestHelper _validationTestHelper;
@Inject
@Extension
private IQualifiedNameProvider _iQualifiedNameProvider;
@Test
public void testClass() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("class C { }");
SJProgram _parse = this._parseHelper.parse(_builder);
EList<SJClass> _classes = _parse.getClasses();
SJClass _head = IterableExtensions.<SJClass>head(_classes);
this.assertQualifiedName(_head, "C");
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
@Test
public void testField() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("class D {}");
_builder.newLine();
_builder.append("class C { D c; }");
SJProgram _parse = this._parseHelper.parse(_builder);
EList<SJClass> _classes = _parse.getClasses();
SJClass _get = _classes.get(1);
EList<SJMember> _members = _get.getMembers();
SJMember _head = IterableExtensions.<SJMember>head(_members);
this.assertQualifiedName(_head, "C.c");
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
@Test
public void testMethod() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("class D {}");
_builder.newLine();
_builder.append("class C { D m() {return null;} }");
SJProgram _parse = this._parseHelper.parse(_builder);
EList<SJClass> _classes = _parse.getClasses();
SJClass _get = _classes.get(1);
EList<SJMember> _members = _get.getMembers();
SJMember _head = IterableExtensions.<SJMember>head(_members);
this.assertQualifiedName(_head, "C.m");
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
@Test
public void testFieldWithPackage() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("package my.pack;");
_builder.newLine();
_builder.append("class D {}");
_builder.newLine();
_builder.append("class C { D c; }");
SJProgram _parse = this._parseHelper.parse(_builder);
EList<SJClass> _classes = _parse.getClasses();
SJClass _get = _classes.get(1);
EList<SJMember> _members = _get.getMembers();
SJMember _head = IterableExtensions.<SJMember>head(_members);
this.assertQualifiedName(_head, "my.pack.C.c");
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
private void assertQualifiedName(final EObject o, final String expected) {
this._validationTestHelper.assertNoErrors(o);
QualifiedName _fullyQualifiedName = this._iQualifiedNameProvider.getFullyQualifiedName(o);
String _string = _fullyQualifiedName.toString();
Assert.assertEquals(expected, _string);
}
}