blob: 3a6f6124987af09bb92f5086ea7940b23ec82726 [file] [log] [blame]
/*******************************************************************************
* 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 junit.framework.*;
import junit.textui.*;
import org.eclipse.swt.widgets.*;
import org.eclipse.swt.graphics.*;
import org.eclipse.test.performance.PerformanceMeter;
/**
* Automated Performance Test Suite for class org.eclipse.swt.graphics.Color
*
* @see org.eclipse.swt.graphics.Color
*/
public class Test_org_eclipse_swt_graphics_Color extends SwtPerformanceTestCase {
public Test_org_eclipse_swt_graphics_Color(String name) {
super(name);
}
public static void main(String[] args) {
TestRunner.run(suite());
}
protected void setUp() throws Exception {
super.setUp();
display = Display.getDefault();
}
public void test_ConstructorLorg_eclipse_swt_graphics_DeviceIII() {
// adding 500000 to either of these cause OOM
final int COUNT = isGTK ? 1500000 : 3000000;
Color[] colors = new Color [COUNT];
PerformanceMeter meter = createMeter("Color constr.(Device,III)");
meter.start();
for (int i = 0; i < COUNT; i++) {
colors[i] = new Color(display, 102, 255, 3);
}
meter.stop();
for (int i = 0; i < COUNT; i++) {
colors[i].dispose();
}
disposeMeter(meter);
}
public void test_ConstructorLorg_eclipse_swt_graphics_DeviceLorg_eclipse_swt_graphics_RGB() {
// adding 500000 to either of these cause OOM
final int COUNT = isGTK ? 1500000 : 3000000;
Color[] colors = new Color [COUNT];
RGB rgb = new RGB(102, 255, 3);
PerformanceMeter meter = createMeter("Color constr.(Device,RGB)");
meter.start();
for (int i = 0; i < COUNT; i++) {
colors[i] = new Color(display, rgb);
}
meter.stop();
for (int i = 0; i < COUNT; i++) {
colors[i].dispose();
}
disposeMeter(meter);
}
public void test_dispose() {
int count = 20000000;
PerformanceMeter meter = createMeter("Color dispose - typical");
meter.start();
for (int i = 0; i < count; i++) {
/*
* This test is not really valid since it's measuring both creation and
* disposal of the Colors. This is done because attempting to pre-create
* more than 3500000 Colors for disposal causes an Out Of Memory error.
*/
new Color(display, 255, 0, 128).dispose();
}
meter.stop();
disposeMeter(meter);
count *= 3;
Color disposedColor = new Color (display, 255, 0, 128);
disposedColor.dispose();
meter = createMeter("Color dispose - disposed");
meter.start();
for (int i = 0; i < count; i++) {
disposedColor.dispose(); // dispose disposed
}
meter.stop();
disposeMeter(meter);
}
public void test_equalsLjava_lang_Object() {
final int COUNT = 60000000;
Color color1 = new Color(display, 0, 128, 255);
Color color2 = new Color(display, 0, 128, 255);
PerformanceMeter meter = createMeter("Color equals - equal");
meter.start();
for (int i = 0; i < COUNT; i++) {
color1.equals(color2); // equal
}
meter.stop();
color1.dispose();
color2.dispose();
disposeMeter(meter);
color1 = new Color(display, 0, 128, 255);
color2 = new Color(display, 128, 255, 0);
meter = createMeter("Color equals - different");
meter.start();
for (int i = 0; i < COUNT; i++) {
color1.equals(color2); // not equal
}
meter.stop();
color1.dispose();
color2.dispose();
disposeMeter(meter);
}
public void test_getBlue() {
final int COUNT = 300000000;
Color color = new Color(display, 128, 64, 255);
PerformanceMeter meter = createMeter("Color getBlue");
meter.start();
for (int i = 0; i < COUNT; i++) {
color.getBlue();
}
meter.stop();
color.dispose();
disposeMeter(meter);
}
public void test_getGreen() {
final int COUNT = 300000000;
Color color = new Color(display, 128, 64, 255);
PerformanceMeter meter = createMeter("Color getGreen");
meter.start();
for (int i = 0; i < COUNT; i++) {
color.getGreen();
}
meter.stop();
color.dispose();
disposeMeter(meter);
}
public void test_getRGB() {
final int COUNT = 20000000;
Color color = new Color(display, 128, 64, 255);
PerformanceMeter meter = createMeter("Color getRGB");
meter.start();
for (int i = 0; i < COUNT; i++) {
color.getRGB();
}
meter.stop();
color.dispose();
disposeMeter(meter);
}
public void test_getRed() {
final int COUNT = 300000000;
Color color = new Color(display, 128, 64, 255);
PerformanceMeter meter = createMeter("Color getRed");
meter.start();
for (int i = 0; i < COUNT; i++) {
color.getRed();
}
meter.stop();
color.dispose();
disposeMeter(meter);
}
public void test_hashCode() {
final int COUNT = 600000000;
Color color = new Color(display, 128, 64, 255);
PerformanceMeter meter = createMeter("Color hashCode");
meter.start();
for (int i = 0; i < COUNT; i++) {
color.hashCode();
}
meter.stop();
color.dispose();
disposeMeter(meter);
}
public void test_isDisposed() {
final int COUNT = 600000000;
Color color = new Color(display, 128, 128, 128);
PerformanceMeter meter = createMeter("Color isDisposed - no");
meter.start();
for (int i = 0; i < COUNT; i++) {
color.isDisposed(); // not disposed
}
meter.stop();
color.dispose();
disposeMeter(meter);
meter = createMeter("Color isDisposed - yes");
meter.start();
for (int i = 0; i < COUNT; i++) {
color.isDisposed(); // disposed
}
meter.stop();
disposeMeter(meter);
}
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_Color((String)e.nextElement()));
}
return suite;
}
public static java.util.Vector methodNames() {
java.util.Vector methodNames = new java.util.Vector();
methodNames.addElement("test_ConstructorLorg_eclipse_swt_graphics_DeviceIII");
methodNames.addElement("test_ConstructorLorg_eclipse_swt_graphics_DeviceLorg_eclipse_swt_graphics_RGB");
methodNames.addElement("test_dispose");
methodNames.addElement("test_equalsLjava_lang_Object");
methodNames.addElement("test_getBlue");
methodNames.addElement("test_getGreen");
methodNames.addElement("test_getRGB");
methodNames.addElement("test_getRed");
methodNames.addElement("test_hashCode");
methodNames.addElement("test_isDisposed");
return methodNames;
}
protected void runTest() throws Throwable {
if (getName().equals("test_ConstructorLorg_eclipse_swt_graphics_DeviceIII")) test_ConstructorLorg_eclipse_swt_graphics_DeviceIII();
else if (getName().equals("test_ConstructorLorg_eclipse_swt_graphics_DeviceLorg_eclipse_swt_graphics_RGB")) test_ConstructorLorg_eclipse_swt_graphics_DeviceLorg_eclipse_swt_graphics_RGB();
else if (getName().equals("test_dispose")) test_dispose();
else if (getName().equals("test_equalsLjava_lang_Object")) test_equalsLjava_lang_Object();
else if (getName().equals("test_getBlue")) test_getBlue();
else if (getName().equals("test_getGreen")) test_getGreen();
else if (getName().equals("test_getRGB")) test_getRGB();
else if (getName().equals("test_getRed")) test_getRed();
else if (getName().equals("test_hashCode")) test_hashCode();
else if (getName().equals("test_isDisposed")) test_isDisposed();
}
/* custom */
Display display;
}