/* * Copyright 2014 The authors * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.intellij.struts2.annotators; import com.intellij.codeInsight.daemon.GutterMark; import com.intellij.codeInsight.daemon.LineMarkerInfo; import com.intellij.codeInsight.navigation.NavigationGutterIconRenderer; import com.intellij.psi.PsiElement; import com.intellij.util.Function; import org.jetbrains.annotations.NotNull; import java.util.HashSet; import java.util.List; import java.util.Set; import static com.intellij.testFramework.UsefulTestCase.assertSameElements; import static junit.framework.Assert.assertNotNull; /** * Utils for gutter icon navigation tests. * * @author Yann Cébron */ class AnnotatorTestUtils { private AnnotatorTestUtils() { } /** * Verifies the navigation targets' names of the gutter icon match. * * @param renderer Gutter icon. * @param resultValueFunction Function to transform target to expected name. * @param expectedValues Expected names. */ static void checkGutterTargets(@NotNull final GutterMark renderer, @NotNull final Function<PsiElement, String> resultValueFunction, final String... expectedValues) { final LineMarkerInfo lineMarkerInfo = ((LineMarkerInfo.LineMarkerGutterIconRenderer) renderer).getLineMarkerInfo(); final NavigationGutterIconRenderer navigationHandler = (NavigationGutterIconRenderer) lineMarkerInfo.getNavigationHandler(); assertNotNull(navigationHandler); final List<PsiElement> targetElements = navigationHandler.getTargetElements(); final Set<String> foundValues = new HashSet<>(); for (final PsiElement psiElement : targetElements) { foundValues.add(resultValueFunction.fun(psiElement)); } assertSameElements(foundValues, expectedValues); } }