package org.elixir_lang.reference.module;
import com.intellij.openapi.vfs.newvfs.impl.VfsRootAccess;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiPolyVariantReference;
import com.intellij.psi.ResolveResult;
import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase;
import org.elixir_lang.psi.ElixirAlias;
import java.util.List;
public class AsTest extends LightPlatformCodeInsightFixtureTestCase {
/*
* Tests
*/
public void testCompletion() {
List<String> completionVariants = myFixture.getCompletionVariants(
"completion.ex",
"suffix1.ex",
"suffix2.ex"
);
assertTrue(
"AsA was not completed to AsAlias1",
completionVariants.contains("AsAlias1")
);
assertTrue(
"AsA was not completed to AsAlias2",
completionVariants.contains("AsAlias2")
);
assertEquals(2, completionVariants.size());
}
public void testReference() {
myFixture.configureByFiles("reference.ex", "suffix1.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(2, resolveResults.length);
// alias
assertEquals(
"alias Prefix.Suffix1, as: As",
resolveResults[0].getElement().getParent().getParent().getParent().getParent().getParent().getText()
);
// defmodule
assertEquals("defmodule Prefix.Suffix1 do\nend", resolveResults[1].getElement().getText());
}
/*
* Protected Instance Methods
*/
@Override
protected String getTestDataPath() {
return "testData/org/elixir_lang/reference/module/as";
}
}