diff options
author | Sebastian Ratz | 2017-07-10 09:29:45 +0000 |
---|---|---|
committer | Sebastian Ratz | 2017-11-15 17:08:01 +0000 |
commit | 6758b1974631342370488a9a781e6b30b528c5ae (patch) | |
tree | 0dbf862d1a9f1acab588ed729d3cc349e280d910 /org.eclipse.ui.workbench.texteditor.tests | |
parent | 4e9bd88ff6da2d59ca521a78e1ee397cc1ebcfd8 (diff) | |
download | eclipse.platform.text-6758b1974631342370488a9a781e6b30b528c5ae.tar.gz eclipse.platform.text-6758b1974631342370488a9a781e6b30b528c5ae.tar.xz eclipse.platform.text-6758b1974631342370488a9a781e6b30b528c5ae.zip |
Bug 518939 - Fix text zoom enablement in multi page editorsI20171119-2000I20171118-1500I20171117-2000I20171116-2000I20171115-2000
Change-Id: I2b13a98af986419a38b63043aa680b3e8d628fd2
Signed-off-by: Sebastian Ratz <sebastian.ratz@sap.com>
Diffstat (limited to 'org.eclipse.ui.workbench.texteditor.tests')
4 files changed, 237 insertions, 4 deletions
diff --git a/org.eclipse.ui.workbench.texteditor.tests/META-INF/MANIFEST.MF b/org.eclipse.ui.workbench.texteditor.tests/META-INF/MANIFEST.MF index 4a1e176ec41..6df2e3b71db 100644 --- a/org.eclipse.ui.workbench.texteditor.tests/META-INF/MANIFEST.MF +++ b/org.eclipse.ui.workbench.texteditor.tests/META-INF/MANIFEST.MF @@ -2,7 +2,7 @@ Manifest-Version: 1.0 Bundle-ManifestVersion: 2 Bundle-Name: %Plugin.name Bundle-SymbolicName: org.eclipse.ui.workbench.texteditor.tests -Bundle-Version: 3.11.100.qualifier +Bundle-Version: 3.12.0.qualifier Bundle-Vendor: %Plugin.providerName Bundle-Localization: plugin Export-Package: @@ -15,6 +15,7 @@ Require-Bundle: org.eclipse.ui.workbench.texteditor;bundle-version="[3.5.0,4.0.0)", org.eclipse.ui;bundle-version="[3.5.0,4.0.0)", org.junit;bundle-version="4.12.0", - org.eclipse.text.tests;bundle-version="[3.5.0,4.0.0)" + org.eclipse.text.tests;bundle-version="[3.5.0,4.0.0)", + org.eclipse.core.expressions;bundle-version="[3.5.0,4.0.0)" Bundle-RequiredExecutionEnvironment: JavaSE-1.8 Eclipse-BundleShape: dir diff --git a/org.eclipse.ui.workbench.texteditor.tests/pom.xml b/org.eclipse.ui.workbench.texteditor.tests/pom.xml index a8128a687ff..a2a8006e83d 100644 --- a/org.eclipse.ui.workbench.texteditor.tests/pom.xml +++ b/org.eclipse.ui.workbench.texteditor.tests/pom.xml @@ -19,7 +19,7 @@ </parent> <groupId>org.eclipse.ui</groupId> <artifactId>org.eclipse.ui.workbench.texteditor.tests</artifactId> - <version>3.11.100-SNAPSHOT</version> + <version>3.12.0-SNAPSHOT</version> <packaging>eclipse-test-plugin</packaging> <properties> <testSuite>${project.artifactId}</testSuite> diff --git a/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/AbstractTextZoomHandlerTest.java b/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/AbstractTextZoomHandlerTest.java new file mode 100644 index 00000000000..f8e0fba498f --- /dev/null +++ b/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/AbstractTextZoomHandlerTest.java @@ -0,0 +1,231 @@ +/******************************************************************************* + * Copyright (c) 2017 SAP SE 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: + * SAP SE - initial API and implementation + *******************************************************************************/ +package org.eclipse.ui.workbench.texteditor.tests; + +import static org.junit.Assert.assertEquals; + +import org.junit.Test; + +import org.eclipse.swt.widgets.Composite; + +import org.eclipse.core.expressions.EvaluationContext; + +import org.eclipse.core.runtime.IProgressMonitor; + +import org.eclipse.ui.IEditorInput; +import org.eclipse.ui.IEditorPart; +import org.eclipse.ui.IEditorReference; +import org.eclipse.ui.IEditorSite; +import org.eclipse.ui.ISources; +import org.eclipse.ui.PartInitException; +import org.eclipse.ui.part.AbstractMultiEditor; +import org.eclipse.ui.part.EditorPart; +import org.eclipse.ui.part.MultiPageEditorPart; + +import org.eclipse.ui.texteditor.AbstractTextEditor; +import org.eclipse.ui.texteditor.TextZoomInHandler; + +public class AbstractTextZoomHandlerTest { + + @Test + public void textZoomIsSupportedForAbstractTextEditor() { + IEditorPart part= new TestAbstractTextEditor(); + + assertZoomSupported(part, true); + } + + @Test + public void textZoomIsNotSupportedForNonTextEditor() { + IEditorPart part= new TestNonTextEditor(); + + assertZoomSupported(part, false); + } + + @Test + public void textZoomIsSupportedForMultiPageEditorPartWithAbstractTextEditorPage() { + EditorPart part= new TestMultiPageEditorPart(new TestAbstractTextEditor()); + + assertZoomSupported(part, true); + } + + @Test + public void textZoomIsNotSupportedForMultiPageEditorPartWithNonTextPage() { + EditorPart part= new TestMultiPageEditorPart(new TestNonTextEditor()); + + assertZoomSupported(part, false); + } + + @Test + public void textZoomIsSupportedForMultiEditorWithTextPage() { + EditorPart part= new TestMultiEditor(new TestAbstractTextEditor()); + + assertZoomSupported(part, true); + } + + @Test + public void textZoomIsNotSupportedForMultiEditorWithNonTextPage() { + EditorPart part= new TestMultiEditor(new TestNonTextEditor()); + + assertZoomSupported(part, false); + } + + @Test + public void textZoomIsSupportedForAdaptableToAbstractTextEditor() { + IEditorPart part= new TestAdaptableToAbstractTestEditor(); + + assertZoomSupported(part, true); + } + + @Test + public void textZoomIsNotSupportedForGenericObject() { + assertZoomSupported(new Object(), false); + } + + private void assertZoomSupported(Object receiver, boolean expectedEnabled) { + TextZoomInHandler textZoomHandler= new TextZoomInHandler(); + + EvaluationContext evaluationContext= new EvaluationContext(null, new Object()); + evaluationContext.addVariable(ISources.ACTIVE_EDITOR_NAME, receiver); + + textZoomHandler.setEnabled(evaluationContext); + + boolean actualEnabled= textZoomHandler.isEnabled(); + + assertEquals(expectedEnabled, actualEnabled); + } + + private static class TestAbstractTextEditor extends AbstractTextEditor { + + @Override + public <T> T getAdapter(Class<T> adapter) { + return null; + } + + @Override + public void init(IEditorSite site, IEditorInput input) throws PartInitException { // + } + } + + private static class TestNonTextEditor extends EditorPart { + + @Override + public <T> T getAdapter(Class<T> adapter) { + return null; + } + + @Override + public void doSave(IProgressMonitor monitor) { // + } + + @Override + public void doSaveAs() { // + } + + @Override + public void init(IEditorSite site, IEditorInput input) throws PartInitException { // + } + + @Override + public boolean isDirty() { // + return false; + } + + @Override + public boolean isSaveAsAllowed() { // + return false; + } + + @Override + public void createPartControl(Composite parent) { // + } + + @Override + public void setFocus() { // + } + } + + private static class TestAdaptableToAbstractTestEditor extends TestNonTextEditor { + + @Override + public <T> T getAdapter(Class<T> adapter) { + if (adapter == AbstractTextEditor.class) { + return adapter.cast(new TestAbstractTextEditor()); + } + return null; + } + } + + private static class TestMultiEditor extends AbstractMultiEditor { + + @Override + public <T> T getAdapter(Class<T> adapter) { + return null; + } + + public TestMultiEditor(IEditorPart child) { + setChildren(new IEditorPart[] { child }); + } + + @Override + public void createPartControl(Composite parent) { // + } + + @Override + protected void innerEditorsCreated() { // + } + + @Override + public Composite getInnerEditorContainer(IEditorReference innerEditorReference) { + return null; + } + } + + private static class TestMultiPageEditorPart extends MultiPageEditorPart { + + private IEditorPart child; + + public TestMultiPageEditorPart(IEditorPart child) { + this.child= child; + } + + @Override + public <T> T getAdapter(Class<T> adapter) { + return null; + } + + @Override + public boolean isSaveAsAllowed() { + return false; + } + + @Override + public void doSaveAs() { // + } + + @Override + public void doSave(IProgressMonitor monitor) { // + } + + @Override + protected void createPages() { // + } + + @Override + public void init(IEditorSite site, IEditorInput input) throws PartInitException { // + } + + @Override + public Object getSelectedPage() { + return child; + } + } + +} diff --git a/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/WorkbenchTextEditorTestSuite.java b/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/WorkbenchTextEditorTestSuite.java index ec8d266777d..7c3a171f1c1 100644 --- a/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/WorkbenchTextEditorTestSuite.java +++ b/org.eclipse.ui.workbench.texteditor.tests/src/org/eclipse/ui/workbench/texteditor/tests/WorkbenchTextEditorTestSuite.java @@ -33,7 +33,8 @@ import org.eclipse.ui.workbench.texteditor.tests.rulers.RulerTestSuite; ChangeRegionTest.class, RulerTestSuite.class, HunkComputerTest.class, - ScreenshotTest.class + ScreenshotTest.class, + AbstractTextZoomHandlerTest.class }) public class WorkbenchTextEditorTestSuite { // see @SuiteClasses |