package org.elixir_lang.navigation;
import com.intellij.navigation.ChooseByNameContributor;
import com.intellij.navigation.ChooseByNameRegistry;
import com.intellij.navigation.NavigationItem;
import com.intellij.testFramework.fixtures.LightPlatformCodeInsightFixtureTestCase;
import org.elixir_lang.structure_view.element.CallDefinition;
import org.elixir_lang.structure_view.element.CallDefinitionClause;
public class GotoSymbolContributorTest extends LightPlatformCodeInsightFixtureTestCase {
/*
* Tests
*/
public void testIssue472() {
myFixture.configureByFile("issue_472.ex");
ChooseByNameContributor[] symbolModelContributors = ChooseByNameRegistry
.getInstance()
.getSymbolModelContributors();
GotoSymbolContributor gotoSymbolContributor = null;
for (ChooseByNameContributor symbolModelContributor : symbolModelContributors) {
if (symbolModelContributor instanceof GotoSymbolContributor) {
gotoSymbolContributor = (GotoSymbolContributor) symbolModelContributor;
}
}
assertNotNull(gotoSymbolContributor);
NavigationItem[] itemsByName = gotoSymbolContributor.getItemsByName(
"decode_auth_type",
"decode_a",
myFixture.getProject(),
false
);
assertEquals(2, itemsByName.length);
assertInstanceOf(itemsByName[0], CallDefinition.class);
CallDefinition callDefinition = (CallDefinition) itemsByName[0];
assertEquals("decode_auth_type", callDefinition.name());
assertInstanceOf(itemsByName[1], CallDefinitionClause.class);
CallDefinitionClause callDefinitionClause = (CallDefinitionClause) itemsByName[1];
assertEquals("decode_auth_type", callDefinitionClause.getName());
}
/*
* Protected Instance Methods
*/
@Override
protected String getTestDataPath() {
return "testData/org/elixir_lang/navigation/goto_symbol_contributor";
}
}