class TestRutenett {
private static void sjekk (String hva, boolean test) {
if (! test) {
System.out.println("Sjekken '" + hva + "' feilet!");
System.exit(1);
}
}
private static void testKonstruktoerUtenRutenett() {
Rutenett testRutenett = new Rutenett(3, 5);
sjekk("testRutenett.antRader==3", testRutenett.antRader==3);
sjekk("testRutenett.antKolonner==5", testRutenett.antKolonner==5);
System.out.println("testKonstruktoerUtenRutenett(): Alt riktig!");
}
private static void testFyllMedTilfeldigeCeller () {
Rutenett testRutenett = new Rutenett(10, 5);
testRutenett.fyllMedTilfeldigeCeller();
int antLev = 0, antDoed = 0;
for (int rx = 0; rx < testRutenett.antRader; ++rx) {
for (int kx = 0; kx < testRutenett.antKolonner; ++kx) {
sjekk("fyllMedTilfeldigeCeller: rutene["+rx+"]["+kx+"]!=null",
testRutenett.rutene[rx][kx] != null);
if (testRutenett.rutene[rx][kx].erLevende())
++antLev;
else
++antDoed;
}
}
// NB! Det er mulig at det tilfeldigvis lages bare levende eller bare
// doede celler, men sjansen for det er usedvanlig liten.
sjekk("fyllMedTildigeCeller: ingen doede!", antDoed>0);
sjekk("fyllMedTildigeCeller: ingen levende!", antLev>0);
System.out.println("testFyllMedTilfeldigeCeller(): Alt riktig!");
}
private static void testHentCelle () {
Rutenett testRutenett = new Rutenett(3, 5);
testRutenett.fyllMedTilfeldigeCeller();
for (int rx = -1; rx < testRutenett.antRader+1; ++rx) {
for (int kx = -1; kx < testRutenett.antKolonner+1; ++kx) {
Celle c = testRutenett.hentCelle(rx, kx);
if (c != null) {
sjekk("hentCelle["+rx+"]["+kx+"] er riktig",
c == testRutenett.rutene[rx][kx]);
}
}
}
System.out.println("testHentCelle(): Alt riktig!");
}
private static void testTegnRutenett () {
Rutenett testRutenett = new Rutenett(4, 4);
testRutenett.fyllMedTilfeldigeCeller();
System.out.println("testTegnRutenett(): Slik ser et 4x4 rutenett ut:");
testRutenett.tegnRutenett();
System.out.println("testTegnRutenett(): Utskrift ferdig!");
System.out.println(" Naa kan du selv sjekke om den ser riktig ut.");
}
private static void testSettNaboer () {
Rutenett testRutenett = new Rutenett(3, 3);
testRutenett.fyllMedTilfeldigeCeller();
testRutenett.settNaboer(0,0);
sjekk("testSettNaboer(): et hj?rne skal ha 3 naboer",
testRutenett.hentCelle(0,0).antNaboer==3);
testRutenett.settNaboer(1,1);
sjekk("testSettNaboer(): en indre celle skal ha 8 naboer",
testRutenett.hentCelle(1,1).antNaboer==8);
testRutenett.settNaboer(2,1);
sjekk("testSettNaboer(): en kantcelle skal ha 5 naboer",
testRutenett.hentCelle(2,1).antNaboer==5);
System.out.println("testSettNaboer(): Alt riktig!");
}
private static void testKobleAlleCeller () {
Rutenett testRutenett = new Rutenett(2, 2); // 2 x 2 rutenett
testRutenett.fyllMedTilfeldigeCeller();
testRutenett.kobleAlleCeller();
int totaltAntallNaboer = 0;
for (int rx = 0; rx < testRutenett.antRader; ++rx) {
for (int kx = 0; kx < testRutenett.antKolonner; ++kx) {
totaltAntallNaboer += testRutenett.hentCelle(rx,kx).antNaboer;
}
}
sjekk("antall naboer i 2x2-rutenett skal v?re 12", totaltAntallNaboer==12);
testRutenett = new Rutenett(3, 3); // 3 x 3 rutenett
testRutenett.fyllMedTilfeldigeCeller();
testRutenett.kobleAlleCeller();
totaltAntallNaboer = 0;
for (int rx = 0; rx < testRutenett.antRader; ++rx) {
for (int kx = 0; kx < testRutenett.antKolonner; ++kx) {
totaltAntallNaboer += testRutenett.hentCelle(rx,kx).antNaboer;
}
}
sjekk("antall naboer i 3x3-rutenett skal v?re 40", totaltAntallNaboer==40);
System.out.println("testKobleCeller(): Alt riktig!");
}
private static void testAntallLevende () {
// Lag et tomt rutenett:
Rutenett testRutenett = new Rutenett(3, 3);
for (int rx = 0; rx < testRutenett.antRader; ++rx) {
for (int kx = 0; kx < testRutenett.antKolonner; ++kx) {
testRutenett.rutene[rx][kx] = new Celle();
}
}
// Angi hvilke som skal vaere levende:
testRutenett.hentCelle(0,0).settLevende();
testRutenett.hentCelle(2,1).settLevende();
testRutenett.hentCelle(0,2).settLevende();
int antallLevende = testRutenett.antallLevende();
sjekk("antallLevende(): antall levende skal v?re 3",
testRutenett.antallLevende()==3);
System.out.println("testAntallLevende(): Alt riktig!");
}
public static void main (String[] arg) {
System.out.println("** Test Rutenett **");
// testKonstruktoerUtenRutenett();
// testFyllMedTilfeldigeCeller();
// testHentCelle();
// testTegnRutenett();
// testSettNaboer();
// testKobleAlleCeller();
// testAntallLevende();
}
}