How would i create a testing file for the program below impo
How would i create a testing file for the program below???????
import java.util.*;
import java.io.*;
public class Test2 {
public static void main(String[] args) {
Scanner input = null;
try {
input = new Scanner(new File(\"test2.txt\"));
} catch (FileNotFoundException e) {
System.out.println(\"You must copy test2.txt to this directory\" +
\" before running the testing program.\");
System.exit(1);
}
LetterInventory tester = new LetterInventory(\"\");
System.out.println(\"Starting with empty inventory\");
check(tester, input);
while (input.hasNext()) {
char ch = input.next().charAt(0);
int count = input.nextInt();
System.out.println(\"setting count for \" + ch + \" to \" + count);
try {
tester.set(ch, count);
} catch(Exception e) {
System.out.println(\"failed\");
System.out.println(\" threw exception: \" + e);
int line = e.getStackTrace()[0].getLineNumber();
System.out.println(\" in LetterInventory line#\" + line);
System.exit(1);
}
check(tester, input);
}
System.out.println(\"All tests passed.\");
}
// pre : input file contains a 2-line test case that contains the state
// that the given inventory should be in after performing the given
// call on get
// post: reports whether or not test was passed
public static void check(LetterInventory tester, Scanner input) {
testSize(tester, input);
testToString(tester, input);
testIsEmpty(tester, input);
testGet(tester, input);
System.out.println(\"size, toString, isEmpty, and count all passed\");
System.out.println();
}
// pre : input file contains correct toString
// post: reports whether or not test was passed
public static void testToString(LetterInventory tester, Scanner input) {
String correct = input.next();
System.out.println(\"inventory = \" + correct);
String test = \"\";
try {
test = tester.toString();
} catch (Exception e) {
System.out.println(\"toString failed\");
System.out.println(\" threw exception: \" + e);
int line = e.getStackTrace()[0].getLineNumber();
System.out.println(\" in LetterInventory line#\" + line);
System.exit(1);
}
if (!correct.equals(test)) {
System.out.println(\"toString failed\");
System.out.println(\" correct toString = \" + correct);
System.out.println(\" your toString = \" + test);
System.exit(1);
}
}
// pre : input file contains correct size
// post: reports whether or not test was passed
public static void testSize(LetterInventory tester, Scanner input) {
int correct = input.nextInt();
int test = 0;
try {
test = tester.size();
} catch (Exception e) {
System.out.println(\"size failed\");
System.out.println(\" threw exception: \" + e);
int line = e.getStackTrace()[0].getLineNumber();
System.out.println(\" in LetterInventory line#\" + line);
System.exit(1);
}
if (correct != test) {
System.out.println(\"size failed\");
System.out.println(\" correct size = \" + correct);
System.out.println(\" your size = \" + test);
System.exit(1);
}
}
// pre : input file contains correct isEmpty
// post: reports whether or not test was passed
public static void testIsEmpty(LetterInventory tester, Scanner input) {
boolean correct = input.nextBoolean();
boolean test = false;
try {
test = tester.isEmpty();
} catch (Exception e) {
System.out.println(\"isEmpty failed\");
System.out.println(\" threw exception: \" + e);
int line = e.getStackTrace()[0].getLineNumber();
System.out.println(\" in LetterInventory line#\" + line);
System.exit(1);
}
if (correct != test) {
System.out.println(\"isEmpty failed\");
System.out.println(\" correct isEmpty = \" + correct);
System.out.println(\" your isEmpty = \" + test);
System.exit(1);
}
}
// pre : input file contains correct get values (26 of them)
// post: reports whether or not test was passed
public static void testGet(LetterInventory tester, Scanner input) {
for (char ch = \'a\'; ch <= \'z\'; ch++) {
int correct = input.nextInt();
int test = 0;
try {
test = tester.get(ch);
} catch (Exception e) {
System.out.println(\"get failed for \'\" + ch + \"\'\");
System.out.println(\" threw exception: \" + e);
int line = e.getStackTrace()[0].getLineNumber();
System.out.println(\" in LetterInventory line#\" + line);
System.exit(1);
}
if (correct != test) {
System.out.println(\"get failed for \'\" + ch + \"\'\");
System.out.println(\" correct get = \" + correct);
System.out.println(\" your get = \" + test);
System.exit(1);
}
}
}
}
Solution
The idea, then, is to use targets as test cases, and commands as instructions for your OS to execute the test case. For example, the following makefile:
testSomething :
program.exe
...will run program.exe if you type \"make testSomething\" on your command line.
You can, of course, run tests somewhat more complicated than that. For example, if you want to feed in some lines of text to your program, you can take advantage of the command line and try:
testSomething :
program.exe < input.txt
And if you want to send the output from the program to yet another file...
testSomething :
program.exe < input.txt > output.txt
This way, if you type \"make testSomething\", your program will be executed, whenever it asks for input it will received from input.txt, and will send all its output to output.txt.
You can still go a bit further than that. Using the diff command, you won\'t even need to open output.txt to make sure the output is correct. Assuming you have the correct expected output in a third file (let\'s call it correct.txt):
testSomething :
program.exe < input.txt > output.txt
diff correct.txt output.txt
\"make testSomething\" will run and keep quiet if it doesn\'t encounter any differences between the output and the expected output, but will warn you and stop if it does find differences. This is very helpful if you have tens or hundreds of test cases: you just run make and, if it keeps quiet, you know your tests passed!
By the way, if you have several test cases you can execute them all with one instruction. Let\'s say you have test1,
test2, and test3 in a makefile. Add the following line at the end of the file:
test : test1 test2 test3
Now, if you type \"make test\", the makefile will see that to \'build\' your target \'test\' it will need to execute targets test1,2 and 3 as well.
![How would i create a testing file for the program below??????? import java.util.*; import java.io.*; public class Test2 { public static void main(String[] args) How would i create a testing file for the program below??????? import java.util.*; import java.io.*; public class Test2 { public static void main(String[] args)](/WebImages/14/how-would-i-create-a-testing-file-for-the-program-below-impo-1021203-1761528203-0.webp)
![How would i create a testing file for the program below??????? import java.util.*; import java.io.*; public class Test2 { public static void main(String[] args) How would i create a testing file for the program below??????? import java.util.*; import java.io.*; public class Test2 { public static void main(String[] args)](/WebImages/14/how-would-i-create-a-testing-file-for-the-program-below-impo-1021203-1761528203-1.webp)
![How would i create a testing file for the program below??????? import java.util.*; import java.io.*; public class Test2 { public static void main(String[] args) How would i create a testing file for the program below??????? import java.util.*; import java.io.*; public class Test2 { public static void main(String[] args)](/WebImages/14/how-would-i-create-a-testing-file-for-the-program-below-impo-1021203-1761528203-2.webp)
![How would i create a testing file for the program below??????? import java.util.*; import java.io.*; public class Test2 { public static void main(String[] args) How would i create a testing file for the program below??????? import java.util.*; import java.io.*; public class Test2 { public static void main(String[] args)](/WebImages/14/how-would-i-create-a-testing-file-for-the-program-below-impo-1021203-1761528203-3.webp)