Bug 229782 - Performance tests for ICU Collator
diff --git a/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/CollatorPerformanceTest.java b/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/CollatorPerformanceTest.java
new file mode 100644
index 0000000..31b1659
--- /dev/null
+++ b/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/CollatorPerformanceTest.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (c) 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.util.Arrays;
+import java.util.Comparator;
+
+import org.eclipse.jface.util.Policy;
+import org.eclipse.ui.tests.performance.BasicPerformanceTest;
+
+/**
+ * @since 3.5
+ *
+ */
+public class CollatorPerformanceTest extends BasicPerformanceTest {
+
+	private static final int ARRAYSIZE=100000; 
+	private static String[] fArray;
+	
+	/**
+	 * @param testName
+	 */
+	public CollatorPerformanceTest (String testName) {
+		super(testName);
+		generateArray();
+	}
+	
+	/**
+	 *  test Collator by sorting the array
+	 */
+	public void testCollator(){
+		Comparator comparator=Policy.getComparator();
+		for (int i = 0; i <250; i++) {
+			String[] array=(String[]) fArray.clone();
+			startMeasuring();
+			Arrays.sort(array, comparator);
+			stopMeasuring();
+		}
+        commitMeasurements();
+        assertPerformance();
+	}
+	
+	/**
+	 * Generate a large sized array for sorting
+	 */
+	private void generateArray() {
+		if(fArray==null){
+			fArray=new String[ARRAYSIZE];
+			int count=ARRAYSIZE-1;
+			while(count>=0){
+				for (int i = 0; i < 26; i++) {
+					for (int j = 0; j < 26; j++) {
+						for (int k = 0; k < 26; k++) {
+							if(count<0)return;
+							if(k%2==0)
+							fArray[count]=new String(new char[]{
+									(char) (i+'a'),(char) (j+'A'),(char) (k+'a')
+							});
+							else if(k%3==0)
+								fArray[count]=new String(new char[]{
+										(char) (i+'a'),(char) (j+'a'),(char) (k+'A')
+							});
+							else
+								fArray[count]=new String(new char[]{
+										(char) (i+'A'),(char) (j+'a'),(char) (k+'a')
+								});
+							--count;
+						}
+						
+					}
+				}
+				
+			}
+		}
+	}
+}
\ No newline at end of file
diff --git a/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/JFacePerformanceSuite.java b/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/JFacePerformanceSuite.java
index 8be55a0..7ea98ab 100644
--- a/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/JFacePerformanceSuite.java
+++ b/tests/org.eclipse.ui.tests.performance/src/org/eclipse/jface/tests/performance/JFacePerformanceSuite.java
@@ -45,6 +45,7 @@
 		addTest(new TreeTest("testAddThousand"));
 		addTest(new FastTreeTest("testAddHundredTenTimes", BasicPerformanceTest.LOCAL));
 		addTest(new TreeTest("testAddThousandPreSort", BasicPerformanceTest.GLOBAL));
+		addTest(new CollatorPerformanceTest("Policy.getComparatorTest"));
 
 	}
 }