/******************************************************************************* * Copyright (c) 2012-2015 Codenvy, S.A. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * Codenvy, S.A. - initial API and implementation *******************************************************************************/ package org.eclipse.che.plugin.java.server.jdt.refactoring; import org.eclipse.che.ltk.core.refactoring.participants.CheRefactoringParticipantsRegistry; 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.MoveArguments; import org.eclipse.ltk.core.refactoring.participants.RenameArguments; import org.junit.Assert; import java.util.ArrayList; import java.util.List; public class ParticipantTesting { public static void init(){ CheRefactoringParticipantsRegistry.registerParticipant("renameParticipants", TestRenameParticipantShared.class); CheRefactoringParticipantsRegistry.registerParticipant("renameParticipants", TestRenameParticipantSingle.class); CheRefactoringParticipantsRegistry.registerParticipant("moveParticipants", TestMoveParticipantShared.class); CheRefactoringParticipantsRegistry.registerParticipant("moveParticipants", TestMoveParticipantSingle.class); CheRefactoringParticipantsRegistry.registerParticipant("createParticipants", TestCreateParticipantSingle.class); CheRefactoringParticipantsRegistry.registerParticipant("createParticipants", TestCreateParticipantShared.class); CheRefactoringParticipantsRegistry.registerParticipant("deleteParticipants", TestDeleteParticipantShared.class); CheRefactoringParticipantsRegistry.registerParticipant("deleteParticipants", TestDeleteParticipantSingle.class); // CheRefactoringParticipantsRegistry.registerParticipant("copyParticipants", TestCopyParticipantSingle.class); } public static void reset() { // TestCreateParticipantShared.reset(); TestDeleteParticipantShared.reset(); TestMoveParticipantShared.reset(); TestRenameParticipantShared.reset(); // TestCopyParticipantShared.reset(); TestCreateParticipantSingle.reset(); TestDeleteParticipantSingle.reset(); TestMoveParticipantSingle.reset(); TestRenameParticipantSingle.reset(); // TestCopyParticipantSingle.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 result= new ArrayList(); 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 (String[])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); } } public static void testMove(String[] expectedHandles, MoveArguments[] args) { Assert.assertEquals(expectedHandles.length, args.length); if (expectedHandles.length == 0) { TestMoveParticipantShared.testNumberOfElements(0); TestMoveParticipantSingle.testNumberOfInstances(0); } else { testElementsShared(expectedHandles, TestMoveParticipantShared.fgInstance.fHandles); TestMoveParticipantShared.testArguments(args); TestMoveParticipantSingle.testNumberOfInstances(expectedHandles.length); TestMoveParticipantSingle.testElements(expectedHandles); TestMoveParticipantSingle.testArguments(args); } } public static void testDelete(String[] expectedHandles) { if (expectedHandles.length == 0) { TestDeleteParticipantShared.testNumberOfElements(0); TestDeleteParticipantSingle.testNumberOfInstances(0); } else { testElementsShared(expectedHandles, TestDeleteParticipantShared.fgInstance.fHandles); TestDeleteParticipantSingle.testNumberOfInstances(expectedHandles.length); TestDeleteParticipantSingle.testElements(expectedHandles); } } public static void testCreate(String[] expectedHandles) { if (expectedHandles.length == 0) { TestCreateParticipantShared.testNumberOfElements(0); TestCreateParticipantSingle.testNumberOfInstances(0); } else { testElementsShared(expectedHandles, TestCreateParticipantShared.fgInstance.fHandles); TestCreateParticipantSingle.testNumberOfInstances(expectedHandles.length); TestCreateParticipantSingle.testElements(expectedHandles); } } // public static void testCopy(String[] expectedHandles, CopyArguments[] arguments) { // if (expectedHandles.length == 0) { // TestCopyParticipantShared.testNumberOfElements(0); // TestCopyParticipantSingle.testNumberOfInstances(0); // } else { // testElementsShared(expectedHandles, TestCopyParticipantShared.fgInstance.fHandles); // TestCopyParticipantShared.testArguments(arguments); // // TestCopyParticipantSingle.testNumberOfInstances(expectedHandles.length); // TestCopyParticipantSingle.testElements(expectedHandles); // TestCopyParticipantSingle.testArguments(arguments); // } // } public static void testSimilarElements(List similarList, List similarNewNameList, List similarNewHandleList) { Assert.assertEquals(similarList.size(), similarNewNameList.size()); if (similarList.size() == 0) { TestRenameParticipantShared.testNumberOfSimilarElements(0); } else { TestRenameParticipantShared.testSimilarElements(similarList, similarNewNameList, similarNewHandleList); } } private static void testElementsShared(String[] expected, List 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()); } }