Пример #1
0
    def test10_matkalaukku_raskain_tavara_2(self):
        from src.koodi import Tavara
        from src.koodi import Matkalaukku
        koodi = """
laukku = Matkalaukku(25)
tavara1 = Tavara("Aapiskukko", 2)
laukku.lisaa_tavara(tavara1)
tavara2 = Tavara("Moukari", 10)
laukku.lisaa_tavara(tavara2)
tavara3 = Tavara("Kivi", 3)
laukku.lisaa_tavara(tavara3)
laukku.raskain_tavara()
"""

        laukku = Matkalaukku(25)
        tavara1 = Tavara("Aapiskukko", 2)
        laukku.lisaa_tavara(tavara1)
        tavara2 = Tavara("Moukari", 10)
        laukku.lisaa_tavara(tavara2)
        tavara3 = Tavara("Kivi", 3)
        laukku.lisaa_tavara(tavara3)
        try:
            r = laukku.raskain_tavara()
        except:
            self.fail(f"Varmista että seuraavan koodin suorittaminen onnistuu\n{koodi}")

        self.assertTrue(r.nimi() == "Moukari", f'Kun suoritetaan\n{koodi}\nmetodin pitäsi palauttaa {tavara2}, paluuarvo oli {r}')
Пример #2
0
    def test7_matkalaukku_tulosta_tavarat2(self):
        try:
            from src.koodi import Tavara
            from src.koodi import Matkalaukku
            koodi = """
laukku = Matkalaukku(25)
tavara1 = Tavara("Kivi", 1)
tavara2 = Tavara("Maitotölkki", 1)
laukku.lisaa_tavara(tavara1)
laukku.lisaa_tavara(tavara2)
tavara3 = Tavara("Vasara", 2)
laukku.lisaa_tavara(tavara3)
"""

            laukku = Matkalaukku(25)
            tavara1 = Tavara("Kivi", 1)
            tavara2 = Tavara("Maitotölkki", 1)
            laukku.lisaa_tavara(tavara1)
            laukku.lisaa_tavara(tavara2)
            tavara3 = Tavara("Vasara", 2)
            laukku.lisaa_tavara(tavara3)
            laukku.tulosta_tavarat()

        except Exception as e:
            self.assertTrue(False, f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi tulosta_tavarat(self) määritelty?')
         
        out = get_stdout()
        lines = [x for x in out.split('\n') if len(x)>0]
        self.assertTrue(3 == len(lines), f'Kun suoritetaan\n{koodi}\nmetodin pitäsi tulostaa kolme riviä\nTulostus oli\n{out}')

        tt = [ f"{t}" for t in [tavara1, tavara2, tavara3]]
        odotettu = "\n".join(tt)

        self.assertTrue(sorted(lines) == sorted(tt), f'Kun suoritetaan\n{koodi}\nmetodin pitäsi tulostaa\n{odotettu}\nTulostus oli\n{out}')
Пример #3
0
    def test4_matkalaukku_lisaa_tavara(self):
        try:
            from src.koodi import Tavara
            from src.koodi import Matkalaukku
            koodi = """
laukku = Matkalaukku(25)
tavara = Tavara("Aapiskukko", 2)
laukku.lisaa_tavara(tavara)
"""
            tavara = Tavara("Aapiskukko", 2)
            laukku = Matkalaukku(25)
            laukku.lisaa_tavara(tavara)

        except Exception as e:
            self.assertTrue(False, f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi lisaa_tavara(self, tavara) määritelty?')

        corr0 = "1 tavaraa (2 kg)"
        corr1 = "1 tavara (2 kg)"
        val = str(laukku)

        self.assertTrue(corr1 == val or corr0 == val, f"Matkalaukun metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n" + 
            f'Nyt metodi palauttaa merkkijonon\n{val}')       

        corr0 = "1 tavaraa (2 kg)"
        corr1 = "1 tavara (2 kg)"
        val = str(laukku)

        self.assertTrue(corr1 == val or corr0 == val, f"Matkalaukun metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n" + 
            f'Nyt metodi palauttaa merkkijonon\n{val}')       

        tavara2 = Tavara("Tiiliskivi", 5)
        try:
            laukku.lisaa_tavara(tavara2)
        except:
            self.fail(f"Varmista että seuraavan koodin suorittaminen onnistuu\n{koodi}")

        koodi += """tavara2 = Tavara("Tiiliskivi", 5)
laukku.lisaa_tavara(tavara2)
"""

        corr1 = "2 tavaraa (7 kg)"
        val = str(laukku)

        self.assertTrue(corr1 == val, f"Matkalaukun metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n" + 
            f'Nyt metodi palauttaa merkkijonon\n{val}')               

        tavara3 = Tavara("iPhone", 1)
        laukku.lisaa_tavara(tavara3)

        koodi += """tavara3 = Tavara("iPhone", 1)
laukku.lisaa_tavara(tavara3)
"""

        corr1 = "3 tavaraa (8 kg)"
        val = str(laukku)

        self.assertTrue(corr1 == val, f"Matkalaukun metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n" + 
            f'Nyt metodi palauttaa merkkijonon\n{val}')               
Пример #4
0
    def test_6_tulosta_tavarat_ruumasta2(self):
        try:
            from src.koodi import Tavara
            from src.koodi import Matkalaukku
            from src.koodi import Lastiruuma
            ruuma = Lastiruuma(100)
            koodi = """
ruuma = Lastiruuma(50)
laukku = Matkalaukku(25)
tavara = Tavara("Aapiskukko", 2)
laukku.lisaa_tavara(tavara)
ruuma.lisaa_matkalaukku(laukku)
laukku2 = Matkalaukku(10)
laukku2.lisaa_tavara(Tavara("Kivi", 1))
laukku2.lisaa_tavara(Tavara("Hiiri", 2))
ruuma.lisaa_matkalaukku(laukku2)
ruuma.tulosta_tavarat()
"""

            ruuma = Lastiruuma(50)
            laukku = Matkalaukku(25)
            tavara1 = Tavara("Aapiskukko", 2)
            laukku.lisaa_tavara(tavara1)
            ruuma.lisaa_matkalaukku(laukku)
            laukku2 = Matkalaukku(10)
            tavara2 = Tavara("Kivi", 1)
            laukku2.lisaa_tavara(tavara2)
            tavara3 = Tavara("Hiiri", 2)
            laukku2.lisaa_tavara(tavara3)
            ruuma.lisaa_matkalaukku(laukku2)
            ruuma.tulosta_tavarat()

        except Exception as e:
            self.assertTrue(
                False,
                f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi tulosta_tavarat(self) määritelty?'
            )

        out = get_stdout()
        self.assertTrue(
            0 < len(out),
            f'Kun suoritetaan\n{koodi}\nmetodin pitäsi tulostaa yksi rivi\nNyt ei tulosteta mitään'
        )

        lines = [x for x in out.split('\n') if len(x) > 0]
        self.assertTrue(
            3 == len(lines),
            f'Kun suoritetaan\n{koodi}\nmetodin pitäsi tulostaa kolme riviä\nTulostus oli\n{out}'
        )

        tt = [f"{t}" for t in [tavara1, tavara2, tavara3]]
        odotettu = "\n".join(tt)
        self.assertTrue(
            sorted(lines) == sorted(tt),
            f'Kun suoritetaan\n{koodi}\nmetodin pitäsi tulostaa\n{odotettu}\nTulostus oli\n{out}'
        )
Пример #5
0
    def test_5_ruumaan_ei_mene_liikaa(self):
        try:
            from src.koodi import Tavara
            from src.koodi import Matkalaukku
            from src.koodi import Lastiruuma
            ruuma = Lastiruuma(100)
            koodi = """
ruuma = Lastiruuma(10)
laukku = Matkalaukku(25)
tavara = Tavara("Alasin", 24)
laukku.lisaa_tavara(tavara)
ruuma.lisaa_matkalaukku(laukku)
"""
            ruuma = Lastiruuma(10)
            laukku = Matkalaukku(25)
            tavara = Tavara("Alasin", 24)
            laukku.lisaa_tavara(tavara)
            ruuma.lisaa_matkalaukku(laukku)

        except Exception as e:
            self.assertTrue(
                False,
                f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi lisaa_matkalaukku(self, laukku) määritelty?'
            )

        corr1 = "0 matkalaukkua, tilaa 10 kg"
        val = str(ruuma)

        self.assertTrue(
            corr1 == val,
            f"Metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n"
            +
            f'Nyt metodi palauttaa merkkijonon\n{val}\nHuomaa, että lastiruumaan ei saa laittaa liikaa tavaraa!'
        )
Пример #6
0
    def test9_matkalaukku_raskain_tavara(self):
        try:
            from src.koodi import Tavara
            from src.koodi import Matkalaukku
            koodi = """
laukku = Matkalaukku(25)
tavara = Tavara("Aapiskukko", 2)
laukku.lisaa_tavara(tavara)
laukku.raskain_tavara()
"""

            laukku = Matkalaukku(25)
            tavara = Tavara("Aapiskukko", 2)
            laukku.lisaa_tavara(tavara)
            try:
                r = laukku.raskain_tavara()
            except:
                self.fail(f"Varmista että seuraavan koodin suorittaminen onnistuu\n{koodi}")

        except Exception as e:
            self.assertTrue(False, f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi raskain_tavara(self) määritelty?')
        
        try:
           r.nimi() 
        except:
            koodi2 = """
laukku = Matkalaukku(25)
tavara = Tavara("Aapiskukko", 2)
laukku.lisaa_tavara(tavara)
raskain = laukku.raskain_tavara()
print(raskain.nimi())
"""
            self.fail(f"Palauttaahan metodi raskain_tavara(self) oikean tyyppisen olion? Varmista että seuraavan koodin suorittaminen onnistuu\n{koodi2}")

        self.assertTrue(r.nimi() == "Aapiskukko", f'Kun suoritetaan\n{koodi}\nmetodin pitäsi palauttaa {tavara}, paluuarvo oli {r}')
Пример #7
0
    def test6_matkalaukku_tulosta_tavarat(self):
        try:
            from src.koodi import Tavara
            from src.koodi import Matkalaukku
            koodi = """
laukku = Matkalaukku(25)
tavara = Tavara("Aapiskukko", 2)
laukku.lisaa_tavara(tavara)
laukku.tulosta_tavarat()
"""

            laukku = Matkalaukku(25)
            tavara = Tavara("Aapiskukko", 2)
            laukku.lisaa_tavara(tavara)
            laukku.tulosta_tavarat()

        except Exception as e:
            self.assertTrue(False, f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi tulosta_tavarat(self) määritelty?')
         
        out = get_stdout()
        self.assertTrue(0<len(out), f'Kun suoritetaan\n{koodi}\nmetodin pitäsi tulostaa yksi rivi\nNyt ei tulosteta mitään')
       
        lines = [x for x in out.split('\n') if len(x)>0]
        self.assertTrue(1 == len(lines), f'Kun suoritetaan\n{koodi}\nmetodin pitäsi tulostaa yksi rivi\nTulostus oli\n{out}')

        odotettu = "Aapiskukko (2 kg)"
        self.assertTrue(out == odotettu, f'Kun suoritetaan\n{koodi}\nmetodin pitäsi tulostaa\n{odotettu}\nTulostus oli\n{out}')
Пример #8
0
    def test5_matkalaukkuun_ei_voi_lisata_liikaa(self):
        from src.koodi import Tavara
        from src.koodi import Matkalaukku
        koodi = """
laukku = Matkalaukku(4)
tavara = Tavara("Tietosanakirja", 5)
laukku.lisaa_tavara(tavara)
"""

        laukku = Matkalaukku(4)
        tavara = Tavara("Tietosanakirja", 5)
        laukku.lisaa_tavara(tavara)

        corr1 = "0 tavaraa (0 kg)"
        val = str(laukku)

        self.assertTrue(corr1 == val, f"Matkalaukun metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n" + 
            f'Nyt metodi palauttaa merkkijonon\n{val}\nHuomaa, että matkalaukkuun ei saa lisätä sen kapasiteettia enempää tavaraa!')       

        koodi = """
laukku = Matkalaukku(3)
tavara1 = Tavara("Kivi", 1)
tavara2 = Tavara("Maitotölkki", 1)
laukku.lisaa_tavara(tavara1)
laukku.lisaa_tavara(tavara2)
tavara3 = Tavara("Vasara", 2)
laukku.lisaa_tavara(tavara3)
"""    

        laukku = Matkalaukku(3)
        tavara1 = Tavara("Kivi", 1)
        tavara2 = Tavara("Maitotölkki", 1)
        laukku.lisaa_tavara(tavara1)
        laukku.lisaa_tavara(tavara2)
        tavara3 = Tavara("Vasara", 2)
        laukku.lisaa_tavara(tavara3)

        corr1 = "2 tavaraa (2 kg)"
        val = str(laukku)

        self.assertTrue(corr1 == val, f"Matkalaukun metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n" + 
            f'Nyt metodi palauttaa merkkijonon\n{val}\nHuomaa, että matkalaukkuun ei saa lisätä sen kapasiteettia enempää tavaraa!')       
Пример #9
0
 def test2_tavara_konstruktori(self):
     try:
         from src.koodi import Tavara
         tavara = Tavara("Aapiskukko", 2)
     except Exception as e:
         self.assertTrue(
             False,
             'Luokan Tavara konstuktorin kutsuminen arvoilla Tavara("Aapiskukko", 2)'
             +
             f' palautti virheen: {e}\nVarmista että konstruktori on määritelty oikein'
         )
Пример #10
0
    def test6_matkalaukku_paino(self):
        try:
            from src.koodi import Tavara
            from src.koodi import Matkalaukku
            koodi = """
laukku = Matkalaukku(25)
tavara = Tavara("Aapiskukko", 2)
laukku.lisaa_tavara(tavara)
laukku.paino()
"""

            laukku = Matkalaukku(25)
            tavara = Tavara("Aapiskukko", 2)
            laukku.lisaa_tavara(tavara)
            paino = laukku.paino()

        except Exception as e:
            self.assertTrue(False, f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi paino(self) määritelty?')
         
        self.assertTrue(paino == 2, f'Kun suoritetaan\n{koodi}\nmetodin pitäsi palauttaa 2, paluuarvo oli {paino}')

        koodi = """
laukku = Matkalaukku(25)
tavara1 = Tavara("Kivi", 1)
tavara2 = Tavara("Maitotölkki", 1)
laukku.lisaa_tavara(tavara1)
laukku.lisaa_tavara(tavara2)
tavara3 = Tavara("Vasara", 2)
laukku.lisaa_tavara(tavara3)
paino = laukku.paino()
"""

        laukku = Matkalaukku(25)
        tavara1 = Tavara("Kivi", 1)
        tavara2 = Tavara("Maitotölkki", 1)
        laukku.lisaa_tavara(tavara1)
        laukku.lisaa_tavara(tavara2)
        tavara3 = Tavara("Vasara", 2)
        laukku.lisaa_tavara(tavara3)
        paino = laukku.paino()
        self.assertTrue(paino == 4, f'Kun suoritetaan\n{koodi}\nmetodin pitäsi palauttaa 4, paluuarvo oli {paino}')
Пример #11
0
    def test7_tavara_nimi_2(self):
        try:
            from src.koodi import Tavara
            koodi = """
tavara = Tavara("Kukko", 2)
tavara.nimi()
"""

            tavara = Tavara("Kukko", 2)
            p = tavara.nimi()

        except Exception as e:
            self.assertTrue(
                False,
                f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi nimi(self) määritelty?'
            )

        self.assertTrue(
            p == "Kukko",
            f'Kun suoritetaan\n{koodi}\n, metodin pitäsi palauttaa Kukko, paluuarvo oli {p}'
        )
Пример #12
0
    def test7_tavara_paino_2(self):
        try:
            from src.koodi import Tavara
            koodi = """
tavara = Tavara("Aapiskukko", 5)
tavara.paino()
"""

            tavara = Tavara("Aapiskukko", 5)
            p = tavara.paino()

        except Exception as e:
            self.assertTrue(
                False,
                f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi paino(self) määritelty?'
            )

        self.assertTrue(
            p == 5,
            f'Kun suoritetaan\n{koodi}\n, metodin pitäsi palauttaa 5, paluuarvo oli {p}'
        )
Пример #13
0
    def test4_aatribuutit_piilossa(self):
        from src.koodi import Tavara
        koodi = """
tavara = Tavara("Aapiskukko", 2)
print(tavara.paino)
"""

        ok = False
        tavara = Tavara("Aapiskukko", 2)
        try:
            v = tavara.paino
        except Exception as e:
            ok = True

        if not ok:
            self.assertFalse(
                type(v) == type(2),
                f'Koodin\n{koodi}\nsuorituksen ei pitäisi tulostaa tuotteen painoa. Tuotteen painon tulee olla kapseloitu'
            )

        koodi = """
tavara = Tavara("Aapiskukko", 2)
print(tavara.nimi)
"""

        ok = False
        tavara = Tavara("Aapiskukko", 2)
        try:
            v = tavara.paino
        except Exception as e:
            ok = True

        if not ok:
            self.assertFalse(
                type(v) == type("LOL"),
                f'Koodin\n{koodi}\nsuorituksen ei pitäisi tulostaa tuotteen nimeä. Tuotteen nimen tulee olla kapseloitu'
            )
Пример #14
0
    def test3_tavara_str(self):
        test_cases = [("Aapiskukko", 2), ("Moukari", 8), ("Kalajapullo", 1)]
        for test_case in test_cases:
            from src.koodi import Tavara
            tavara = Tavara(test_case[0], test_case[1])

            corr = f'{test_case[0]} ({test_case[1]} kg)'
            val = str(tavara)

            self.assertEqual(
                corr, val,
                f"Metodin __str__ pitäisi palauttaa merkkijono\n{corr}\nkun olio luotiin kutsulla\n"
                +
                f'Tavara("{test_case[0]}", {test_case[1]})\nNyt metodi palauttaa merkkijonon\n{val}'
            )
Пример #15
0
    def test6_matkalaukku_missa_yksi_tavara(self):

        from src.koodi import Tavara
        from src.koodi import Matkalaukku
        koodi = """
laukku = Matkalaukku(25)
tavara = Tavara("Aapiskukko", 2)
laukku.lisaa_tavara(tavara)
"""
        tavara = Tavara("Aapiskukko", 2)
        laukku = Matkalaukku(25)
        laukku.lisaa_tavara(tavara)

        corr1 = "1 tavara (2 kg)"
        val = str(laukku)

        self.assertTrue(corr1 == val, f"Matkalaukun metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n" + 
            f'Nyt metodi palauttaa merkkijonon\n{val}\nLue tarkasti osan 3 tehtävänanot!')    
Пример #16
0
    def test4_ruuma_lisaa_tavara(self):
        try:
            from src.koodi import Tavara
            from src.koodi import Matkalaukku
            from src.koodi import Lastiruuma
            ruuma = Lastiruuma(100)
            koodi = """
ruuma = Lastiruuma(100)
laukku = Matkalaukku(25)
tavara = Tavara("Aapiskukko", 2)
laukku.lisaa_tavara(tavara)
ruuma.lisaa_matkalaukku(laukku)
"""
            ruuma = Lastiruuma(100)
            laukku = Matkalaukku(25)
            tavara = Tavara("Aapiskukko", 2)
            laukku.lisaa_tavara(tavara)
            ruuma.lisaa_matkalaukku(laukku)

        except Exception as e:
            self.assertTrue(
                False,
                f'Koodin\n{koodi}\nsuoritus aiheutti virheen\n{e}\nOnhan metodi lisaa_matkalaukku(self, laukku) määritelty?'
            )

        corr1 = "1 matkalaukku, tilaa 98 kg"
        val = str(ruuma)

        self.assertTrue(
            corr1 == val,
            f"Metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n"
            + f'Nyt metodi palauttaa merkkijonon\n{val}')

        koodi = """
ruuma = Lastiruuma(50)
laukku = Matkalaukku(25)
tavara = Tavara("Aapiskukko", 2)
laukku.lisaa_tavara(tavara)
ruuma.lisaa_matkalaukku(laukku)
laukku2 = Matkalaukku(10)
laukku2.lisaa_tavara(Tavara("Kivi", 1))
laukku2.lisaa_tavara(Tavara("Hiiri", 2))
ruuma.lisaa_matkalaukku(laukku2)
"""

        ruuma = Lastiruuma(50)
        laukku = Matkalaukku(25)
        tavara = Tavara("Aapiskukko", 2)
        laukku.lisaa_tavara(tavara)
        ruuma.lisaa_matkalaukku(laukku)
        laukku2 = Matkalaukku(10)
        laukku2.lisaa_tavara(Tavara("Kivi", 1))
        laukku2.lisaa_tavara(Tavara("Hiiri", 2))
        ruuma.lisaa_matkalaukku(laukku2)

        corr1 = "2 matkalaukkua, tilaa 45 kg"
        val = str(ruuma)

        self.assertTrue(
            corr1 == val,
            f"Metodin __str__ pitäisi palauttaa merkkijono\n{corr1}\nkun on suoritetu koodi\n{koodi}\n"
            + f'Nyt metodi palauttaa merkkijonon\n{val}')