package org.erlide.erlang;
import com.google.inject.Inject;
import org.eclipse.emf.common.util.EList;
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.xbase.lib.Exceptions;
import org.eclipse.xtext.xbase.lib.IterableExtensions;
import org.erlide.ErlangInjectorProvider;
import org.erlide.erlang.Atom;
import org.erlide.erlang.CustomAttribute;
import org.erlide.erlang.DefineAttribute;
import org.erlide.erlang.ErlList;
import org.erlide.erlang.Expression;
import org.erlide.erlang.Expressions;
import org.erlide.erlang.Form;
import org.erlide.erlang.Function;
import org.erlide.erlang.FunctionClause;
import org.erlide.erlang.Module;
import org.erlide.erlang.ModuleAttribute;
import org.erlide.erlang.RecordAttribute;
import org.erlide.erlang.SpecAttribute;
import org.erlide.erlang.TypeAttribute;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(XtextRunner.class)
@InjectWith(ErlangInjectorProvider.class)
@SuppressWarnings("all")
public class ParserTest {
@Inject
private ParseHelper<Module> parser;
@Test
public void moduleAttributeTest() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("-module(x).");
_builder.newLine();
final Module model = this.parser.parse(_builder);
EList<Form> _forms = model.getForms();
Form _head = IterableExtensions.<Form>head(_forms);
final ModuleAttribute entity = ((ModuleAttribute) _head);
String _tag = entity.getTag();
Assert.assertEquals(_tag, "module");
final String mod = entity.getModuleName();
Assert.assertEquals(mod, "x");
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
@Test
public void moduleAttributeTest1() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("x+1.");
_builder.newLine();
final Module model = this.parser.parse(_builder);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
@Test
public void specAttributeTest() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("-spec f()-> void().");
_builder.newLine();
final Module model = this.parser.parse(_builder);
EList<Form> _forms = model.getForms();
Form _head = IterableExtensions.<Form>head(_forms);
final SpecAttribute entity = ((SpecAttribute) _head);
String _tag = entity.getTag();
Assert.assertEquals(_tag, "spec");
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
@Test
public void typeAttributeTest() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("-type myType() :: integer().");
_builder.newLine();
final Module model = this.parser.parse(_builder);
EList<Form> _forms = model.getForms();
Form _head = IterableExtensions.<Form>head(_forms);
final TypeAttribute entity = ((TypeAttribute) _head);
String _tag = entity.getTag();
Assert.assertEquals(_tag, "type");
final String key = entity.getName();
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
@Test
public void recordAttributeTest() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("-record(x, {a, b}).");
_builder.newLine();
final Module model = this.parser.parse(_builder);
EList<Form> _forms = model.getForms();
Form _head = IterableExtensions.<Form>head(_forms);
final RecordAttribute entity = ((RecordAttribute) _head);
String _tag = entity.getTag();
Assert.assertEquals(_tag, "record");
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
@Test
public void defineAttributeTest_1() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("-define(X, ofx, abb). ");
_builder.newLine();
final Module model = this.parser.parse(_builder);
EList<Form> _forms = model.getForms();
Form _head = IterableExtensions.<Form>head(_forms);
final DefineAttribute entity = ((DefineAttribute) _head);
String _tag = entity.getTag();
Assert.assertEquals(_tag, "define");
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
@Test
public void defineAttributeTest_2() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("-define(X).");
_builder.newLine();
final Module model = this.parser.parse(_builder);
EList<Form> _forms = model.getForms();
Form _head = IterableExtensions.<Form>head(_forms);
final DefineAttribute entity = ((DefineAttribute) _head);
String _tag = entity.getTag();
Assert.assertEquals(_tag, "define");
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
@Test
public void genericAttributeTest_1() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("-myTag([x, aa, bb]).");
_builder.newLine();
final Module model = this.parser.parse(_builder);
EList<Form> _forms = model.getForms();
Form _head = IterableExtensions.<Form>head(_forms);
final CustomAttribute entity = ((CustomAttribute) _head);
String _tag = entity.getTag();
Assert.assertEquals(_tag, "myTag");
final EList<Expression> mod = entity.getValue();
Expression _get = mod.get(0);
Assert.assertTrue((_get instanceof ErlList));
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
@Test
public void LineAttributeTest_1() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("f() -> ?line ok, ok, ?line ok.");
_builder.newLine();
final Module model = this.parser.parse(_builder);
EList<Form> _forms = model.getForms();
Form _head = IterableExtensions.<Form>head(_forms);
final Function fun = ((Function) _head);
EList<FunctionClause> _clauses = fun.getClauses();
FunctionClause _head_1 = IterableExtensions.<FunctionClause>head(_clauses);
final Expressions body = _head_1.getBody();
EList<Expression> _exprs = body.getExprs();
int _size = _exprs.size();
Assert.assertEquals(3, _size);
EList<Expression> _exprs_1 = body.getExprs();
Expression _head_2 = IterableExtensions.<Expression>head(_exprs_1);
boolean _isLine = _head_2.isLine();
Assert.assertTrue(_isLine);
EList<Expression> _exprs_2 = body.getExprs();
Iterable<Expression> _tail = IterableExtensions.<Expression>tail(_exprs_2);
Expression _head_3 = IterableExtensions.<Expression>head(_tail);
boolean _isLine_1 = _head_3.isLine();
Assert.assertFalse(_isLine_1);
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
@Test
public void fullStopTest_1() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("f() -> ok.% comment");
_builder.newLine();
final Module model = this.parser.parse(_builder);
EList<Form> _forms = model.getForms();
Form _head = IterableExtensions.<Form>head(_forms);
final Function fun = ((Function) _head);
EList<FunctionClause> _clauses = fun.getClauses();
FunctionClause _head_1 = IterableExtensions.<FunctionClause>head(_clauses);
final Expressions body = _head_1.getBody();
EList<Expression> _exprs = body.getExprs();
int _size = _exprs.size();
Assert.assertEquals(1, _size);
EList<Expression> _exprs_1 = body.getExprs();
final Expression expr = IterableExtensions.<Expression>head(_exprs_1);
Assert.assertTrue((expr instanceof Atom));
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
@Test
public void fullStopTest_2() {
try {
StringConcatenation _builder = new StringConcatenation();
_builder.append("f() -> ok.");
final Module model = this.parser.parse(_builder);
EList<Form> _forms = model.getForms();
Form _head = IterableExtensions.<Form>head(_forms);
final Function fun = ((Function) _head);
EList<FunctionClause> _clauses = fun.getClauses();
FunctionClause _head_1 = IterableExtensions.<FunctionClause>head(_clauses);
final Expressions body = _head_1.getBody();
EList<Expression> _exprs = body.getExprs();
int _size = _exprs.size();
Assert.assertEquals(1, _size);
EList<Expression> _exprs_1 = body.getExprs();
final Expression expr = IterableExtensions.<Expression>head(_exprs_1);
Assert.assertTrue((expr instanceof Atom));
} catch (Throwable _e) {
throw Exceptions.sneakyThrow(_e);
}
}
}