001 package hw7.test;
002
003 import java.io.File;
004 import java.io.FileInputStream;
005 import java.io.FileNotFoundException;
006 import java.io.InputStream;
007 import java.io.PrintStream;
008
009 /**
010 * This class can be used to test your Campus Paths main application. It
011 * redirects System.out and System.in to input and output files, then invokes
012 * the application's main method. This allows the output of a set of commands
013 * to be compared against the expected output without user intervention.
014 */
015 public class HW7TestDriver {
016
017 // Files for reading input and writing output in place of the console.
018 private File in, out;
019
020 /**
021 * @requires in != null && out != null
022 *
023 * @effects Creates a new HW7TestDriver and runs the Campus Paths main
024 * program with System.in and System.out redirected to the provided files.
025 **/
026 public HW7TestDriver(File in, File out) {
027 this.in = in;
028 this.out = out;
029 }
030
031 public void runTests() throws FileNotFoundException {
032 // Store original values of I/O streams.
033 InputStream stdin = System.in;
034 PrintStream stdout = System.out;
035 PrintStream stderr = System.err;
036
037 // Redirect I/O to files.
038 System.setIn(new FileInputStream(in));
039 System.setOut(new PrintStream(out));
040
041 // TODO: add a line here to call your main method. For example, if your
042 // main class is called CampusPaths, write:
043 // CampusPaths.main(new String[0]);
044
045 // Restore standard I/O streams.
046 System.setIn(stdin);
047 System.setOut(stdout);
048 System.setErr(stderr);
049 }
050 }