import java.util.*; import junit.framework.*; /** * A recipe straight from the JUnit FAQ * under "How do I write a simple test?" * @author Jim Mahoney (following thousands of others) * @version "0.1" */ public class TestBinarySearch extends TestCase { public TestBinarySearch(String name){ super(name); } public static Test suite(){ return new TestSuite(TestBinarySearch.class); } public static void main(String args[]){ junit.textui.TestRunner.run(suite()); } // create any private variables for the tests here // that multiple testSomeThing()'s use. private BinarySearch bs; private int[] testNumbers = {1, 10, 15, 20, 25, 50, 100, 101, 120, 5000}; private int answer_15; public void setUp(){ bs = new BinarySearch(); answer_15 = bs.search( testNumbers, 15 ); } public void testLegalReturn(){ assertTrue( answer_15 >= -1 && answer_15 < 10 ); } public void testAnswerFifteen(){ assertTrue( answer_15 == 2 ); } public void testNotFound(){ int answer = bs.search(testNumbers, 21); assertTrue(answer == -1); } public void testLeftmost(){ int answer = bs.search(testNumbers, 1); assertTrue(answer == 0); } public void testRightmost(){ int answer = bs.search(testNumbers, 5000); assertTrue(answer == 9); } public void testAllTen(){ for (int i=0; i<10; i++){ int answer = bs.search(testNumbers, testNumbers[i]); assertTrue(answer == i); } } public void testBadInput(){ int[] notSorted = {10, 1}; int answer = bs.search(notSorted, 1); assertTrue(answer == 1); } }