package org.eclipse.ui.tests.api; | |
import org.eclipse.jdt.junit.util.*; | |
import org.eclipse.core.resources.IFile; | |
import org.eclipse.ui.*; | |
/** | |
* 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; | |
IWorkbenchPage page; | |
// 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. | |
IEditorPart [] editors = pages[1].getEditors(); | |
assertEquals(editors.length, 3); | |
testSessionEditor(editors[0], SessionCreateTest.TEST_FILE_1); | |
testSessionEditor(editors[1], SessionCreateTest.TEST_FILE_2); | |
testSessionEditor(editors[2], 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()); | |
} | |
} | |