package org.elixir_lang.reference.callable; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiReference; import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase; import org.elixir_lang.psi.ElixirIdentifier; import org.elixir_lang.psi.call.Call; import org.elixir_lang.structure_view.element.CallDefinitionClause; public class Issue463Test extends LightCodeInsightFixtureTestCase { /* * Tests */ public void testDirectModuleQualifier() { myFixture.configureByFiles("direct_module_qualifier.ex", "referenced.ex"); PsiElement elementAtCaret = myFixture .getFile() .findElementAt(myFixture.getCaretOffset()); assertNotNull(elementAtCaret); PsiElement grandParent = elementAtCaret.getParent().getParent(); assertNotNull(grandParent); assertInstanceOf(grandParent, Call.class); PsiReference reference = grandParent.getReference(); assertNotNull(reference); PsiElement resolved = reference.resolve(); assertNotNull(resolved); assertInstanceOf(resolved, ElixirIdentifier.class); assertEquals(resolved.getText(), "changeset"); PsiElement maybeDefCall = resolved.getParent().getParent().getParent(); assertInstanceOf(maybeDefCall, Call.class); assertTrue(CallDefinitionClause.is((Call) maybeDefCall)); } public void testAliasedModuleQualifier() { myFixture.configureByFiles("aliased_module_qualifier.ex", "referenced.ex"); PsiElement elementAtCaret = myFixture .getFile() .findElementAt(myFixture.getCaretOffset()); assertNotNull(elementAtCaret); PsiElement grandParent = elementAtCaret.getParent().getParent(); assertNotNull(grandParent); assertInstanceOf(grandParent, Call.class); PsiReference reference = grandParent.getReference(); assertNotNull(reference); PsiElement resolved = reference.resolve(); assertNotNull(resolved); assertInstanceOf(resolved, ElixirIdentifier.class); assertEquals(resolved.getText(), "changeset"); PsiElement maybeDefCall = resolved.getParent().getParent().getParent(); assertInstanceOf(maybeDefCall, Call.class); assertTrue(CallDefinitionClause.is((Call) maybeDefCall)); } public void testDoubleAliasesModuleQualifier() { myFixture.configureByFiles("double_aliased_module_qualifier.ex", "referenced.ex"); PsiElement elementAtCaret = myFixture .getFile() .findElementAt(myFixture.getCaretOffset()); assertNotNull(elementAtCaret); PsiElement grandParent = elementAtCaret.getParent().getParent(); assertNotNull(grandParent); assertInstanceOf(grandParent, Call.class); PsiReference reference = grandParent.getReference(); assertNotNull(reference); PsiElement resolved = reference.resolve(); assertNull(resolved); } public void testMapAccessQualifier() { myFixture.configureByFiles("map_access_qualifier.ex", "referenced.ex"); PsiElement elementAtCaret = myFixture .getFile() .findElementAt(myFixture.getCaretOffset()); assertNotNull(elementAtCaret); PsiElement grandParent = elementAtCaret.getParent().getParent(); assertNotNull(grandParent); assertInstanceOf(grandParent, Call.class); PsiReference reference = grandParent.getReference(); assertNotNull(reference); PsiElement resolved = reference.resolve(); assertNull(resolved); } public void testUnresolvedAliasQualifier() { myFixture.configureByFiles("unresolved_alias_qualifier.ex", "referenced.ex"); PsiElement elementAtCaret = myFixture .getFile() .findElementAt(myFixture.getCaretOffset()); assertNotNull(elementAtCaret); PsiElement grandParent = elementAtCaret.getParent().getParent(); assertNotNull(grandParent); assertInstanceOf(grandParent, Call.class); PsiReference reference = grandParent.getReference(); assertNotNull(reference); PsiElement resolved = reference.resolve(); assertNull(resolved); } /* * Protected Instance Methods */ @Override protected String getTestDataPath() { return "testData/org/elixir_lang/reference/callable/issue_463"; } }