blob: efab1102218f04187321ecee02c4460dbc0cd105 [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2000, 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.api;
import org.eclipse.core.resources.IFile;
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorReference;
import org.eclipse.ui.IEditorSite;
import org.eclipse.ui.IFileEditorInput;
import org.eclipse.ui.IViewPart;
import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.tests.harness.util.EmptyPerspective;
import org.eclipse.ui.tests.harness.util.UITestCase;
/**
* SessionRestoreTest runs the second half of our session
* presistance tests.
*
*/
public class SessionRestoreTest extends UITestCase {
/**
* Construct an instance.
*/
public SessionRestoreTest(String arg) {
super(arg);
}
/**
* Generates a session state in the workbench.
*/
public void testRestoreSession() throws Throwable {
IWorkbenchWindow[] windows;
IWorkbenchPage[] pages;
// Get windows.
windows = fWorkbench.getWorkbenchWindows();
assertEquals(windows.length, 3);
// First window contains empty perspective.
pages = windows[0].getPages();
assertEquals(pages.length, 1);
assertEquals(pages[0].getPerspective().getId(),
EmptyPerspective.PERSP_ID);
// Second window contains empty + session.
pages = windows[1].getPages();
assertEquals(pages.length, 2);
assertEquals(pages[0].getPerspective().getId(),
EmptyPerspective.PERSP_ID);
assertEquals(pages[1].getPerspective().getId(), SessionPerspective.ID);
testSessionView(pages[1]);
// Third window contains 2 sessions.
pages = windows[2].getPages();
assertEquals(pages.length, 2);
assertEquals(pages[0].getPerspective().getId(), SessionPerspective.ID);
assertEquals(pages[1].getPerspective().getId(), SessionPerspective.ID);
testSessionView(pages[0]);
testSessionView(pages[1]);
// Last page contains 3 editors.
IEditorReference[] editors = pages[1].getEditorReferences();
assertEquals(editors.length, 3);
testSessionEditor(editors[0].getEditor(true),
SessionCreateTest.TEST_FILE_1);
testSessionEditor(editors[1].getEditor(true),
SessionCreateTest.TEST_FILE_2);
testSessionEditor(editors[2].getEditor(true),
SessionCreateTest.TEST_FILE_3);
}
/**
* Tests the session view within a page.
*/
private void testSessionView(IWorkbenchPage page) {
IViewPart view = page.findView(SessionView.VIEW_ID);
assertNotNull(view);
SessionView sessionView = (SessionView) view;
sessionView.testMementoState(this);
}
/**
* Tests the state of a session editor.
*/
private void testSessionEditor(IEditorPart part, String fileName) {
IEditorSite site = part.getEditorSite();
assertEquals(site.getId(), MockEditorPart.ID1);
IEditorInput input = part.getEditorInput();
assertTrue(input instanceof IFileEditorInput);
IFile file = ((IFileEditorInput) input).getFile();
assertEquals(fileName, file.getName());
}
}