| /******************************************************************************* |
| * Copyright (c) 2000, 2006 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.presentations; |
| |
| import java.io.ByteArrayInputStream; |
| |
| import org.eclipse.core.resources.IFile; |
| import org.eclipse.core.resources.IProject; |
| import org.eclipse.core.resources.IWorkspace; |
| import org.eclipse.core.resources.ResourcesPlugin; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.swt.custom.CTabFolder; |
| import org.eclipse.swt.custom.CTabItem; |
| import org.eclipse.ui.IWorkbenchWindow; |
| import org.eclipse.ui.ide.IDE; |
| import org.eclipse.ui.internal.EditorSashContainer; |
| import org.eclipse.ui.internal.WorkbenchPage; |
| import org.eclipse.ui.tests.harness.util.UITestCase; |
| |
| /** |
| * Test for Bug 48589. This verifies that the editor tabs escape the "&" |
| * character correctly. This creates a test project, and creates a file within |
| * its whose name contains an ampersand. It then retrieves the text of the tab |
| * item and checks to see that it is appropriate. |
| * |
| * @since 3.1 |
| */ |
| public final class Bug48589Test extends UITestCase { |
| |
| /** |
| * Constructs a new instance of this test case. |
| * |
| * @param testName |
| * The name of the test |
| */ |
| public Bug48589Test(final String testName) { |
| super(testName); |
| } |
| |
| /** |
| * Test for Bug 48589. This verifies that the editor tabs escape the "&" |
| * character correctly. This creates a test project, and creates a file |
| * within its whose name contains an ampersand. It then retrieves the text |
| * of the tab item and checks to see that it is appropriate. |
| * |
| * @throws CoreException |
| * If the project cannot be created or opened. |
| */ |
| public void testFileNameWithAmpersand() throws CoreException { |
| // Open a new test window. |
| final IWorkbenchWindow window = openTestWindow(); |
| |
| // Open a new project, with a text file. |
| final IWorkspace workspace = ResourcesPlugin.getWorkspace(); |
| final IProject testProject = workspace.getRoot().getProject( |
| "Bug 48589 Project"); |
| testProject.create(null); |
| testProject.open(null); |
| final String fileName = "A&B.txt"; |
| final IFile textFile = testProject.getFile(fileName); |
| final ByteArrayInputStream inputStream = new ByteArrayInputStream( |
| fileName.getBytes()); |
| textFile.create(inputStream, true, null); |
| IDE.openEditor(window.getActivePage(), |
| textFile, true); |
| |
| // Get the current title of the text editor. |
| final WorkbenchPage page = (WorkbenchPage) window.getActivePage(); |
| final EditorSashContainer container = (EditorSashContainer) page.getEditorPresentation().getLayoutPart(); |
| final CTabFolder tabFolder = (CTabFolder) container.getActiveWorkbook().getControl(); |
| final CTabItem item = tabFolder.getItem(0); |
| final String actualTitle = item.getText(); |
| |
| // Verify that the title is escaped, as expected. |
| final String expectedTitle = "A&&B.txt"; |
| assertEquals("The title should be equal to the ", expectedTitle, |
| actualTitle); |
| } |
| } |