| /******************************************************************************* |
| * Copyright (c) 2000, 2005 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.jdt.text.tests.performance; |
| |
| |
| import junit.framework.Test; |
| import junit.framework.TestSuite; |
| import org.eclipse.test.performance.Dimension; |
| import org.eclipse.test.performance.PerformanceMeter; |
| |
| import org.eclipse.ui.IWorkbenchPage; |
| import org.eclipse.ui.texteditor.AbstractTextEditor; |
| |
| |
| public abstract class ActivateEditorTest extends TextPerformanceTestCase { |
| |
| private static final Class THIS= ActivateEditorTest.class; |
| |
| private static final int WARM_UP_RUNS= 10; |
| |
| private static final int MEASURED_RUNS= 5; |
| |
| private static final int EDITORS= 30; |
| |
| private static final String FILE_PREFIX= "TextLayout"; |
| |
| private static final String PREFIX= "/" + PerformanceTestSetup.PROJECT + "/Eclipse SWT/win32/org/eclipse/swt/graphics/" + FILE_PREFIX; |
| |
| private static final String FILE_SUFFIX= ".java"; |
| |
| private String fShortName; |
| |
| private AbstractTextEditor[] fEditors; |
| |
| public ActivateEditorTest() { |
| super(); |
| } |
| |
| public ActivateEditorTest(String name) { |
| super(name); |
| } |
| |
| public static Test suite() { |
| TestSuite suite= new TestSuite(THIS.getName()); |
| suite.addTest(ActivateJavaEditorTest.suite()); |
| suite.addTest(ActivateTextEditorTest.suite()); |
| return suite; |
| } |
| |
| protected void setUp() throws Exception { |
| super.setUp(); |
| setWarmUpRuns(WARM_UP_RUNS); |
| setMeasuredRuns(MEASURED_RUNS); |
| ResourceTestHelper.replicate(PREFIX + FILE_SUFFIX, PREFIX, FILE_SUFFIX, getNumberOfEditors(), FILE_PREFIX, FILE_PREFIX, ResourceTestHelper.SKIP_IF_EXISTS); |
| fEditors= EditorTestHelper.openInEditor(ResourceTestHelper.findFiles(PREFIX, FILE_SUFFIX, 0, getNumberOfEditors()), getEditorId()); |
| } |
| |
| protected void tearDown() throws Exception { |
| super.tearDown(); |
| EditorTestHelper.closeAllEditors(); |
| ResourceTestHelper.delete(PREFIX, FILE_SUFFIX, getNumberOfEditors()); |
| } |
| |
| public void testActivateEditor() { |
| measureActivateEditor(fEditors, getWarmUpRuns(), getNullPerformanceMeter()); |
| PerformanceMeter performanceMeter; |
| if (getShortName() != null) |
| performanceMeter= createPerformanceMeterForSummary(getShortName(), Dimension.ELAPSED_PROCESS); |
| else |
| performanceMeter= createPerformanceMeter(); |
| measureActivateEditor(fEditors, getMeasuredRuns(), performanceMeter); |
| commitAllMeasurements(); |
| assertAllPerformance(); |
| } |
| |
| protected void measureActivateEditor(AbstractTextEditor[] editors, int runs, PerformanceMeter performanceMeter) { |
| IWorkbenchPage page= EditorTestHelper.getActivePage(); |
| for (int i= 0; i < runs; i++) { |
| assertTrue(editors.length == 0 || editors[0] != page.getActivePart()); |
| performanceMeter.start(); |
| for (int j= 0, n= editors.length; j < n; j++) { |
| AbstractTextEditor editor= editors[j]; |
| page.activate(editor); |
| EditorTestHelper.runEventQueue(editor); |
| } |
| performanceMeter.stop(); |
| for (int j= 0, n= editors.length; j < n; j++) |
| EditorTestHelper.joinReconciler(EditorTestHelper.getSourceViewer(editors[j]), 100, 10000, 100); |
| } |
| } |
| |
| protected abstract String getEditorId(); |
| |
| protected static int getNumberOfEditors() { |
| return EDITORS; |
| } |
| |
| protected final String getShortName() { |
| return fShortName; |
| } |
| |
| protected final void setShortName(String shortName) { |
| fShortName= shortName; |
| } |
| } |