1 /******************************************************************************* 2 * Copyright (c) 2000, 2009 IBM Corporation and others. 3 * 4 * This program and the accompanying materials 5 * are made available under the terms of the Eclipse Public License 2.0 6 * which accompanies this distribution, and is available at 7 * https://www.eclipse.org/legal/epl-2.0/ 8 * 9 * SPDX-License-Identifier: EPL-2.0 10 * 11 * Contributors: 12 * IBM Corporation - initial API and implementation 13 *******************************************************************************/ 14 package org.eclipse.ui.tests.api; 15 16 import org.eclipse.ui.IEditorPart; 17 import org.eclipse.ui.IViewPart; 18 import org.eclipse.ui.IWorkbenchPage; 19 import org.eclipse.ui.IWorkbenchPart; 20 import org.eclipse.ui.IWorkbenchPartSite; 21 import org.eclipse.ui.IWorkbenchWindow; 22 import org.eclipse.ui.tests.harness.util.UITestCase; 23 import org.junit.Test; 24 25 /** 26 * Tests the site for an IWorkbenchPart. 27 */ 28 public abstract class IWorkbenchPartSiteTest extends UITestCase { 29 30 protected IWorkbenchWindow fWindow; 31 32 protected IWorkbenchPage fPage; 33 34 /** 35 * Constructor for IWorkbenchPartSiteTest 36 */ IWorkbenchPartSiteTest(String testName)37 public IWorkbenchPartSiteTest(String testName) { 38 super(testName); 39 } 40 41 @Override doSetUp()42 protected void doSetUp() throws Exception { 43 super.doSetUp(); 44 fWindow = openTestWindow(); 45 fPage = fWindow.getActivePage(); 46 } 47 48 @Test testGetId()49 public void testGetId() throws Throwable { 50 // From Javadoc: "Returns the part registry extension id for 51 // this workbench site's part." 52 53 IWorkbenchPart part = createTestPart(fPage); 54 IWorkbenchPartSite site = part.getSite(); 55 assertEquals(getTestPartId(), site.getId()); 56 } 57 58 @Test testGetPage()59 public void testGetPage() throws Throwable { 60 // From Javadoc: "Returns the page containing this workbench 61 // site's part." 62 63 IWorkbenchPart part = createTestPart(fPage); 64 IWorkbenchPartSite site = part.getSite(); 65 assertEquals(fPage, site.getPage()); 66 } 67 68 @Test testGetPluginId()69 public void testGetPluginId() throws Throwable { 70 // From Javadoc: "Returns the unique identifier of the 71 // plug-in that defines this workbench site's part." 72 73 IWorkbenchPart part = createTestPart(fPage); 74 IWorkbenchPartSite site = part.getSite(); 75 assertEquals(getTestPartPluginId(), site.getPluginId()); 76 } 77 78 @Test testGetRegisteredName()79 public void testGetRegisteredName() throws Throwable { 80 // From Javadoc: "Returns the registered name for this 81 // workbench site's part." 82 83 IWorkbenchPart part = createTestPart(fPage); 84 IWorkbenchPartSite site = part.getSite(); 85 assertEquals(getTestPartName(), site.getRegisteredName()); 86 } 87 88 @Test testGetShell()89 public void testGetShell() throws Throwable { 90 // From Javadoc: "Returns the shell containing this 91 // workbench site's part" 92 93 IWorkbenchPart part = createTestPart(fPage); 94 IWorkbenchPartSite site = part.getSite(); 95 assertEquals(fWindow.getShell(), site.getShell()); 96 } 97 98 @Test testGetWorkbenchWindow()99 public void testGetWorkbenchWindow() throws Throwable { 100 // From Javadoc: "Returns the workbench window 101 // containing this workbench site's part." 102 103 IWorkbenchPart part = createTestPart(fPage); 104 IWorkbenchPartSite site = part.getSite(); 105 assertEquals(fWindow, site.getWorkbenchWindow()); 106 } 107 108 @Test testGetSelectionProvider()109 public void testGetSelectionProvider() throws Throwable { 110 // From Javadoc: "'Get' returns the selection provider 111 // for this workbench site's part. 112 113 IWorkbenchPart part = createTestPart(fPage); 114 IWorkbenchPartSite site = part.getSite(); 115 assertTrue(part instanceof MockWorkbenchPart); 116 MockWorkbenchPart mock = (MockWorkbenchPart) part; 117 assertEquals(mock.getSelectionProvider(), site.getSelectionProvider()); 118 } 119 120 @Test testSetSelectionProvider()121 public void testSetSelectionProvider() throws Throwable { 122 // From Javadoc: 'Set' sets the selection provider. 123 124 // Set selection provider to null. 125 IWorkbenchPart part = createTestPart(fPage); 126 IWorkbenchPartSite site = part.getSite(); 127 site.setSelectionProvider(null); 128 assertNull(site.getSelectionProvider()); 129 130 // Set selection provider to real. 131 MockSelectionProvider provider = new MockSelectionProvider(); 132 site.setSelectionProvider(provider); 133 assertEquals(provider, site.getSelectionProvider()); 134 } 135 136 @Test testINestableService()137 public void testINestableService() throws Throwable { 138 IWorkbenchPart part = createTestPart(fPage); 139 IWorkbenchPartSite site = part.getSite(); 140 DummyService service = site.getService(DummyService.class); 141 142 assertTrue(service.isActive()); 143 if(part instanceof IViewPart) { 144 fPage.hideView((IViewPart) part); 145 } else { 146 fPage.closeEditor((IEditorPart) part, false); 147 } 148 assertFalse(service.isActive()); 149 150 } 151 152 153 /** 154 * Creates a test part in the page. 155 */ createTestPart(IWorkbenchPage page)156 abstract protected IWorkbenchPart createTestPart(IWorkbenchPage page) 157 throws Throwable; 158 159 /** 160 * Returns the expected id for a test part. 161 */ getTestPartId()162 abstract protected String getTestPartId() throws Throwable; 163 164 /** 165 * Returns the expected name for a test part. 166 */ getTestPartName()167 abstract protected String getTestPartName() throws Throwable; 168 169 /** 170 * Returns the expected id for a test part plugin. Subclasses may 171 * override this. 172 */ getTestPartPluginId()173 protected String getTestPartPluginId() throws Throwable { 174 return "org.eclipse.ui.tests"; 175 } 176 } 177 178