package gma.simr;
/**
* <p>Title: </p>
* <p>Description: TestLcsrMatching tests LcsrMatching.</p>
* <p>Copyright: Copyright (C) 2003 I. Dan Melamed</p>
* <p>Company: Department of Computer Science, New York University</p>
* @author Luke Shen
* @version 1.0
*/
import gma.util.StringUtil;
import java.util.ArrayList;
import java.util.Properties;
import junit.framework.Test;
import junit.framework.TestCase;
import junit.framework.TestSuite;
public class TestLcsrMatching extends TestCase {
private LcsrMatching matching = null;
public TestLcsrMatching(String name) throws Exception {
super(name);
}
protected void setUp() throws java.lang.Exception {
super.setUp();
Properties properties = new Properties();
properties.put(LcsrMatching.LCSR_THRESHOLD, "0.71");
properties.put(LcsrMatching.MINIMUM_WORD_LENGTH, "4");
matching = new LcsrMatching();
matching.setProperties(properties);
}
protected void tearDown() throws java.lang.Exception {
/**@todo: Override this junit.framework.TestCase method*/
super.tearDown();
}
public void testComputeLcs() throws Exception {
String wordForMatch = "olivier";
String wordToMatch = "olive";
Byte nextItem;
ArrayList listForMatch = new ArrayList();
ArrayList listToMatch = new ArrayList();
for (int i=0; i<wordForMatch.length() ; i++){
nextItem = new Byte((byte)wordForMatch.charAt(i));
listForMatch.add(nextItem);
}
for (int i=0; i<wordToMatch.length() ; i++){
nextItem = new Byte((byte)wordToMatch.charAt(i));
listToMatch.add(nextItem);
}
int lcsLength = matching.computeLcs(listForMatch, listToMatch);
assertEquals(lcsLength, 5);
}
public void testIsMatch() throws Exception {
ArrayList listForMatch = new ArrayList();
ArrayList listToMatch = new ArrayList();
Byte nextItem;
String wordForMatch = StringUtil.norm("prophètes");
String wordToMatch = StringUtil.norm("prophets");
for (int i=0; i<wordForMatch.length() ; i++){
nextItem = new Byte((byte)wordForMatch.charAt(i));
listForMatch.add(nextItem);
}
for (int i=0; i<wordToMatch.length() ; i++){
nextItem = new Byte((byte)wordToMatch.charAt(i));
listToMatch.add(nextItem);
}
boolean result = matching.isMatch(listForMatch, listToMatch, true);
assertEquals(result, true);
wordForMatch = StringUtil.norm("Théman");
wordToMatch = StringUtil.norm("Teman");
listForMatch = new ArrayList();
listToMatch = new ArrayList();
for (int i=0; i<wordForMatch.length() ; i++){
nextItem = new Byte((byte)wordForMatch.charAt(i));
listForMatch.add(nextItem);
}
for (int i=0; i<wordToMatch.length() ; i++){
nextItem = new Byte((byte)wordToMatch.charAt(i));
listToMatch.add(nextItem);
}
result = matching.isMatch(listForMatch, listToMatch, true);
assertEquals(result, true);
// This test should return false because the ratio is too low
wordForMatch = StringUtil.norm("Nonsense");
wordToMatch = StringUtil.norm("Noise");
listForMatch = new ArrayList();
listToMatch = new ArrayList();
for (int i=0; i<wordForMatch.length() ; i++){
nextItem = new Byte((byte)wordForMatch.charAt(i));
listForMatch.add(nextItem);
}
for (int i=0; i<wordToMatch.length() ; i++){
nextItem = new Byte((byte)wordToMatch.charAt(i));
listToMatch.add(nextItem);
}
result = matching.isMatch(listForMatch, listToMatch, true);
assertEquals(result, false);
}
public static void main(String[] args) {
Test mySuite = new TestSuite(TestLcsrMatching.class);
junit.textui.TestRunner.run(mySuite);
}
}