package org.semanticweb.HermiT.tableau; public class TupleTableFullIndexTest extends AbstractReasonerInternalsTest { protected TupleTable m_tupleTable; protected TupleTableFullIndex m_index; public TupleTableFullIndexTest(String name) { super(name); } protected void setUp() { m_tupleTable=new TupleTable(2); m_index=new TupleTableFullIndex(m_tupleTable,2); } public void testIndex() { assertAdd(0,"a","b"); assertAdd(1,"b","c"); assertAdd(2,"c","d"); assertAdd(0,"a","b"); assertEquals(0,m_index.getTupleIndex(T("a","b"))); assertEquals(1,m_index.getTupleIndex(T("b","c"))); assertEquals(2,m_index.getTupleIndex(T("c","d"))); m_index.removeTuple(1); assertEquals(0,m_index.getTupleIndex(T("a","b"))); assertEquals(-1,m_index.getTupleIndex(T("b","c"))); assertEquals(2,m_index.getTupleIndex(T("c","d"))); assertAdd(3,"e","f"); assertEquals(0,m_index.getTupleIndex(T("a","b"))); assertEquals(-1,m_index.getTupleIndex(T("b","c"))); assertEquals(2,m_index.getTupleIndex(T("c","d"))); assertEquals(3,m_index.getTupleIndex(T("e","f"))); assertAdd(4,"g","h"); assertEquals(0,m_index.getTupleIndex(T("a","b"))); assertEquals(-1,m_index.getTupleIndex(T("b","c"))); assertEquals(2,m_index.getTupleIndex(T("c","d"))); assertEquals(3,m_index.getTupleIndex(T("e","f"))); assertEquals(4,m_index.getTupleIndex(T("g","h"))); } public void testLotsOfData() { String[][] tuples=new String[40000][]; for (int index=0;index<tuples.length;index++) tuples[index]=new String[] { "a"+index,"b"+index }; for (int tupleIndex=0;tupleIndex<tuples.length;tupleIndex++) assertAdd(tupleIndex,tuples[tupleIndex]); for (int tupleIndex=0;tupleIndex<tuples.length;tupleIndex++) assertEquals(tupleIndex,m_index.getTupleIndex(tuples[tupleIndex])); assertEquals(-1,m_index.getTupleIndex(T("e","f"))); } protected int add(String... tuple) { int tentativeTupleIndex=m_tupleTable.getFirstFreeTupleIndex(); int result=m_index.addTuple(tuple,tentativeTupleIndex); if (result==tentativeTupleIndex) m_tupleTable.addTuple(tuple); return result; } protected void assertAdd(int tupleIndex,String... tuple) { assertEquals(tupleIndex,add(tuple)); } }