/******************************************************************************* * Copyright (c) 2005, 2008 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.jface.tests.performance; import java.io.IOException; import java.net.URL; import java.util.ArrayList; import java.util.Enumeration; import java.util.Iterator; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.Path; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.swt.graphics.Image; import org.eclipse.ui.tests.performance.BasicPerformanceTest; import org.eclipse.ui.tests.performance.TestRunnable; import org.eclipse.ui.tests.performance.UIPerformancePlugin; import org.osgi.framework.Bundle; /** * ComboViewerRefreshTest is a test of refreshes of difference size in the combo * viewer. */ public class FileImageDescriptorTest extends BasicPerformanceTest { protected static final String IMAGES_DIRECTORY = "/icons/imagetests"; public FileImageDescriptorTest(String testName, int tagging) { super(testName, tagging); } public FileImageDescriptorTest(String testName) { super(testName); } /** * Test the time for doing a refresh. * * @throws Throwable */ public void testRefresh() throws Throwable { exercise(new TestRunnable() { @Override public void run() { Class missing = null; ArrayList images = new ArrayList(); Bundle bundle = UIPerformancePlugin.getDefault().getBundle(); Enumeration bundleEntries = bundle .getEntryPaths(IMAGES_DIRECTORY); while (bundleEntries.hasMoreElements()) { ImageDescriptor descriptor; String localImagePath = (String) bundleEntries .nextElement(); if(localImagePath.indexOf('.') < 0) continue; URL[] files = FileLocator.findEntries(bundle, new Path( localImagePath)); for (int i = 0; i < files.length; i++) { startMeasuring(); try { descriptor = ImageDescriptor.createFromFile(missing, FileLocator.toFileURL(files[i]).getFile()); } catch (IOException e) { fail(e.getLocalizedMessage(),e); continue; } for (int j = 0; j < 10; j++) { Image image = descriptor.createImage(); images.add(image); } processEvents(); stopMeasuring(); } } Iterator imageIterator = images.iterator(); while (imageIterator.hasNext()) { ((Image) imageIterator.next()).dispose(); } } }, 20, 100, JFacePerformanceSuite.MAX_TIME); commitMeasurements(); assertPerformance(); } }