/*******************************************************************************
* Copyright (c) 1998, 2015 Oracle and/or its affiliates. All rights reserved.
* This program and the accompanying materials are made available under the
* terms of the Eclipse Public License v1.0 and Eclipse Distribution License v. 1.0
* which accompanies this distribution.
* The Eclipse Public License is available at http://www.eclipse.org/legal/epl-v10.html
* and the Eclipse Distribution License is available at
* http://www.eclipse.org/org/documents/edl-v10.php.
*
* Contributors:
* Oracle - initial API and implementation from Oracle TopLink
******************************************************************************/
package org.eclipse.persistence.tools.workbench.test.utility.string;
import java.util.Arrays;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
import org.eclipse.persistence.tools.workbench.utility.string.ExhaustivePartialStringComparatorEngine;
import org.eclipse.persistence.tools.workbench.utility.string.LowerCasePartialStringComparator;
import org.eclipse.persistence.tools.workbench.utility.string.PartialStringComparator;
import org.eclipse.persistence.tools.workbench.utility.string.PartialStringComparatorEngine;
import org.eclipse.persistence.tools.workbench.utility.string.SimpleStringHolder;
import org.eclipse.persistence.tools.workbench.utility.string.StringHolder;
import org.eclipse.persistence.tools.workbench.utility.string.PartialStringComparatorEngine.StringHolderPair;
public class ExhaustivePartialStringComparatorEngineTests extends TestCase {
public static Test suite() {
return new TestSuite(ExhaustivePartialStringComparatorEngineTests.class);
}
public ExhaustivePartialStringComparatorEngineTests(String name) {
super(name);
}
public void testSameSize() {
PartialStringComparatorEngine engine = this. buildEngine();
StringHolderPair[] pairs = engine.match(this.buildStringHoldersSameSize1(), this.buildStringHoldersSameSize2());
Arrays.sort(pairs);
this.dump(pairs);
int i = 0;
assertEquals("dadoorunrun", pairs[i].getStringHolder1().getString());
assertEquals("da-doo-run-run", pairs[i++].getStringHolder2().getString());
assertEquals("bar", pairs[i].getStringHolder1().getString());
assertEquals("bbaarr", pairs[i++].getStringHolder2().getString());
assertEquals("foo", pairs[i].getStringHolder1().getString());
assertEquals("FOOOOO", pairs[i++].getStringHolder2().getString());
assertEquals("chickenLittle", pairs[i].getStringHolder1().getString());
assertEquals("MyChickenLittle", pairs[i++].getStringHolder2().getString());
}
private StringHolder[] buildStringHoldersSameSize1() {
return new StringHolder[] {
new SimpleStringHolder("foo"),
new SimpleStringHolder("chickenLittle"),
new SimpleStringHolder("dadoorunrun"),
new SimpleStringHolder("bar")
};
}
private StringHolder[] buildStringHoldersSameSize2() {
return new StringHolder[] {
new SimpleStringHolder("bbaarr"),
new SimpleStringHolder("da-doo-run-run"),
new SimpleStringHolder("FOOOOO"),
new SimpleStringHolder("MyChickenLittle")
};
}
public void testSmaller1() {
PartialStringComparatorEngine engine = this. buildEngine();
StringHolderPair[] pairs = engine.match(this.buildStringHoldersSmaller1_1(), this.buildStringHoldersSmaller1_2());
Arrays.sort(pairs);
this.dump(pairs);
int i = 0;
assertNull(pairs[i].getStringHolder1());
assertEquals("MyChickenLittle", pairs[i++].getStringHolder2().getString());
assertEquals("dadoorunrun", pairs[i].getStringHolder1().getString());
assertEquals("da-doo-run-run", pairs[i++].getStringHolder2().getString());
assertEquals("bar", pairs[i].getStringHolder1().getString());
assertEquals("bbaarr", pairs[i++].getStringHolder2().getString());
assertEquals("foo", pairs[i].getStringHolder1().getString());
assertEquals("FOOOOO", pairs[i++].getStringHolder2().getString());
}
private StringHolder[] buildStringHoldersSmaller1_1() {
return new StringHolder[] {
new SimpleStringHolder("foo"),
new SimpleStringHolder("dadoorunrun"),
new SimpleStringHolder("bar")
};
}
private StringHolder[] buildStringHoldersSmaller1_2() {
return new StringHolder[] {
new SimpleStringHolder("bbaarr"),
new SimpleStringHolder("da-doo-run-run"),
new SimpleStringHolder("FOOOOO"),
new SimpleStringHolder("MyChickenLittle")
};
}
public void testSmaller2() {
PartialStringComparatorEngine engine = this. buildEngine();
StringHolderPair[] pairs = engine.match(this.buildStringHoldersSmaller2_1(), this.buildStringHoldersSmaller2_2());
Arrays.sort(pairs);
this.dump(pairs);
int i = 0;
assertEquals("dadoorunrun", pairs[i].getStringHolder1().getString());
assertNull(pairs[i++].getStringHolder2());
assertEquals("foo", pairs[i].getStringHolder1().getString());
assertEquals("da-doo-run-run", pairs[i++].getStringHolder2().getString());
assertEquals("bar", pairs[i].getStringHolder1().getString());
assertEquals("bbaarr", pairs[i++].getStringHolder2().getString());
assertEquals("chickenLittle", pairs[i].getStringHolder1().getString());
assertEquals("MyChickenLittle", pairs[i++].getStringHolder2().getString());
}
private StringHolder[] buildStringHoldersSmaller2_1() {
return new StringHolder[] {
new SimpleStringHolder("foo"),
new SimpleStringHolder("chickenLittle"),
new SimpleStringHolder("dadoorunrun"),
new SimpleStringHolder("bar")
};
}
private StringHolder[] buildStringHoldersSmaller2_2() {
return new StringHolder[] {
new SimpleStringHolder("bbaarr"),
new SimpleStringHolder("da-doo-run-run"),
new SimpleStringHolder("MyChickenLittle")
};
}
protected PartialStringComparatorEngine buildEngine() {
return new ExhaustivePartialStringComparatorEngine(this.buildComparator());
}
private PartialStringComparator buildComparator() {
return new LowerCasePartialStringComparator(PartialStringComparator.DEFAULT_COMPARATOR);
}
private void dump(StringHolderPair[] stringHolderPairs) {
// System.out.println();
// Arrays.sort(stringHolderPairs);
// for (int i = 0; i < stringHolderPairs.length; i++) {
// System.out.println(stringHolderPairs[i]);
// }
}
}