Skip to content
Snippets Groups Projects
Commit 4346bb3f authored by Eetu Rantala's avatar Eetu Rantala
Browse files

Määrittelyjä korjailtu, "tulosta" on nykyään "luo", tehty testi

parent efff23bd
No related branches found
No related tags found
No related merge requests found
import java.util.Random;
public class oom1 {
static char[][] kappale1 = {
/**
* Luo valitun tetris kappaleen numeron mukaan
*
* @.pre id > 0 && id <= 4
*
* @.post jos id == 1 -> RESULT == ([[*, *], [*, *]])
* jos id == 2 -> RESULT == ([[*, *, *, *]])
* jos id == 3 -> RESULT == ([[ , *], [ , *], [*, *]])
* jos id == 4 -> RESULT == ([[*, ], [*, ], [*, *]])
*/
static char[][] luoKappale(int id) {
char[][] kappale;
if(id == 1) {
kappale = new char[][] {
{'*', '*'},
{'*', '*'}
};
static char[][] kappale2 = {
}
else if(id == 2) {
kappale = new char[][] {
{'*', '*', '*', '*'}
};
static char[][] kappale3 = {
}
else if(id == 3) {
kappale = new char[][] {
{' ', '*'},
{' ', '*'},
{'*', '*'}
};
static char[][] kappale4 = {
}
else if(id == 4) {
kappale = new char[][] {
{'*', ' '},
{'*', ' '},
{'*', '*'}
};
public static void main(String[] args) {
tulostaKappale(1);
System.out.println();
tulostaKappale(2);
System.out.println();
tulostaKappale(3);
System.out.println();
tulostaKappale(4);
System.out.println();
satunnainenKappale();
System.out.println();
}
static void tulosta(char[][] kappale) {
for (char[] rivi: kappale) {
for (char c : rivi) {
System.out.print(c);
}
System.out.print("\n");
else {
kappale = null;
}
//System.out.println("leveys: " + kappale[0].length);
//System.out.println("korkeus: " + kappale.length);
return kappale;
}
/**
* Luo satunnaisen kappaleen
*
* @.pre true
*
* @.post luoKappale(satunnainen luku väliltä [1,4])
*/
static char[][] satunnainenKappale() {
Random rand = new Random();
return luoKappale(rand.nextInt(4)+1);
}
/**
* Kääntää annetun kappaleen 90 astetta myötäpäivään
*
* @.pre kappale != null && kappale.length > 0 && kappale[0].length > 0
*
* @.post kappaleen rivit käännettynä sarakkeiksi alkaen viimeisestä rivistä;
* viimeinen rivi siirtyy ekaksi sarakkeeksi jne.
*
*/
static char[][] kaanna(char[][] kappale) {
static char[][] kaannaKappale(char[][] kappale) {
char[][] uusi = new char[kappale[0].length][kappale.length];
int k = kappale.length-1;
......@@ -75,43 +87,5 @@ public class oom1 {
return uusi;
}
/**
* Tulostaa valitun tetris kappaleen
*
* @.pre 1 <= id <= 4
*
* @.post jos id == 1; tulostaa kappaleen O
* jos id == 2; tulostaa kappaleen I
* jos id == 3; tulostaa kappaleen J
* jos id == 4; tulostaa kappaleen L
*/
static void tulostaKappale(int id) {
if(id == 1) {
tulosta(kappale1);
}
if(id == 2) {
tulosta(kappale2);
}
if(id == 3) {
tulosta(kappale3);
}
if(id == 4) {
tulosta(kappale4);
}
}
/**
* Tulostaa satunnaisen kappaleen
*
* @.pre true
*
* @.post tulostaKappale(satunnainen luku väliltä [a, b])
*/
static void satunnainenKappale() {
Random rand = new Random();
tulostaKappale(rand.nextInt(4)+1);
}
}
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.RepeatedTest;
class oom1Test {
@RepeatedTest(1000)
void kaannaKaikkiTest() {
for (int i = 0; i < 4; i++) {
kaannaTest(i+1);
}
}
void kaannaTest(int id) {
char[][] kappale = oom1.luoKappale(id);
// Osoitetaan että kappale on sama neljän käännön jälkeen
for (int i = 0; i < 4; i++) kappale = oom1.kaannaKappale(kappale);
Assertions.assertArrayEquals(oom1.luoKappale(id), kappale);
// Osoitetaan että yhden käännön seurauksena kappaleen leveys muuttuu korkeudeksi ja päinvastoin
Assertions.assertEquals(kappale.length, oom1.kaannaKappale(kappale)[0].length);
}
}
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment