diff --git a/src/oom1.java b/src/oom1.java index cedde59d7738ca23653cd82c58c2c09f6a4398c0..527294729ac44985cf44caae7f3efef1b2f3b0f1 100644 --- a/src/oom1.java +++ b/src/oom1.java @@ -1,65 +1,77 @@ import java.util.Random; public class oom1 { - static char[][] kappale1 = { - {'*', '*'}, - {'*', '*'} - }; - static char[][] kappale2 = { - {'*', '*', '*', '*'} - }; - static char[][] kappale3 = { - {' ', '*'}, - {' ', '*'}, - {'*', '*'} - }; - static char[][] kappale4 = { - {'*', ' '}, - {'*', ' '}, - {'*', '*'} - }; - - 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(); + /** + * 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; - static void tulosta(char[][] kappale) { - for (char[] rivi: kappale) { - for (char c : rivi) { - System.out.print(c); - } - System.out.print("\n"); + if(id == 1) { + kappale = new char[][] { + {'*', '*'}, + {'*', '*'} + }; + } + else if(id == 2) { + kappale = new char[][] { + {'*', '*', '*', '*'} + }; + } + else if(id == 3) { + kappale = new char[][] { + {' ', '*'}, + {' ', '*'}, + {'*', '*'} + }; + } + else if(id == 4) { + kappale = new char[][] { + {'*', ' '}, + {'*', ' '}, + {'*', '*'} + }; + } + 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); - } - } diff --git a/src/oom1Test.java b/src/oom1Test.java new file mode 100644 index 0000000000000000000000000000000000000000..db27badc3474b48f96ce38448d3081dc90df1431 --- /dev/null +++ b/src/oom1Test.java @@ -0,0 +1,23 @@ +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