forked from ravenbird224/LetterInventory
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTest3.java
More file actions
203 lines (191 loc) · 8.01 KB
/
Test3.java
File metadata and controls
203 lines (191 loc) · 8.01 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
// This program tests stage 3 of the LetterInventory class. The program reads
// from the file test3.txt which has a series of test cases with the correct
// answers.
import java.util.*;
import java.io.*;
public class Test3 {
public static void main(String[] args) {
Scanner input = null;
try {
input = new Scanner(new File("test3.txt"));
} catch (FileNotFoundException e) {
System.out.println("You must copy test3.txt to this directory" +
" before running the testing program.");
System.exit(1);
}
while (input.hasNext()) {
String s1 = input.nextLine();
String s2 = input.nextLine();
System.out.println("Testing these two strings:");
System.out.println(" i1: \"" + s1 + "\"");
System.out.println(" i2: \"" + s2 + "\"");
System.out.println("constructing i1 and i2");
LetterInventory i1 = null;
LetterInventory i2 = null;
try {
i1 = new LetterInventory(s1);
i2 = new LetterInventory(s2);
} 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);
}
System.out.println("constructing and testing i1.add(i2)");
try {
LetterInventory test = i1.add(i2);
check(test, input);
} catch (Exception e) {
System.out.println("add failed");
System.out.println(" threw exception: " + e);
int line = e.getStackTrace()[0].getLineNumber();
System.out.println(" in LetterInventory line#" + line);
System.exit(1);
}
System.out.println("constructing and testing i2.add(i1)");
try {
LetterInventory test = i2.add(i1);
check(test, input);
} catch (Exception e) {
System.out.println("add failed");
System.out.println(" threw exception: " + e);
int line = e.getStackTrace()[0].getLineNumber();
System.out.println(" in LetterInventory line#" + line);
System.exit(1);
}
System.out.println("constructing and testing i1.subtract(i2)");
try {
LetterInventory test = i1.subtract(i2);
check(test, input);
} catch (Exception e) {
System.out.println("subtract failed");
System.out.println(" threw exception: " + e);
int line = e.getStackTrace()[0].getLineNumber();
System.out.println(" in LetterInventory line#" + line);
System.exit(1);
}
System.out.println("constructing and testing i2.subtract(i1)");
try {
LetterInventory test = i2.subtract(i1);
check(test, input);
} catch (Exception e) {
System.out.println("subtract failed");
System.out.println(" threw exception: " + e);
int line = e.getStackTrace()[0].getLineNumber();
System.out.println(" in LetterInventory line#" + line);
System.exit(1);
}
if (input.hasNextLine())
input.nextLine(); // to skip end-of-line
System.out.println();
}
System.out.println("All tests passed.");
}
// pre : input file contains a line with correct values for the given
// inventory
// post: reports whether or not test was passed
public static void check(LetterInventory tester, Scanner input) {
String text = input.next();
if (text.equals("null")) {
if (tester == null) {
System.out.println("passed because inventory is null");
} else {
System.out.println("failed because inventory should be null");
System.exit(1);
}
} else {
testToString(tester, input, text);
testSize(tester, input);
testIsEmpty(tester, input);
testGet(tester, input);
System.out.println("toString, size, isEmpty, and count all passed");
}
}
// post: reports whether or not test was passed
public static void testToString(LetterInventory tester, Scanner input,
String correct) {
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);
}
}
}
}