/******************************************************************************* * Copyright (c) 2007, 2013 IBM Corporation and others. * 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: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jdt.debug.tests.launching; import java.util.HashSet; import java.util.Set; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.ILaunchManager; import org.eclipse.debug.ui.IDebugUIConstants; import org.eclipse.debug.ui.ILaunchConfigurationTab; import org.eclipse.debug.ui.ILaunchConfigurationTabGroup; import org.eclipse.jdt.debug.testplugin.JavaAlernateModeTab; import org.eclipse.jdt.debug.testplugin.launching.ContributedTestTab1; import org.eclipse.jdt.debug.testplugin.launching.ContributedTestTab2; import org.eclipse.jdt.debug.testplugin.launching.ContributedTestTab3; import org.eclipse.jdt.debug.tests.AbstractDebugTest; /** * This test class provides test methods for contributing tabs to a given (existing) * tab group and their relative placement (if applicable) * * @since 3.3 */ public class ContributedTabTests extends AbstractDebugTest { /** * Constructor * @param name the name of the test */ public ContributedTabTests(String name) { super(name); } /** * Checks to make sure that all of the contributed tabs to the java tab group are present * @throws CoreException */ public void testContributedTab() throws CoreException { ILaunchConfigurationTabGroup javagroup = getJavaLaunchGroup(); assertNotNull("Java tab group cannot be null", javagroup); //$NON-NLS-1$ javagroup.createTabs(getLaunchConfigurationDialog(IDebugUIConstants.ID_DEBUG_LAUNCH_GROUP), ILaunchManager.DEBUG_MODE); ILaunchConfigurationTab[] tabs = javagroup.getTabs(); assertTrue("Wrong number of tabs", tabs.length >= 11); //$NON-NLS-1$ Set<Class<? extends ILaunchConfigurationTab>> tabset = new HashSet<Class<? extends ILaunchConfigurationTab>>(); for(int i = 0; i < tabs.length; i++) { tabset.add(tabs[i].getClass()); } Set<Class<? extends ILaunchConfigurationTab>> contribs = new HashSet<Class<? extends ILaunchConfigurationTab>>(); contribs.add(ContributedTestTab1.class); contribs.add(JavaAlernateModeTab.class); assertTrue("java tab group should contain all contributed tabs", tabset.containsAll(contribs)); //$NON-NLS-1$ } /** * Checks to make sure that a contributed tab with a relative placement to an existing tab is in the correct place * @throws CoreException */ public void testContributedTabRelativePlacement() throws CoreException { ILaunchConfigurationTabGroup javagroup = getJavaLaunchGroup(); assertNotNull("java tab group cannot be null", javagroup); //$NON-NLS-1$ javagroup.createTabs(getLaunchConfigurationDialog(IDebugUIConstants.ID_DEBUG_LAUNCH_GROUP), ILaunchManager.DEBUG_MODE); ILaunchConfigurationTab[] tabs = javagroup.getTabs(); int idx = 0; boolean found = false; for (int i = 0; i < tabs.length; i++) { idx = i; if (tabs[i].getClass().equals(ContributedTestTab1.class)) { found = true; break; } } assertTrue("The TestTab1 must appear in the tab listing", found); assertTrue("The TestTab1 must appear after the MainTab", idx > 0); //$NON-NLS-1$ } /** * Checks to see that if a contributor supplies a bad tab id as a placement id that the tab will be added * to the end of the group * @throws CoreException */ public void testContributedTabPlacementTabNotFound() throws CoreException { ILaunchConfigurationTabGroup javagroup = getJavaLaunchGroup(); assertNotNull("java tab group cannot be null", javagroup); //$NON-NLS-1$ javagroup.createTabs(getLaunchConfigurationDialog(IDebugUIConstants.ID_DEBUG_LAUNCH_GROUP), ILaunchManager.DEBUG_MODE); ILaunchConfigurationTab[] tabs = javagroup.getTabs(); assertTrue("Alternate tab should be the last tab in the group", tabs[tabs.length-1].getClass().equals(JavaAlernateModeTab.class)); //$NON-NLS-1$ } /** * Checks to see that the two tabs following the arguments tab are TestTab2, and TestTab3. They can be in either order depending * on when they were loaded, so this test only checks that they are the next two following tabs not their order * @throws CoreException */ public void testContributedTabsPlacement() throws CoreException { ILaunchConfigurationTabGroup javagroup = getJavaLaunchGroup(); assertNotNull("java tab group cannot be null", javagroup); //$NON-NLS-1$ javagroup.createTabs(getLaunchConfigurationDialog(IDebugUIConstants.ID_DEBUG_LAUNCH_GROUP), ILaunchManager.DEBUG_MODE); ILaunchConfigurationTab[] tabs = javagroup.getTabs(); HashSet<Class<? extends ILaunchConfigurationTab>> tabset = new HashSet<Class<? extends ILaunchConfigurationTab>>(); for (int i = 0; i < tabs.length; i++) { tabset.add(tabs[i].getClass()); } HashSet<Class<? extends ILaunchConfigurationTab>> contribs = new HashSet<Class<? extends ILaunchConfigurationTab>>(); contribs.add(ContributedTestTab2.class); contribs.add(ContributedTestTab3.class); assertTrue("the tab set must only contain test tab 2 and test tab 3", tabset.containsAll(contribs)); //$NON-NLS-1$ } }