package edu.stanford.nlp.util;
import junit.framework.TestCase;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* @author Sebastian Riedel
*/
public class HashIndexTest extends TestCase {
protected Index<String> index;
protected Index<String> index2;
protected Index<String> index3;
@Override
protected void setUp() {
index = new HashIndex<String>();
index.add("The");
index.add("Beast");
index2 = new HashIndex<String>();
index2.add("Beauty");
index2.add("And");
index2.add("The");
index2.add("Beast");
index3 = new HashIndex<String>();
index3.add("Markov");
index3.add("The");
index3.add("Beast");
}
public void testSize() {
assertEquals(2,index.size());
}
public void testGet() {
assertEquals(2,index.size());
assertEquals("The",index.get(0));
assertEquals("Beast",index.get(1));
}
public void testIndexOf() {
assertEquals(2,index.size());
assertEquals(0,index.indexOf("The"));
assertEquals(1,index.indexOf("Beast"));
}
public void testIterator() {
Iterator<String> i = index.iterator();
assertEquals("The",i.next());
assertEquals("Beast",i.next());
assertEquals(false,i.hasNext());
}
/*
public void testRemove() {
index2.remove("Sebastian");
index2.remove("Beast");
assertEquals(3, index2.size());
assertEquals(0, index2.indexOf("Beauty"));
assertEquals(1, index2.indexOf("And"));
assertEquals(3, index2.indexOf("Beast"));
index2.removeAll(index3.objectsList());
}
*/
public void testToArray() {
String[] strs = new String[2];
strs = index.objectsList().toArray(strs);
assertEquals("The", strs[0]);
assertEquals("Beast", strs[1]);
assertEquals(2, strs.length);
}
public void testUnmodifiableViewEtc() {
List<String> list = new ArrayList<String>();
list.add("A");
list.add("B");
list.add("A");
list.add("C");
HashIndex<String> index4 = new HashIndex<String>(list);
HashIndex<String> index5 = new HashIndex<String>();
index5.addAll(list);
assertEquals("Equality failure", index4, index5);
index5.addToIndex("D");
index5.addToIndex("E");
index5.indexOf("F");
index5.addAll(list);
assertEquals(5, index5.size());
assertEquals(3, index4.size());
assertTrue(index4.contains("A"));
assertEquals(0, index4.indexOf("A"));
assertEquals(1, index4.indexOf("B"));
assertEquals(2, index4.indexOf("C"));
assertEquals("A", index4.get(0));
Index<String> index4u = index4.unmodifiableView();
assertEquals(3, index4u.size());
assertTrue(index4u.contains("A"));
assertEquals(0, index4u.indexOf("A"));
assertEquals(1, index4u.indexOf("B"));
assertEquals(2, index4u.indexOf("C"));
assertEquals("A", index4u.get(0));
assertEquals(-1, index4u.addToIndex("D"));
boolean okay = false;
try {
index4u.unlock();
} catch (UnsupportedOperationException uoe) {
okay = true;
} finally {
assertTrue(okay);
}
}
public void testCopyConstructor() {
Index<String> test = new HashIndex<String>();
test.add("Beauty");
test.add("And");
test.add("The");
test.add("Beast");
HashIndex<String> copy = new HashIndex<String>(test);
assertEquals(test, copy);
}
}