@Test
public void testIndexedServerEntry() throws Exception
{
PresenceNode node = new PresenceNode( schemaManager.getAttributeType( "cn" ) );
PresenceEvaluator<Long> evaluator = new PresenceEvaluator<Long>( node, store, schemaManager );
PresenceCursor<Long> cursor = new PresenceCursor<Long>( store, evaluator );
assertEquals( node, evaluator.getExpression() );
cursor.beforeFirst();
assertTrue( cursor.next() );
assertTrue( cursor.available() );
assertEquals( 5, ( long ) cursor.get().getId() );
assertTrue( cursor.next() );
assertTrue( cursor.available() );
assertEquals( 6, ( long ) cursor.get().getId() );
assertTrue( cursor.next() );
assertTrue( cursor.available() );
assertEquals( 8, ( long ) cursor.get().getId() );
assertTrue( cursor.next() );
assertTrue( cursor.available() );
assertEquals( 9, ( long ) cursor.get().getId() );
assertTrue( cursor.next() );
assertTrue( cursor.available() );
assertEquals( 10, ( long ) cursor.get().getId() );
assertTrue( cursor.next() );
assertTrue( cursor.available() );
assertEquals( 11, ( long ) cursor.get().getId() );
assertFalse( cursor.next() );
assertFalse( cursor.available() );
// test first()
cursor.first();
assertTrue( cursor.available() );
assertEquals( SchemaConstants.CN_AT_OID, cursor.get().getValue() );
// test last()
cursor.last();
assertTrue( cursor.available() );
assertEquals( SchemaConstants.CN_AT_OID, cursor.get().getValue() );
// test beforeFirst()
cursor.beforeFirst();
assertFalse( cursor.available() );
assertTrue( cursor.next() );
assertTrue( cursor.available() );
assertEquals( SchemaConstants.CN_AT_OID, cursor.get().getValue() );
// test afterLast()
cursor.afterLast();
assertFalse( cursor.available() );
assertTrue( cursor.previous() );
assertTrue( cursor.available() );
assertEquals( SchemaConstants.CN_AT_OID, cursor.get().getValue() );
// test before()
ForwardIndexEntry<String, Entry, Long> entry = new ForwardIndexEntry<String, Entry, Long>();
entry.setValue( SchemaConstants.CN_AT_OID );
cursor.before( entry );
assertTrue( cursor.next() );
assertTrue( cursor.available() );
assertEquals( SchemaConstants.CN_AT_OID, cursor.get().getValue() );
// test after()
entry = new ForwardIndexEntry<String, Entry, Long>();
cursor.after( entry );
assertTrue( cursor.previous() );
assertTrue( cursor.available() );
assertEquals( SchemaConstants.CN_AT_OID, cursor.get().getValue() );
node = new PresenceNode( schemaManager.getAttributeType( "ou" ) );
evaluator = new PresenceEvaluator<Long>( node, store, schemaManager );
cursor = new PresenceCursor<Long>( store, evaluator );
cursor.beforeFirst();
assertTrue( cursor.next() );