| /******************************************************************************* |
| * Copyright (c) 2000, 2004 IBM Corporation and others. |
| * All rights reserved. This program and the accompanying materials |
| * are made available under the terms of the Common Public License v1.0 |
| * which accompanies this distribution, and is available at |
| * http://www.eclipse.org/legal/cpl-v10.html |
| * |
| * Contributors: |
| * IBM Corporation - initial API and implementation |
| *******************************************************************************/ |
| package org.eclipse.swt.tests.junit.performance; |
| |
| |
| import java.io.*; |
| |
| import junit.framework.*; |
| import junit.textui.*; |
| |
| import org.eclipse.swt.graphics.*; |
| import org.eclipse.test.performance.PerformanceMeter; |
| |
| /** |
| * Automated Performance Test Suite for class org.eclipse.swt.graphics.ImageLoader |
| * |
| * @see org.eclipse.swt.graphics.ImageLoader |
| */ |
| public class Test_org_eclipse_swt_graphics_ImageLoader extends SwtPerformanceTestCase { |
| |
| public Test_org_eclipse_swt_graphics_ImageLoader(String name) { |
| super(name); |
| } |
| |
| public static void main(String[] args) { |
| TestRunner.run(suite()); |
| } |
| |
| public void test_Constructor() { |
| final int COUNT = 5000000; |
| |
| PerformanceMeter meter = createMeter("ImageLoader constr."); |
| meter.start(); |
| for (int i = 0; i < COUNT; i++) { |
| new ImageLoader(); |
| } |
| meter.stop(); |
| |
| disposeMeter(meter); |
| } |
| |
| public void test_addImageLoaderListenerLorg_eclipse_swt_graphics_ImageLoaderListener() { |
| final int COUNT = 5000000; // 6000000 causes OOM error |
| |
| ImageLoader loader = new ImageLoader(); |
| ImageLoaderListener loaderListener = new ImageLoaderListener() { |
| public void imageDataLoaded(ImageLoaderEvent e) { |
| }; |
| }; |
| |
| PerformanceMeter meter = createMeter("ImageLoader addImageLoaderListener"); |
| meter.start(); |
| for (int i = 0; i < COUNT; i++) { |
| loader.addImageLoaderListener(loaderListener); |
| } |
| meter.stop(); |
| |
| disposeMeter(meter); |
| } |
| |
| public void test_hasListeners() { |
| final int COUNT = 300000000; |
| |
| ImageLoader loader = new ImageLoader(); |
| |
| PerformanceMeter meter = createMeter("ImageLoader hasListeners - no"); |
| meter.start(); |
| for (int i = 0; i < COUNT; i++) { |
| loader.hasListeners(); // no listeners |
| } |
| meter.stop(); |
| |
| disposeMeter(meter); |
| |
| loader.addImageLoaderListener(new ImageLoaderListener() { |
| public void imageDataLoaded(ImageLoaderEvent e) { |
| }; |
| }); |
| |
| meter = createMeter("ImageLoader hasListeners - yes"); |
| meter.start(); |
| for (int i = 0; i < COUNT; i++) { |
| loader.hasListeners(); // has listener |
| } |
| meter.stop(); |
| |
| disposeMeter(meter); |
| } |
| |
| public void test_loadLjava_io_InputStream() { |
| // TODO |
| } |
| |
| public void test_loadLjava_lang_String() { |
| final int COUNT = 4500; |
| |
| // j2se and j2me(cdc) can load from a filename but, j2me(cldc) throws an exception |
| if (isJ2ME()) return; |
| |
| ImageLoader loader = new ImageLoader(); |
| String fileName = getPath(imageFilenames[0] + "." + imageFormats[0]); |
| |
| PerformanceMeter meter = createMeter("ImageLoader load(String)"); |
| meter.start(); |
| for (int i = 0; i < COUNT; i++) { |
| loader.load(fileName); |
| } |
| meter.stop(); |
| |
| disposeMeter(meter); |
| } |
| |
| public void test_notifyListenersLorg_eclipse_swt_graphics_ImageLoaderEvent() { |
| final int COUNT = 16000000; |
| |
| ImageLoader loader = new ImageLoader(); |
| ImageLoaderEvent event = new ImageLoaderEvent(loader, null, 0, true); |
| loader.addImageLoaderListener( |
| new ImageLoaderListener() { |
| public void imageDataLoaded(ImageLoaderEvent e) {} |
| }); |
| |
| PerformanceMeter meter = createMeter("ImageLoader notifyListeners"); |
| meter.start(); |
| for (int i = 0; i < COUNT; i++) { |
| loader.notifyListeners(event); |
| } |
| meter.stop(); |
| |
| disposeMeter(meter); |
| } |
| |
| public void test_removeImageLoaderListenerLorg_eclipse_swt_graphics_ImageLoaderListener() { |
| final int COUNT = 50000; |
| |
| ImageLoader loader = new ImageLoader(); |
| ImageLoaderListener[] listeners = new ImageLoaderListener[COUNT]; |
| for (int i = 0; i < COUNT; i++) { |
| listeners[i] = new ImageLoaderListener() { |
| public void imageDataLoaded(ImageLoaderEvent e) {} |
| }; |
| loader.addImageLoaderListener(listeners[i]); |
| } |
| |
| PerformanceMeter meter = createMeter("ImageLoader removeImageLoaderListener"); |
| meter.start(); |
| for (int i = 0; i < COUNT; i++) { |
| loader.removeImageLoaderListener(listeners[i]); |
| } |
| meter.stop(); |
| |
| disposeMeter(meter); |
| } |
| |
| public void test_saveLjava_io_OutputStreamI() { |
| final int COUNT = 30000; |
| |
| ImageLoader loader = new ImageLoader(); |
| boolean jpgSupported = false; |
| for (int i=0; i<imageFormats.length; i++) { |
| if (imageFormats[i].equals("jpg")) { |
| jpgSupported = true; |
| break; |
| } |
| } |
| if (!jpgSupported) return; |
| |
| String filename = imageFilenames[0]; |
| // must use jpg since save is not implemented yet in png format |
| String filetype = "jpg"; |
| FileInputStream inStream = null; |
| try { |
| inStream = new FileInputStream(getPath(filename + "." + filetype)); |
| } catch (FileNotFoundException e1) { |
| e1.printStackTrace(); |
| } |
| loader.load(inStream); |
| try { |
| inStream.close(); |
| } catch (IOException e) { |
| e.printStackTrace(); |
| } |
| ByteArrayOutputStream outStream = new ByteArrayOutputStream(); |
| try { |
| for (int i = 0; i < imageFormats.length; i++) { |
| if (imageFormats[i].equals(filetype)) { |
| |
| PerformanceMeter meter = createMeter("ImageLoader save(OutputStream,I) - " + i); |
| meter.start(); |
| for (int j = 0; j < COUNT; j++) { |
| loader.save(outStream, i); |
| } |
| meter.stop(); |
| |
| disposeMeter(meter); |
| |
| break; |
| } |
| } |
| } finally { |
| try { |
| outStream.close(); |
| } catch (Exception e) { |
| e.printStackTrace(); |
| } |
| } |
| } |
| |
| public void test_saveLjava_lang_StringI() { |
| // TODO |
| // final int COUNT = 10000; |
| // |
| // // j2se and j2me(cdc) can load from a filename but, j2me(cldc) throws an exception |
| // if (isJ2ME()) return; |
| // |
| // ImageLoader loader = new ImageLoader(); |
| // String name = getPath(imageFilenames[0] + "." + imageFormats[0]); |
| // InputStream inStream = null; |
| // try { |
| // inStream = new FileInputStream(name); |
| // } catch (FileNotFoundException e) { |
| // e.printStackTrace(); |
| // } |
| // loader.load(inStream); |
| // try { |
| // inStream.close(); |
| // } catch (IOException e2) { |
| // e2.printStackTrace(); |
| // } |
| // |
| // OutputStream outStream = new ByteArrayOutputStream(); |
| // |
| // try { |
| // PerformanceMeter meter = createMeter("gif"); |
| // meter.start(); |
| // for (int i = 0; i < COUNT; i++) { |
| // loader.save(outStream, SWT.IMAGE_GIF); |
| // } |
| // meter.stop(); |
| // |
| // disposeMeter(meter); |
| // |
| // meter = createMeter("ico"); |
| // meter.start(); |
| // for (int i = 0; i < COUNT; i++) { |
| // loader.save(outStream, SWT.IMAGE_ICO); |
| // } |
| // meter.stop(); |
| // |
| // disposeMeter(meter); |
| // |
| // meter = createMeter("jpg"); |
| // meter.start(); |
| // for (int i = 0; i < COUNT; i++) { |
| // loader.save(outStream, SWT.IMAGE_JPEG); |
| // } |
| // meter.stop(); |
| // |
| // disposeMeter(meter); |
| // } finally { |
| // try { |
| // outStream.close(); |
| // } catch (IOException e1) { |
| // e1.printStackTrace(); |
| // } |
| // } |
| } |
| |
| public static Test suite() { |
| TestSuite suite = new TestSuite(); |
| java.util.Vector methodNames = methodNames(); |
| java.util.Enumeration e = methodNames.elements(); |
| while (e.hasMoreElements()) { |
| suite.addTest(new Test_org_eclipse_swt_graphics_ImageLoader((String)e.nextElement())); |
| } |
| return suite; |
| } |
| public static java.util.Vector methodNames() { |
| java.util.Vector methodNames = new java.util.Vector(); |
| methodNames.addElement("test_Constructor"); |
| methodNames.addElement("test_addImageLoaderListenerLorg_eclipse_swt_graphics_ImageLoaderListener"); |
| methodNames.addElement("test_hasListeners"); |
| methodNames.addElement("test_loadLjava_io_InputStream"); |
| methodNames.addElement("test_loadLjava_lang_String"); |
| methodNames.addElement("test_notifyListenersLorg_eclipse_swt_graphics_ImageLoaderEvent"); |
| methodNames.addElement("test_removeImageLoaderListenerLorg_eclipse_swt_graphics_ImageLoaderListener"); |
| methodNames.addElement("test_saveLjava_io_OutputStreamI"); |
| methodNames.addElement("test_saveLjava_lang_StringI"); |
| return methodNames; |
| } |
| protected void runTest() throws Throwable { |
| if (getName().equals("test_Constructor")) test_Constructor(); |
| else if (getName().equals("test_addImageLoaderListenerLorg_eclipse_swt_graphics_ImageLoaderListener")) test_addImageLoaderListenerLorg_eclipse_swt_graphics_ImageLoaderListener(); |
| else if (getName().equals("test_hasListeners")) test_hasListeners(); |
| else if (getName().equals("test_loadLjava_io_InputStream")) test_loadLjava_io_InputStream(); |
| else if (getName().equals("test_loadLjava_lang_String")) test_loadLjava_lang_String(); |
| else if (getName().equals("test_notifyListenersLorg_eclipse_swt_graphics_ImageLoaderEvent")) test_notifyListenersLorg_eclipse_swt_graphics_ImageLoaderEvent(); |
| else if (getName().equals("test_removeImageLoaderListenerLorg_eclipse_swt_graphics_ImageLoaderListener")) test_removeImageLoaderListenerLorg_eclipse_swt_graphics_ImageLoaderListener(); |
| else if (getName().equals("test_saveLjava_io_OutputStreamI")) test_saveLjava_io_OutputStreamI(); |
| else if (getName().equals("test_saveLjava_lang_StringI")) test_saveLjava_lang_StringI(); |
| } |
| } |