}
public void testBinarySearch() {
int element_count = 20;
TIntList a = new TIntArrayList();
for ( int i = 1; i <= element_count; i++ ) {
a.add( i );
}
a.sort();
int index = a.binarySearch( 5 );
assertEquals( 4, index );
index = a.binarySearch( 8 );
assertEquals( 7, index );
// Add more elements, but duplicates
for ( int i = 1; i <= element_count; i++ ) {
a.add( i );
}
a.sort();
index = a.indexOf( 5 );
assertTrue( "index: " + index, index >= 8 && index <= 9 );
// Not in this range.
index = a.binarySearch( 5, 15, 30 );
assertTrue( "index: " + index, index < 0 );
try {
a.binarySearch( 5, 10, 55 );
fail( "Expected ArrayIndexOutOfBoundsException" );
}
catch ( ArrayIndexOutOfBoundsException ex ) {
// Expected
}
try {
a.binarySearch( 5, -1, 15 );
fail( "Expected ArrayIndexOutOfBoundsException" );
}
catch ( ArrayIndexOutOfBoundsException ex ) {
// Expected
}