@Test
public void testIndexedCnStartsWithJ() throws Exception
{
SubstringNode node = new SubstringNode( schemaManager.getAttributeType( "cn" ), "j", null );
SubstringEvaluator evaluator = new SubstringEvaluator( node, store, schemaManager );
SubstringCursor cursor = new SubstringCursor( store, evaluator );
assertEquals( node, evaluator.getExpression() );
cursor.beforeFirst();
assertTrue( cursor.next() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 8 ), cursor.get().getId() );
assertEquals( "jack daniels", cursor.get().getKey() );
assertTrue( cursor.next() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 6 ), cursor.get().getId() );
assertEquals( "jim bean", cursor.get().getKey() );
assertTrue( cursor.next() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 9 ), cursor.get().getId() );
assertEquals( "jim bean", cursor.get().getKey() );
assertTrue( cursor.next() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 10 ), cursor.get().getId() );
assertEquals( "jim bean", cursor.get().getKey() );
assertTrue( cursor.next() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 5 ), cursor.get().getId() );
assertEquals( "johnny walker", cursor.get().getKey() );
assertTrue( cursor.next() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 11 ), cursor.get().getId() );
assertEquals( "johnny walker", cursor.get().getKey() );
assertFalse( cursor.next() );
assertFalse( cursor.available() );
assertFalse( cursor.isClosed() );
cursor.close();
assertTrue( cursor.isClosed() );
// ---------- test first ----------
cursor = new SubstringCursor( store, evaluator );
cursor.first();
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 8 ), cursor.get().getId() );
assertEquals( "jack daniels", cursor.get().getKey() );
assertTrue( cursor.next() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 6 ), cursor.get().getId() );
assertEquals( "jim bean", cursor.get().getKey() );
assertTrue( cursor.next() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 9 ), cursor.get().getId() );
assertEquals( "jim bean", cursor.get().getKey() );
assertTrue( cursor.next() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 10 ), cursor.get().getId() );
assertEquals( "jim bean", cursor.get().getKey() );
assertTrue( cursor.next() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 5 ), cursor.get().getId() );
assertEquals( "johnny walker", cursor.get().getKey() );
assertTrue( cursor.next() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 11 ), cursor.get().getId() );
assertEquals( "johnny walker", cursor.get().getKey() );
assertFalse( cursor.next() );
assertFalse( cursor.available() );
cursor.close();
// ---------- test afterLast ----------
cursor = new SubstringCursor( store, evaluator );
cursor.afterLast();
assertFalse( cursor.available() );
assertTrue( cursor.previous() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 11 ), cursor.get().getId() );
assertEquals( "johnny walker", cursor.get().getKey() );
assertTrue( cursor.previous() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 5 ), cursor.get().getId() );
assertEquals( "johnny walker", cursor.get().getKey() );
assertTrue( cursor.previous() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 10 ), cursor.get().getId() );
assertEquals( "jim bean", cursor.get().getKey() );
assertTrue( cursor.previous() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 9 ), cursor.get().getId() );
assertEquals( "jim bean", cursor.get().getKey() );
assertTrue( cursor.previous() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 6 ), cursor.get().getId() );
assertEquals( "jim bean", cursor.get().getKey() );
assertTrue( cursor.previous() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 8 ), cursor.get().getId() );
assertEquals( "jack daniels", cursor.get().getKey() );
assertFalse( cursor.previous() );
assertFalse( cursor.available() );
cursor.close();
// ---------- test last ----------
cursor = new SubstringCursor( store, evaluator );
cursor.last();
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 11 ), cursor.get().getId() );
assertEquals( "johnny walker", cursor.get().getKey() );
assertTrue( cursor.previous() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 5 ), cursor.get().getId() );
assertEquals( "johnny walker", cursor.get().getKey() );
assertTrue( cursor.previous() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 10 ), cursor.get().getId() );
assertEquals( "jim bean", cursor.get().getKey() );
assertTrue( cursor.previous() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 9 ), cursor.get().getId() );
assertEquals( "jim bean", cursor.get().getKey() );
assertTrue( cursor.previous() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 6 ), cursor.get().getId() );
assertEquals( "jim bean", cursor.get().getKey() );
assertTrue( cursor.previous() );
assertTrue( cursor.available() );
assertEquals( Strings.getUUID( 8 ), cursor.get().getId() );
assertEquals( "jack daniels", cursor.get().getKey() );
assertFalse( cursor.previous() );
assertFalse( cursor.available() );
cursor.close();
}