Here are some test cases for BinarySearchInJava. In order to pass the search must be capable of determining whether a value is in the array, returning an index to the value if it is, and throwing an exception when asked to return an index to a value that is not in the array. I am interested in what XP might consider to be a proper set of tests for this. -- PhilGoodwin
public class BinarySearchTest extends TestCase { int[] anArray = {1,2,3,4,6,7,8}; BinarySearchTest( String name ) { super( name ); } protected void setUp(){} public static Test suite() { TestSuite suite= new TestSuite(); suite.addTest( new BinarySearchTest("in array") { protected void runTest() { this.testIsInArray(); } }); suite.addTest( new BinarySearchTest("not in array") { protected void runTest() { this.testNotInArray(); } }); suite.addTest( new BinarySearchTest("throws") { protected void runTest() { this.testThrows(); } }); suite.addTest( new BinarySearchTest("doesn't throw") { protected void runTest() { this.testThrowsNot(); } }); return suite; } public void testNotInArray() { BinarySearch failSearch = new BinarySearch( 5, anArray ); assert( failSearch.targetIsInArray() == false ); } public void testIsInArray() { BinarySearch successSearch = new BinarySearch( 2, anArray ); if( successSearch.targetIsInArray() ) { assert( "Target was not found in proper location", anArray[ successSearch.indexOfTarget() ] == 2 ); } else { fail( "Target wasn't found" ); } } public void testThrows() { try { BinarySearch.findIndexOf( 5, anArray ); fail("Exception not thrown"); } catch(Exception e){} } public void testThrowsNot() { try { BinarySearch.findIndexOf( 4, anArray ); } catch(Exception e) { fail("Exception thrown"); } } }