CS 5500 Assignment #2. Assigned: Wednesday, 10 September 2014 Due: Wednesday, 17 September 2014 Revised: Friday, 12 September (changes marked by ! in column 79) This is an individual assignment. Collaboration between students is forbidden on this assignment. You are responsible for keeping your code hidden from all other students. For this assignment, you will write a simple black-box test program for the abstract data type specified in assignment 3. You must write all of your test program's source code by yourself. You are not allowed to use source code written by other students, you are not allowed to use source code obtained from the World-Wide Web or other sources, and you are not allowed to use software packages unless they are already installed on the standard CCIS Linux machines. Your black-box test program must be written in Java. All of your test program's source code must be contained within a single file named TestProgram.java . Your TestProgram.java file must begin with a block comment that 1. gives your name (as you want the instructor to spell it) 2. gives your preferred email address(es) for contacting you ! Your test program will reside within the default package, so the TestProgram.java file must not contain a package statement. Your test program may contain import statements that import from the standard libraries for Java version "1.6.0_32" as installed on CCIS Linux machines. The first class defined within your TestProgram.java file must be a public class named TestProgram. That class must define a public static method named main that takes a single argument of type String[] and returns nothing (void). When that main method is called, it must ignore its argument and perform black-box testing of the SearchableString ADT without performing any input or output except for these specific outputs: For each test that fails, an error message beginning with "ERROR: " should be written to System.err . Each error message should appear on a separate line. After all tests have been run, a summary message must be written to System.err . This summary message must take one of the following forms: Passed all tests. or Failed tests. where is replaced by a positive integer that jibes with the number of error messages printed. Note that the second message must be printed even if the tested program throws a RuntimeException during one or more tests. If your test program finds that the tested implementation passes all tests, it should terminate with an exit status of 0. If, after running all tests, your test program has found one or more tests that the tested implementation does not pass, then your test program should terminate with an exit status other than 0. Your test program will be compiled by copying it into a fresh directory, copying the SearchableString.java file into that directory, and copying the SearchableStrings.java file for an implementation of the SearchableString ADT into that directory, followed by execution of javac TestProgram.java within that directory. Following compilation, your test program will be run by executing java TestProgram within that directory. Your test program will be graded on these criteria: 1. your block comment at the beginning of the file 2. your test program's ability to compile without errors when combined with correct implementations of the ADT 3. your test program's correctness with respect to reporting tests that a buggy implementation of the ADT fails summarizing the number of tests failed by buggy implementations of the ADT reporting that correct implementations of the ADT pass all tests not performing any input or output other than the above 4. your test program's effectiveness at finding bugs in buggy implementations of the ADT 5. the readability of your source code Submit your TestProgram.java file before the beginning of class (6pm EDT, 3pm PDT) on the date it is due using the submit script that's described at the course assignments page. Assignments submitted late will receive less credit or none at all. ----------------------------------------------------------------