Skip to content
Snippets Groups Projects

Update KenKenTest_EXTRA.java

Closed Mark Emmert requested to merge (removed):patch-1 into master
1 file
+ 62
1
Compare changes
  • Side-by-side
  • Inline
@@ -132,7 +132,7 @@ public class KenKenTest_EXTRA {
int[][] result = KenKen.solve(kenkenOne);
assertNotNull("Es existiert eine Loesung, sie wurde aber nicht gefunden!", result);
assertArrayEquals("Falsche Loesung ermittelt!", solutionOne, KenKen.solve(kenkenOne));
checkSolution(kenkenOne,KenKen.solve(kenkenOne));
}
// ========== HELPER ==========
@@ -156,4 +156,65 @@ public class KenKenTest_EXTRA {
}
return copy;
}
protected static final void checkSolution(int[][][] kenken, int[][] solution) {
int n=0;//Length of one side of KenKen
for(int i=0;i<kenken.length;++i) {
for(int j=1;j<kenken[i].length;++j) {
if(kenken[i][j][0]+1>n) {
n=kenken[i][j][0]+1;
}
if(kenken[i][j][1]+1>n) {
n=kenken[i][j][1]+1;
}
}
}
assertEquals("Wrong solution.length",n,solution.length);
for(int i=0;i<solution.length;++i) {
assertEquals("Wrong solution["+i+"].length",n,solution[i].length);
}
for(int i=0;i<kenken.length;++i) {
if(kenken[i][0][1]==' ') {
int expected=kenken[i][0][0];
int actual=solution[kenken[i][1][0]][kenken[i][1][1]];
assertEquals("Wrong Value for ' '-Riddle in kenken["+i+"]",expected,actual);
}else if(kenken[i][0][1]=='-') {
int a=solution[kenken[i][1][0]][kenken[i][1][1]];
int b=solution[kenken[i][2][0]][kenken[i][2][1]];
int result=kenken[i][0][0];
boolean correct=false;
if(a-b==result||b-a==result) {
correct=true;
}
assertTrue("Wrong Values for '-'-Riddle in kenken["+i+"]",correct);
}else if(kenken[i][0][1]=='/') {
int a=solution[kenken[i][1][0]][kenken[i][1][1]];
int b=solution[kenken[i][2][0]][kenken[i][2][1]];
int result=kenken[i][0][0];
boolean correct=false;
if((a%b==0&&a/b==result)||(b%a==0&&b/a==result)) {
correct=true;
}
assertTrue("Wrong Values for '/'-Riddle in kenken["+i+"]",correct);
}else if(kenken[i][0][1]=='+') {
int result=kenken[i][0][0];
int sum=0;
for(int j=1;j<kenken[i].length;++j) {
sum+=solution[kenken[i][j][0]][kenken[i][j][1]];
}
assertEquals("Wrong Values for '+'-Riddle in kenken["+i+"]",result,sum);
}else if(kenken[i][0][1]=='*') {
int result=kenken[i][0][0];
int prod=1;
for(int j=1;j<kenken[i].length;++j) {
prod*=solution[kenken[i][j][0]][kenken[i][j][1]];
}
assertEquals("Wrong Values for '*'-Riddle in kenken["+i+"]",result,prod);
}else {
//throw new Exception("Illegal Kenken");
System.err.println("Critical Error: Illegal Kenken");
}
}
}
}
\ No newline at end of file
Loading