blob: 4663c8f4bafbe124239e1c833033785d1dcb03af [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2004 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.ui.tests.zoom;
import org.eclipse.ui.IWorkbenchPart;
/**
* This class contains tests that apply to both views and editors. Subclasses
* will overload the abstract methods to determine whether editors or views
* are being tested, and can define additional tests that only apply to editors
* or views (or that have different results).
*/
public abstract class CloseTest extends ZoomTestCase {
public CloseTest(String name) {
super(name);
}
public abstract IWorkbenchPart getStackedPart1();
public abstract IWorkbenchPart getStackedPart2();
public abstract IWorkbenchPart getUnstackedPart();
/**
* <p>Test: Zoom a part and hide an inactive fast view</p>
* <p>Expected result: Part remains zoomed</p>
*/
public void testCloseInactiveFastView() {
IWorkbenchPart zoomPart = getStackedPart1();
zoom(zoomPart);
close(fastView);
assertZoomed(zoomPart);
assertActive(zoomPart);
}
/**
* <p>Test: Zoom a part, activate a fast view, then hide the fast view</p>
* <p>Expected result: Part remains zoomed</p>
*/
public void testCloseActiveFastView() {
IWorkbenchPart zoomPart = getStackedPart1();
zoom(zoomPart);
page.activate(fastView);
close(fastView);
assertZoomed(zoomPart);
assertActive(zoomPart);
}
/**
* <p>Test: Activate an unstacked view, zoom and activate a stacked part, then close the active part.</p>
* <p>Expected result: Stack remains zoomed, another part in the zoomed stack is active</p>
* <p>Note: This ensures that when the active part is closed, it will try to activate a part that
* doesn't affect the zoom even if something else was activated more recently.</p>
*/
public void testCloseZoomedStackedPartAfterActivatingView() {
IWorkbenchPart zoomPart = getStackedPart1();
IWorkbenchPart otherStackedPart = getStackedPart2();
IWorkbenchPart unstackedPart = unstackedView;
page.activate(unstackedPart);
zoom(zoomPart);
close(zoomPart);
assertZoomed(otherStackedPart);
assertActive(otherStackedPart);
}
/**
* <p>Test: Activate an unstacked editor, zoom and activate a stacked part, then close the active part.</p>
* <p>Expected result: Stack remains zoomed, another part in the zoomed stack is active</p>
* <p>Note: This ensures that when the active part is closed, it will try to activate a part that
* doesn't affect the zoom even if something else was activated more recently.</p>
*/
public void testCloseZoomedStackedPartAfterActivatingEditor() {
IWorkbenchPart zoomPart = getStackedPart1();
IWorkbenchPart otherStackedPart = getStackedPart2();
IWorkbenchPart unstackedPart = editor3;
page.activate(unstackedPart);
zoom(zoomPart);
close(zoomPart);
assertZoomed(otherStackedPart);
assertActive(otherStackedPart);
}
/**
* <p>Test: Activate an unstacked editor, activate a stacked part, then close the active part.</p>
* <p>Expected result: The unstacked part becomes active</p>
* <p>Note: This isn't really a zoom test, but it ensures that the behavior tested by
* testHideZoomedStackedPartAfterActivatingEditor does not affect activation when there is no zoom.</p>
*/
public void testCloseUnzoomedStackedPartAfterActivatingEditor() {
IWorkbenchPart activePart = getStackedPart1();
IWorkbenchPart otherStackedPart = getStackedPart2();
IWorkbenchPart unstackedPart = editor3;
page.activate(unstackedPart);
page.activate(activePart);
close(activePart);
assertZoomed(null);
assertActive(unstackedPart);
}
/**
* <p>Test: Zoom an unstacked part and close it.</p>
* <p>Expected result: The page is unzoomed and the previously active part becomes active</p>
* <p>Note: This ensures that the activation list is used if there is nothing available
* in the currently zoomed stack.</p>
*/
public void testCloseZoomedUnstackedPartAfterActivatingEditor() {
IWorkbenchPart previousActive = editor1;
IWorkbenchPart zoomedPart = getUnstackedPart();
page.activate(previousActive);
zoom(zoomedPart);
close(zoomedPart);
assertZoomed(null);
assertActive(previousActive);
}
/**
* <p>Test: Zoom a stacked part and close an inactive, unstacked editor.</p>
* <p>Expected result: No change in activation or zoom</p>
*/
public void testCloseHiddenUnstackedEditor() {
IWorkbenchPart zoomedPart = getStackedPart1();
// Activate another editor to ensure that we aren't closing the active editor
page.activate(editor1);
zoom(zoomedPart);
close(editor3);
assertZoomed(zoomedPart);
assertActive(zoomedPart);
}
/**
* <p>Test: Zoom a stacked part and close an inactive, unstacked view.</p>
* <p>Expected result: No change in activation or zoom</p>
*/
public void testCloseHiddenUnstackedView() {
IWorkbenchPart zoomedPart = getStackedPart1();
zoom(zoomedPart);
close(unstackedView);
assertZoomed(zoomedPart);
assertActive(zoomedPart);
}
}