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