blob: ca4eaafc19b9ab78c4668156317a9e0c4132912a [file] [log] [blame]
/*******************************************************************************
* 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.ui.tests.core;
import java.text.Collator;
import java.util.Arrays;
import java.util.Comparator;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.eclipse.jdt.internal.corext.util.History;
import org.w3c.dom.Element;
public class SelectionHistoryTest extends TestCase {
private static final Class THIS= SelectionHistoryTest.class;
public SelectionHistoryTest(String name) {
super(name);
}
public static Test allTests() {
return new ProjectTestSetup(new TestSuite(THIS));
}
public static Test setUpTest(Test test) {
return new ProjectTestSetup(test);
}
public static Test suite() {
if (true) {
return allTests();
}
return setUpTest(new SelectionHistoryTest("testOrganizeImportHistory01"));
}
private void assertEquals(String[] actual, String[] expected) {
if (expected == null && actual == null)
return;
if (expected == null && actual != null) {
StringBuffer buf= new StringBuffer();
buf.append("Expected array is null, actual is: ");
stringArrayToString(actual, buf);
assertTrue(buf.toString(), false);
}
if (expected != null && actual == null) {
StringBuffer buf= new StringBuffer();
buf.append("Actual array is null, expected is: ");
stringArrayToString(expected, buf);
assertTrue(buf.toString(), false);
}
if (expected.length != actual.length) {
StringBuffer buf= new StringBuffer();
buf.append("Actual array length is not equal expected array length\n");
buf.append("Expected: ");
stringArrayToString(expected, buf);
buf.append("\nActual: ");
stringArrayToString(actual, buf);
assertTrue(buf.toString(), false);
}
for (int i= 0; i < actual.length; i++) {
if (!expected[i].equals(actual[i])) {
StringBuffer buf= new StringBuffer();
buf.append("Actual array is not equal expected array \n");
buf.append("Expected: ");
stringArrayToString(expected, buf);
buf.append("\nActual: ");
stringArrayToString(actual, buf);
assertTrue(buf.toString(), false);
}
}
}
private void stringArrayToString(String[] actual, StringBuffer buf) {
buf.append('{');
if (actual.length > 0) {
buf.append(actual[0]);
for (int i= 1; i < actual.length; i++) {
buf.append(", ");
buf.append(actual[i]);
}
}
buf.append('}');
}
private static final class TestHistoryComparator implements Comparator {
private final History fHistory;
public TestHistoryComparator(History history) {
fHistory= history;
}
public int compare(Object o1, Object o2) {
int pos1= fHistory.getPosition(o1);
int pos2= fHistory.getPosition(o2);
if (pos1 == pos2)
return Collator.getInstance().compare(o1, o2);
if (pos1 > pos2) {
return -1;
} else {
return 1;
}
}
}
private static final class TestHistory extends History {
public TestHistory() {
super("");
}
protected void setAttributes(Object object, Element element) {}
protected Object createFromElement(Element type) {return null;}
protected Object getKey(Object object) {return object;}
}
public void testOrganizeImportHistory01() throws Exception {
History history= new TestHistory();
Comparator comparator= new TestHistoryComparator(history);
String[] strings= {"d", "c", "b", "a"};
String[] expected= {"a", "b", "c", "d"};
Arrays.sort(strings, comparator);
assertEquals(strings, expected);
}
public void testOrganizeImportHistory02() throws Exception {
History history= new TestHistory();
Comparator comparator= new TestHistoryComparator(history);
String[] strings= {"a", "b", "c", "d"};
history.accessed("a");
String[] expected= {"a", "b", "c", "d"};
Arrays.sort(strings, comparator);
assertEquals(strings, expected);
}
public void testOrganizeImportHistory03() throws Exception {
History history= new TestHistory();
Comparator comparator= new TestHistoryComparator(history);
String[] strings= {"a", "b", "c", "d"};
history.accessed("b");
String[] expected= {"b", "a", "c", "d"};
Arrays.sort(strings, comparator);
assertEquals(strings, expected);
}
public void testOrganizeImportHistory04() throws Exception {
History history= new TestHistory();
Comparator comparator= new TestHistoryComparator(history);
String[] strings= {"a", "b", "c", "d"};
history.accessed("b");
history.accessed("d");
String[] expected= {"d", "b", "a", "c"};
Arrays.sort(strings, comparator);
assertEquals(strings, expected);
}
public void testOrganizeImportHistory05() throws Exception {
History history= new TestHistory();
Comparator comparator= new TestHistoryComparator(history);
String[] strings= {"a", "b", "c", "d"};
history.accessed("b");
history.accessed("d");
history.accessed("b");
String[] expected= {"b", "d", "a", "c"};
Arrays.sort(strings, comparator);
assertEquals(strings, expected);
}
}