package org.limewire.promotion;
import java.util.List;
import junit.framework.Test;
import org.limewire.util.BaseTestCase;
public class KeywordUtilImplTest extends BaseTestCase {
public KeywordUtilImplTest(String name) {
super(name);
}
public static Test suite() {
return buildTestSuite(KeywordUtilImplTest.class);
}
public void testGetHashValue() {
KeywordUtilImpl keywordUtil = new KeywordUtilImpl();
assertEquals(859844163007352795L, keywordUtil.getHashValue("foo"));
assertEquals(859844163007352795L, keywordUtil.getHashValue("fOo"));
assertNotEquals(859844163007352795L, keywordUtil.getHashValue("a foo"));
assertEquals(7771131797414839755L, keywordUtil.getHashValue("big foo"));
assertEquals(7771131797414839755L, keywordUtil.getHashValue("FOO BIG"));
assertEquals(7771131797414839755L, keywordUtil.getHashValue("a big foo"));
assertEquals(7771131797414839755L, keywordUtil.getHashValue("a foo big"));
assertSameHash("a", "A");
assertSameHash("big bird", "a big bird");
assertSameHash("I shot the sherriff", "sherriff shot");
assertSameHash("I shot the sherriff", "sherriff shot");
assertSameHash("I shot the sherriff", "sherriff shot's");
assertSameHash("The Low Lows", "low lows");
assertSameHash("vacation Hawaii golf", "vacation Hawaii");
assertSameHash("britney's going crazy", "britney is crazy");
assertSameHash("britney's going crazy", "britney's crazy mom");
assertSameHash("Beyonc\u00E9", "beyonce");
assertSameHash(" ", " ");
assertSameHash("", "");
assertSameHash(" ", "");
assertSameHash(" ", ",.");
// Make sure we never get a negative value....
for (int i = 0; i < 10000; i++) {
assertGreaterThan(-1, keywordUtil.getHashValue("foo" + i));
}
}
private void assertSameHash(String query1, String query2) {
KeywordUtilImpl keywordUtil = new KeywordUtilImpl();
long hash1 = keywordUtil.getHashValue(query1);
long hash2 = keywordUtil.getHashValue(query2);
assertTrue("Hashes for queries did not match.", hash1 == hash2);
}
public void testSortAlphabetically() {
KeywordUtilImpl keywordUtil = new KeywordUtilImpl();
assertEquals(new String[] { "a", "b", "c" }, keywordUtil.sortAlphabetically(new String[] {
"b", "a", "c" }));
}
public void testSortByLength() {
KeywordUtilImpl keywordUtil = new KeywordUtilImpl();
assertEquals(new String[] { "a", "b", "c" }, keywordUtil.sortByLength(new String[] { "b",
"a", "c" }));
assertEquals(new String[] { "ccc", "bb", "a" }, keywordUtil.sortByLength(new String[] {
"bb", "a", "ccc" }));
assertEquals(new String[] { "aaa", "ccc", "bb", "a" }, keywordUtil
.sortByLength(new String[] { "bb", "aaa", "a", "ccc" }));
}
public void testStripEnglishStopWords() {
KeywordUtilImpl keywordUtil = new KeywordUtilImpl();
assertEquals(new String[] { "b", "c" }, keywordUtil.stripEnglishStopWords(new String[] {
"a", "b", "c" }));
assertEquals(new String[] { "a", "b" }, keywordUtil.stripEnglishStopWords(new String[] {
"a", "b" }));
assertEquals(new String[] { "a", "a" }, keywordUtil.stripEnglishStopWords(new String[] {
"a", "a" }));
assertEquals(new String[] { "a" }, keywordUtil.stripEnglishStopWords(new String[] { "a" }));
}
public void testUnsplitString() {
KeywordUtilImpl keywordUtil = new KeywordUtilImpl();
assertEquals("a b c", keywordUtil.unsplitString(new String[] { "a", "b", "c" }));
}
public void testStripPunctuation() {
KeywordUtilImpl keywordUtil = new KeywordUtilImpl();
assertEquals("a b c", keywordUtil.stripPunctuation("a,b,c"));
assertEquals("a b", keywordUtil.stripPunctuation("a'b"));
}
public void testSplitKeywords() {
KeywordUtilImpl keywordUtil = new KeywordUtilImpl();
List<String> words = keywordUtil.splitKeywords("foo\tBAR\tfoo bar");
assertEquals("foo", words.get(0));
assertEquals("bar", words.get(1));
assertEquals("bar foo", words.get(2));
}
}