-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTest_Case.java
More file actions
241 lines (218 loc) · 7.49 KB
/
Test_Case.java
File metadata and controls
241 lines (218 loc) · 7.49 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
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
/*********************************************************
* Filename: Test_Case.java
* Author: Charles Walker
* Created: 12/08/23
*
* Modified:
* Purpose:
* Runs the automated test case process for the program.
*
* Attributes:
* -maxGenTest: int
* -test: double
*
* Methods: *
* +Test_Case: void
* +Test_Case.start(): void
* +Test_Case.testCase1(): void
* +Test_Case.testCase2(): void
* +Test_Case.testCase3(): void
* +Test_Case.testCase4(): void
* +Test_Case.testCase5_1(): void
* +Test_Case.testCase5_2(): void
* +Test_Case.testCase5_3(): void
* +Test_Case.testCase6(): void
* +Test_Case.testCase7(): void
* +Test_Case.printMutTest(int[], int): void
* +Test_Case.genLoop(): void
* +Test_Case.baseAlgorithmTest(): void
* +Test_Case.fitLoop(): void
* +Test_Case.recordFinalDataTest(): void
*
*********************************************************/
public class Test_Case extends PopulationControl {
private int maxGenTest=0;
private double test=0.0;
@Override
public void start() {
testCase1();
testCase2();
testCase3();
testCase4();
testCase5_1();
testCase5_2();
testCase5_3();
testCase6();
testCase7();
}
public void testCase1(){
System.out.println("TEST CASE 1: TEST FOR REQUIREMENT #4 USING A REQUESTED POPULATION OF 10.");
pop.createPop(10);
calcPopFitness();
pop.fitnessSort();
pop.printPop(1);
System.out.println("TEST CASE 1 COMPLETE!!!");
}
public void testCase2() {
System.out.println("\r\nTEST CASE 2: TEST FOR REQUIREMENNT #2 USING THE LAST 3 INDIVIDUALS IN THE 'TestStart.csv' FILE.");
pop.createPopFromfile(rw.startFromFileTest());
calcPopFitness();
pop.printPopTest(1);
pop.fitnessSort();
System.out.println("TEST CASE 2 COMPLETE!!!");
}
public void testCase3() {
System.out.println("\r\nTEST CASE 3: TEST THE REQUIREMENTS #6, 7, 9, AND 10 USING THE POPULATION FROM THE 'TestStart.csv' FILE WITH AN ELITISM PERCENTAGE OF 20%.");
pop.printPop(1);
calcElites(20);
baseAlgorithmTest();
setFinalData();
recordFinalDataTest();
pop.printPop(1);
System.out.println("\r\nTHEESE RESULTS ARE SAVED IN FILE 'TestEnd.csv' TO BE COMPARED TO FILE 'Compare.csv'.");
System.out.println("TEST CASE 3 COMPLETE!!!");
}
public void testCase4() {
System.out.println("\r\nTEST CASE 4.1 - 4.3: TEST FOR REQUIREMENNT #8 USING THE FIRST 3 INDIVIDUALS IN THE ABOVE PRINTED POPULATION.");
int[] test1 = pop.getInd(0).getChromosome();
int[] test2 = pop.getInd(1).getChromosome();
int[] test3 = pop.getInd(2).getChromosome();
mutation.mutateGenesTest(test1);
mutation.mutateGenesTest(test2);
mutation.mutateGenesTest(test3);
System.out.println("Ending chromosomes.");
printMutTest(test1,1);
System.out.println("");
printMutTest(test2,2);
System.out.println("");
printMutTest(test3,3);
System.out.println("");
System.out.println("TEST CASE 4 COMPLETE!!!");
}
public void testCase5_1() {
System.out.println("\r\nTEST CASE 5.1: TEST FOR REQUIREMENNT #11 USING THE 'fitLoop()' METHOD TO SHOW THE USER CAN"+
" CHOOSE FITNESS THRESHOLD FOR TERMINATION.");
System.out.println("PROGRAM IS SETTING THE THRESHOLD TO 74000 AND THE 'topFitness' ATTRIBUTE TO THAT OF INDIVIDUAL 1 ABOVE TO ENSURE THE ALGORITHM TERMINATES AS INTENDED.");
topFitness = pop.getInd(0).getFitness();
fitLoop();
System.out.println("TEST CASE 5.1 COMPLETE!!!");
}
public void testCase5_2() {
System.out.println("\r\nTEST CASE 5.2: TEST FOR REQUIREMENT #11 USING THE 'genLoop()' METHODTO SHOW THE USER CAN"+
" CHOOSE MAXIMUM GENERATION FOR TERMINATION.");
System.out.println("PROGRAM IS SETTING THE 'maxGen' and 'lastGen' EQUAL TO EACHOTHER TO ENSURE THE ALGORITHM TERMINATES AS INTENDED.");
lastGen=1;
genLoop();
System.out.println("TEST CASE 5.2 COMPLETE!!!");
}
public void testCase5_3() {
System.out.println("\r\nTEST CASE 5.3: TEST FOR REQUIREMENNT #11 AND USING THE 'manualLoop()' METHOD TO SHOW THE USER CAN "+
"CHOOSE MANUAL TERMINATION.\r\n THIS PROCESS ALSO TESTS FOR THE ABILITY TO SHOW THE ALGORITHMS PROCESS AND WILL ERASE THE CURRENT TEST RESULTS."+
"\r\nPRESS ENTER WHEN YOU ARE READY TO CONTINUE AND AGIAN TO STOP. AFTER PRESSING ENTER THE SECOND TIME, FOLLOW THE PROMPT TO CONTINUE THE TEST.");
input.nextLine();
manualLoop();
System.out.println("TEST CASE 5.3 COMPLETE!!!");
}
public void testCase6() {
System.out.println("\r\nTEST CASE 6: TEST FOR REQUIREMENNT #13 USING THE 'Last Session.csv' FILE TO CREATE THE INITIAL POPULATION.");
pop.createPop(10);
pop.fitnessSort();
calcPopFitness();
setFinalData();
recordFinalData();
pop.createPopFromfile(rw.startFromFile());
System.out.println("POPULATION BELOW CREATED");
pop.fitnessSort();
pop.printPop(1);
topFitness = pop.getInd(0).getFitness();
baseAlgorithmTest();
setFinalData();
recordFinalData();
pop.printPop(1);
System.out.println("THE ABOVE POPULATION SHOULD MATCH THE RESULTS IN 'Last Session.csv'.");
System.out.println("TEST CASE 6 COMPLETE!!!");
}
public void testCase7() {
System.out.println("TEST CASE 7: TEST FOR REQUIREMENT #14 USING THE 'exceptionHandleInt()' AND 'exceptionHandleDouble()' METHODS USING USER INPUT.");
System.out.println("ENTER 'asdf', '1.1', AND THEN '1' AFTER THE NEXT PROMPT.");
maxGenTest = exceptionHandleInt("something", "integer exception handle test");
System.out.println("ENTER 'asdf' AND THEN '1' AFTER THE NEXT PROMPT.");
test = exceptionHandleDouble("something", "double exception handle test");
System.out.println("TEST CASE 7 COMPLETE!!!");
}
public void printMutTest(int[] chrom, int num) {
System.out.print(num+") ");
for(int i = 0; i < chrom.length; i++) {
System.out.print(chrom[i]+",");
}
}
@Override
public void genLoop() {
int maxGen = 0;
maxGen = 1;
int check = 2;
while(check==2) {
//thread1 = new Thread(this);
//thread1.start();
go = true;
while(go&&maxGen!=lastGen) {
baseAlgorithmTest();
}
if(go==false) {
check = requestStop();
}
if(maxGen==lastGen) {
check = 1;
//scan.close();
//thread1.interrupt();
}
}
}
//just has the printProgress() removed.
public void baseAlgorithmTest() {
pop.setPop(elite.mate(pop.getPop()));
cross.setFirstInd((int) (elite.getTotSelected()+1));
cross.setLastInd((pop.getPop().length-((int)elite.getTotSelected()*2)-1));
pop.setPop(cross.mate(pop.getPop()));
calcPopFitness();
pop.fitnessSort();
topFitness = pop.getInd(0).getFitness();
lastGen++;
genVariation();
}
@Override
public void fitLoop() {
double threshold = 0;
threshold = 74000;
int check = 2;
while(check==2) {
//thread1 = new Thread(this);
//thread1.start();
go = true;
while(go&&threshold<=topFitness) {
baseAlgorithm();
}
if (go==false) {
check = requestStop();
}
if(threshold>=topFitness) {
check=1;
//scan.close();
//thread1.interrupt();
}
}
}
public void recordFinalDataTest() {
String[][] data1 = new String[pop.getPopSize()][50];
String data2 = String.join(", ", "Population Size: "+String.valueOf(pop.getPopSize()),"Last Gen: "+
String.valueOf(lastGen), "Genetic Variation: "+String.valueOf(genVariation), "Best Fitness: "+String.valueOf(topFitness), "Median: "+String.valueOf(medianFitness), "Average: "+
String.valueOf(avgFitness));
for (int i = 0; i < pop.getPopSize(); i++) {
for(int j = 0; j < 49; j++) {
data1[i][j]=String.valueOf(pop.getInd(i).getGene(j));
}
data1[i][49]=String.valueOf(pop.getInd(i).getFitness());
}
rw.writeToFileTest(data1,data2, pop.getPopSize());
}
}