From 4346bb3f79a55168f1e7edfb780bed82fc7cceb7 Mon Sep 17 00:00:00 2001 From: Eetu Rantala <rantala.eetu@gmail.com> Date: Fri, 21 Sep 2018 18:16:09 +0300 Subject: [PATCH] =?UTF-8?q?M=C3=A4=C3=A4rittelyj=C3=A4=20korjailtu,=20"tul?= =?UTF-8?q?osta"=20on=20nyky=C3=A4=C3=A4n=20"luo",=20tehty=20testi?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/oom1.java | 132 +++++++++++++++++++--------------------------- src/oom1Test.java | 23 ++++++++ 2 files changed, 76 insertions(+), 79 deletions(-) create mode 100644 src/oom1Test.java diff --git a/src/oom1.java b/src/oom1.java index cedde59..5272947 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 0000000..db27bad --- /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 -- GitLab