package org.elixir_lang.reference.module; import com.intellij.codeInsight.completion.CompletionType; import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess; import com.intellij.psi.PsiElement; import com.intellij.psi.PsiPolyVariantReference; import com.intellij.psi.PsiReference; import com.intellij.psi.ResolveResult; import com.intellij.psi.stubs.StubIndex; import com.intellij.testFramework.fixtures.LightCodeInsightFixtureTestCase; import org.elixir_lang.psi.ElixirAlias; import java.util.Arrays; import java.util.List; public class SuffixTest extends LightCodeInsightFixtureTestCase { /* * Tests */ public void testCompletion() { myFixture.configureByFiles("completion.ex", "suffix.ex"); myFixture.complete(CompletionType.BASIC, 1); List<String> strings = myFixture.getLookupElementStrings(); assertTrue( strings.containsAll( Arrays.asList( // unaliased name "Prefix.Suffix", // aliased name "Suffix" ) ) ); assertEquals(2, strings.size()); } public void testReference() { myFixture.configureByFiles("reference.ex", "suffix.ex"); PsiElement alias = myFixture .getFile() .findElementAt(myFixture.getCaretOffset()) .getParent() .getPrevSibling() .getFirstChild(); assertInstanceOf(alias, ElixirAlias.class); PsiPolyVariantReference polyVariantReference = (PsiPolyVariantReference) alias.getReference(); assertNotNull(polyVariantReference); ResolveResult[] resolveResults = polyVariantReference.multiResolve(false); assertEquals(resolveResults.length, 2); // alias assertEquals("alias Prefix.Suffix", resolveResults[0].getElement().getParent().getParent().getText()); // defmodule assertEquals("defmodule Prefix.Suffix do\nend", resolveResults[1].getElement().getText()); } /* * Protected Instance Methods */ @Override protected String getTestDataPath() { return "testData/org/elixir_lang/reference/module/suffix"; } }