package org.erlide.scoping; import com.google.inject.Inject; import java.util.List; 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.xbase.lib.Extension; import org.eclipse.xtext.xbase.lib.Pair; import org.erlide.ErlangInjectorProvider; import org.erlide.erlang.Atom; import org.erlide.erlang.ErlangTestExtensions; import org.erlide.erlang.ModelExtensions; import org.erlide.erlang.Module; import org.erlide.erlang.util.ErlangTestingHelper; import org.erlide.scoping.ErlangLinkCategory; import org.erlide.scoping.ErlangLinkingHelper; import org.hamcrest.Matcher; import org.hamcrest.MatcherAssert; import org.hamcrest.Matchers; import org.junit.Test; import org.junit.runner.RunWith; @RunWith(XtextRunner.class) @InjectWith(ErlangInjectorProvider.class) @SuppressWarnings("all") public class ErlangLinkingHelperTest { @Inject private ErlangTestingHelper parser; @Inject @Extension private ModelExtensions _modelExtensions; @Inject @Extension private ErlangLinkingHelper _erlangLinkingHelper; @Inject @Extension private ErlangTestExtensions _erlangTestExtensions; @Test public void classify_noLink() { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("[�ok, 0]."); _builder.newLine(); final Pair<Module, List<Integer>> module = this.parser.parse(_builder.toString()); EObject _objectAtMarker = this._erlangTestExtensions.getObjectAtMarker(module); final Atom atom = ((Atom) _objectAtMarker); ErlangLinkCategory _classifyAtom = this._erlangLinkingHelper.classifyAtom(atom); Matcher<? super ErlangLinkCategory> _is = Matchers.<ErlangLinkCategory>is(ErlangLinkCategory.NONE); MatcherAssert.<ErlangLinkCategory>assertThat(_classifyAtom, _is); } @Test public void classify_localCall() { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("�g(3),"); _builder.newLine(); _builder.append("\t"); _builder.append("ok."); _builder.newLine(); final Pair<Module, List<Integer>> module = this.parser.parse(_builder.toString()); EObject _objectAtMarker = this._erlangTestExtensions.getObjectAtMarker(module); final Atom atom = ((Atom) _objectAtMarker); ErlangLinkCategory _classifyAtom = this._erlangLinkingHelper.classifyAtom(atom); Matcher<? super ErlangLinkCategory> _is = Matchers.<ErlangLinkCategory>is(ErlangLinkCategory.FUNCTION_CALL_LOCAL); MatcherAssert.<ErlangLinkCategory>assertThat(_classifyAtom, _is); } @Test public void classify_localCall_spec() { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("-spec �f() -> \'ok\'."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("g(3),"); _builder.newLine(); _builder.append("\t"); _builder.append("ok."); _builder.newLine(); final Pair<Module, List<Integer>> module = this.parser.parse(_builder.toString()); EObject _objectAtMarker = this._erlangTestExtensions.getObjectAtMarker(module); final Atom atom = ((Atom) _objectAtMarker); ErlangLinkCategory _classifyAtom = this._erlangLinkingHelper.classifyAtom(atom); Matcher<? super ErlangLinkCategory> _is = Matchers.<ErlangLinkCategory>is(ErlangLinkCategory.FUNCTION_CALL_LOCAL); MatcherAssert.<ErlangLinkCategory>assertThat(_classifyAtom, _is); } @Test public void classify_remoteCall() { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("w:�g(3),"); _builder.newLine(); _builder.append("\t"); _builder.append("ok."); _builder.newLine(); final Pair<Module, List<Integer>> module = this.parser.parse(_builder.toString()); EObject _objectAtMarker = this._erlangTestExtensions.getObjectAtMarker(module); final Atom atom = ((Atom) _objectAtMarker); ErlangLinkCategory _classifyAtom = this._erlangLinkingHelper.classifyAtom(atom); Matcher<? super ErlangLinkCategory> _is = Matchers.<ErlangLinkCategory>is(ErlangLinkCategory.FUNCTION_CALL_REMOTE); MatcherAssert.<ErlangLinkCategory>assertThat(_classifyAtom, _is); } @Test public void classify_remoteCall_moduleMacro() { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("?MODULE:�g(3),"); _builder.newLine(); _builder.append("\t"); _builder.append("ok."); _builder.newLine(); final Pair<Module, List<Integer>> module = this.parser.parse(_builder.toString()); EObject _objectAtMarker = this._erlangTestExtensions.getObjectAtMarker(module); final Atom atom = ((Atom) _objectAtMarker); ErlangLinkCategory _classifyAtom = this._erlangLinkingHelper.classifyAtom(atom); Matcher<? super ErlangLinkCategory> _is = Matchers.<ErlangLinkCategory>is(ErlangLinkCategory.FUNCTION_CALL_REMOTE); MatcherAssert.<ErlangLinkCategory>assertThat(_classifyAtom, _is); } @Test public void classify_remoteCall_bad() { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("W:�g(3),"); _builder.newLine(); _builder.append("\t"); _builder.append("ok."); _builder.newLine(); final Pair<Module, List<Integer>> module = this.parser.parse(_builder.toString()); EObject _objectAtMarker = this._erlangTestExtensions.getObjectAtMarker(module); final Atom atom = ((Atom) _objectAtMarker); ErlangLinkCategory _classifyAtom = this._erlangLinkingHelper.classifyAtom(atom); Matcher<? super ErlangLinkCategory> _is = Matchers.<ErlangLinkCategory>is(ErlangLinkCategory.NONE); MatcherAssert.<ErlangLinkCategory>assertThat(_classifyAtom, _is); } @Test public void classify_moduleCall() { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("�w:g(3),"); _builder.newLine(); _builder.append("\t"); _builder.append("ok."); _builder.newLine(); final Pair<Module, List<Integer>> module = this.parser.parse(_builder.toString()); EObject _objectAtMarker = this._erlangTestExtensions.getObjectAtMarker(module); final Atom atom = ((Atom) _objectAtMarker); ErlangLinkCategory _classifyAtom = this._erlangLinkingHelper.classifyAtom(atom); Matcher<? super ErlangLinkCategory> _is = Matchers.<ErlangLinkCategory>is(ErlangLinkCategory.MODULE); MatcherAssert.<ErlangLinkCategory>assertThat(_classifyAtom, _is); } @Test public void classify_moduleCall_1() { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("�w:G(3),"); _builder.newLine(); _builder.append("\t"); _builder.append("ok."); _builder.newLine(); final Pair<Module, List<Integer>> module = this.parser.parse(_builder.toString()); EObject _objectAtMarker = this._erlangTestExtensions.getObjectAtMarker(module); final Atom atom = ((Atom) _objectAtMarker); ErlangLinkCategory _classifyAtom = this._erlangLinkingHelper.classifyAtom(atom); Matcher<? super ErlangLinkCategory> _is = Matchers.<ErlangLinkCategory>is(ErlangLinkCategory.MODULE); MatcherAssert.<ErlangLinkCategory>assertThat(_classifyAtom, _is); } @Test public void classify_moduleRef() { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("fun �w:g/3,"); _builder.newLine(); _builder.append("\t"); _builder.append("ok."); _builder.newLine(); final Pair<Module, List<Integer>> module = this.parser.parse(_builder.toString()); EObject _objectAtMarker = this._erlangTestExtensions.getObjectAtMarker(module); final Atom atom = ((Atom) _objectAtMarker); ErlangLinkCategory _classifyAtom = this._erlangLinkingHelper.classifyAtom(atom); Matcher<? super ErlangLinkCategory> _is = Matchers.<ErlangLinkCategory>is(ErlangLinkCategory.MODULE); MatcherAssert.<ErlangLinkCategory>assertThat(_classifyAtom, _is); } @Test public void classify_functionRef_local() { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("fun �g/2,"); _builder.newLine(); _builder.append("\t"); _builder.append("ok."); _builder.newLine(); final Pair<Module, List<Integer>> module = this.parser.parse(_builder.toString()); EObject _objectAtMarker = this._erlangTestExtensions.getObjectAtMarker(module); final Atom atom = ((Atom) _objectAtMarker); ErlangLinkCategory _classifyAtom = this._erlangLinkingHelper.classifyAtom(atom); Matcher<? super ErlangLinkCategory> _is = Matchers.<ErlangLinkCategory>is(ErlangLinkCategory.FUNCTION_REF_LOCAL); MatcherAssert.<ErlangLinkCategory>assertThat(_classifyAtom, _is); } @Test public void classify_functionRef_remote() { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("fun w:�g/2,"); _builder.newLine(); _builder.append("\t"); _builder.append("ok."); _builder.newLine(); final Pair<Module, List<Integer>> module = this.parser.parse(_builder.toString()); EObject _objectAtMarker = this._erlangTestExtensions.getObjectAtMarker(module); final Atom atom = ((Atom) _objectAtMarker); ErlangLinkCategory _classifyAtom = this._erlangLinkingHelper.classifyAtom(atom); Matcher<? super ErlangLinkCategory> _is = Matchers.<ErlangLinkCategory>is(ErlangLinkCategory.FUNCTION_REF_REMOTE); MatcherAssert.<ErlangLinkCategory>assertThat(_classifyAtom, _is); } @Test public void classify_functionRef_moduleMacro() { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("fun ?MODULE:�g/2,"); _builder.newLine(); _builder.append("\t"); _builder.append("ok."); _builder.newLine(); final Pair<Module, List<Integer>> module = this.parser.parse(_builder.toString()); EObject _objectAtMarker = this._erlangTestExtensions.getObjectAtMarker(module); final Atom atom = ((Atom) _objectAtMarker); ErlangLinkCategory _classifyAtom = this._erlangLinkingHelper.classifyAtom(atom); Matcher<? super ErlangLinkCategory> _is = Matchers.<ErlangLinkCategory>is(ErlangLinkCategory.FUNCTION_REF_REMOTE); MatcherAssert.<ErlangLinkCategory>assertThat(_classifyAtom, _is); } @Test public void classify_functionRef_bad() { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("fun W:�g/2,"); _builder.newLine(); _builder.append("\t"); _builder.append("ok."); _builder.newLine(); final Pair<Module, List<Integer>> module = this.parser.parse(_builder.toString()); EObject _objectAtMarker = this._erlangTestExtensions.getObjectAtMarker(module); final Atom atom = ((Atom) _objectAtMarker); ErlangLinkCategory _classifyAtom = this._erlangLinkingHelper.classifyAtom(atom); Matcher<? super ErlangLinkCategory> _is = Matchers.<ErlangLinkCategory>is(ErlangLinkCategory.NONE); MatcherAssert.<ErlangLinkCategory>assertThat(_classifyAtom, _is); } @Test public void classify_record() { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("#�myrec{},"); _builder.newLine(); _builder.append("\t"); _builder.append("ok."); _builder.newLine(); final Pair<Module, List<Integer>> module = this.parser.parse(_builder.toString()); EObject _objectAtMarker = this._erlangTestExtensions.getObjectAtMarker(module); final Atom atom = ((Atom) _objectAtMarker); ErlangLinkCategory _classifyAtom = this._erlangLinkingHelper.classifyAtom(atom); Matcher<? super ErlangLinkCategory> _is = Matchers.<ErlangLinkCategory>is(ErlangLinkCategory.RECORD); MatcherAssert.<ErlangLinkCategory>assertThat(_classifyAtom, _is); } @Test public void classify_record_1() { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("#�myrec.az,"); _builder.newLine(); _builder.append("\t"); _builder.append("ok."); _builder.newLine(); final Pair<Module, List<Integer>> module = this.parser.parse(_builder.toString()); EObject _objectAtMarker = this._erlangTestExtensions.getObjectAtMarker(module); final Atom atom = ((Atom) _objectAtMarker); ErlangLinkCategory _classifyAtom = this._erlangLinkingHelper.classifyAtom(atom); Matcher<? super ErlangLinkCategory> _is = Matchers.<ErlangLinkCategory>is(ErlangLinkCategory.RECORD); MatcherAssert.<ErlangLinkCategory>assertThat(_classifyAtom, _is); } @Test public void classify_recordField() { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("#myrec.�ff,"); _builder.newLine(); _builder.append("\t"); _builder.append("ok."); _builder.newLine(); final Pair<Module, List<Integer>> module = this.parser.parse(_builder.toString()); EObject _objectAtMarker = this._erlangTestExtensions.getObjectAtMarker(module); final Atom atom = ((Atom) _objectAtMarker); ErlangLinkCategory _classifyAtom = this._erlangLinkingHelper.classifyAtom(atom); Matcher<? super ErlangLinkCategory> _is = Matchers.<ErlangLinkCategory>is(ErlangLinkCategory.RECORD_FIELD); MatcherAssert.<ErlangLinkCategory>assertThat(_classifyAtom, _is); } @Test public void classify_recordField_bad() { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("#Myrec.�ff,"); _builder.newLine(); _builder.append("\t"); _builder.append("ok."); _builder.newLine(); final Pair<Module, List<Integer>> module = this.parser.parse(_builder.toString()); EObject _objectAtMarker = this._erlangTestExtensions.getObjectAtMarker(module); final Atom atom = ((Atom) _objectAtMarker); ErlangLinkCategory _classifyAtom = this._erlangLinkingHelper.classifyAtom(atom); Matcher<? super ErlangLinkCategory> _is = Matchers.<ErlangLinkCategory>is(ErlangLinkCategory.NONE); MatcherAssert.<ErlangLinkCategory>assertThat(_classifyAtom, _is); } @Test public void classify_recordField_1() { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("#myrec{�ff=2},"); _builder.newLine(); _builder.append("\t"); _builder.append("ok."); _builder.newLine(); final Pair<Module, List<Integer>> module = this.parser.parse(_builder.toString()); EObject _objectAtMarker = this._erlangTestExtensions.getObjectAtMarker(module); final Atom atom = ((Atom) _objectAtMarker); ErlangLinkCategory _classifyAtom = this._erlangLinkingHelper.classifyAtom(atom); Matcher<? super ErlangLinkCategory> _is = Matchers.<ErlangLinkCategory>is(ErlangLinkCategory.RECORD_FIELD); MatcherAssert.<ErlangLinkCategory>assertThat(_classifyAtom, _is); } @Test public void classify_recordField_1_bad() { StringConcatenation _builder = new StringConcatenation(); _builder.append("-module(m)."); _builder.newLine(); _builder.append("f() ->"); _builder.newLine(); _builder.append("\t"); _builder.append("#Myrec{�ff=2},"); _builder.newLine(); _builder.append("\t"); _builder.append("ok."); _builder.newLine(); final Pair<Module, List<Integer>> module = this.parser.parse(_builder.toString()); EObject _objectAtMarker = this._erlangTestExtensions.getObjectAtMarker(module); final Atom atom = ((Atom) _objectAtMarker); ErlangLinkCategory _classifyAtom = this._erlangLinkingHelper.classifyAtom(atom); Matcher<? super ErlangLinkCategory> _is = Matchers.<ErlangLinkCategory>is(ErlangLinkCategory.NONE); MatcherAssert.<ErlangLinkCategory>assertThat(_classifyAtom, _is); } }