/* * Copyright 2009-2017 the original author or 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 org.codehaus.groovy.eclipse.refactoring.test.internal; import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IResource; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.internal.corext.util.JavaElementResourceMapping; import org.eclipse.ltk.core.refactoring.participants.RenameArguments; import org.junit.Assert; /** * Copied from {@link org.eclipse.jdt.ui.tests.refactoring.ParticipantTesting}. */ public final class ParticipantTesting { public static void reset() { TestRenameParticipantShared.reset(); TestRenameParticipantSingle.reset(); } public static String[] createHandles(Object object) { return createHandles(new Object[] { object }); } public static String[] createHandles(Object obj1, Object obj2) { return createHandles(new Object[] { obj1, obj2 }); } public static String[] createHandles(Object obj1, Object obj2, Object obj3) { return createHandles(new Object[] { obj1, obj2, obj3 }); } public static String[] createHandles(Object obj1, Object obj2, Object obj3, Object obj4) { return createHandles(new Object[] { obj1, obj2, obj3, obj4 }); } public static String[] createHandles(Object[] elements) { List<String> result = new ArrayList<String>(); for (int i = 0; i < elements.length; i++) { Object element = elements[i]; if (element instanceof IJavaElement) { result.add(((IJavaElement) element).getHandleIdentifier()); } else if (element instanceof IResource) { result.add(((IResource) element).getFullPath().toString()); } else if (element instanceof JavaElementResourceMapping) { result.add(((JavaElementResourceMapping) element).getJavaElement().getHandleIdentifier() + "_mapping"); } } return result.toArray(new String[result.size()]); } public static void testRename(String[] expectedHandles, RenameArguments[] args) { Assert.assertEquals(expectedHandles.length, args.length); if (expectedHandles.length == 0) { TestRenameParticipantShared.testNumberOfElements(0); TestRenameParticipantSingle.testNumberOfInstances(0); } else { testElementsShared(expectedHandles, TestRenameParticipantShared.fgInstance.fHandles); TestRenameParticipantShared.testArguments(args); TestRenameParticipantSingle.testNumberOfInstances(expectedHandles.length); TestRenameParticipantSingle.testElements(expectedHandles); TestRenameParticipantSingle.testArguments(args); } } private static void testElementsShared(String[] expected, List<String> actual) { for (int i = 0; i < expected.length; i++) { String handle = expected[i]; Assert.assertTrue("Expected handle not found: " + handle, actual.contains(handle)); } testNumberOfElements(expected.length, actual); } private static void testNumberOfElements(int expected, List<?> actual) { if (expected == 0 && actual == null) return; Assert.assertEquals(expected, actual.size()); } }